收藏 分销(赏)

Matlab实现Zoutendijk编程例子.doc

上传人:人****来 文档编号:2888274 上传时间:2024-06-10 格式:DOC 页数:4 大小:59.04KB 下载积分:5 金币
下载 相关 举报
Matlab实现Zoutendijk编程例子.doc_第1页
第1页 / 共4页
Matlab实现Zoutendijk编程例子.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
用Zoutendijk方法求解下列问题: s.t. 取初始点,通过Matlab编程实现求解过程。 公用函数如下: 1、function [f,x]=func %设置目标函数 syms x1 x2 x3; f=x1^2+2*x2^2+3*x3^2+x1*x2-2*x1*x3+x2*x3-4*x1-6*x2; x=[x1,x2,x3]; end 2、function f_val=fval(x0) %求目标函数值 x0=transpose(x0); [f,x]=func; f_val=subs(f,x,x0); end 3、function s=diff_val(x0) %求目标函数梯度 [f,x]=func; grad=jacobian(f,x); s=subs(grad,x,x0); end 4、function h=fmin(x0,d0,vmax) %求函数最小值 [f,x]=func; syms h; a=x0+h*d0; f_val=inline(subs(f,x,a)); if vmax==inf min_h=fminbnd(f_val,0,10000); else min_h=fminbnd(f_val,0,vmax); end h=min_h; end Zoutendijk方法主函数 function [X0,f_val]=zoutendijk(A,b,x0,Aeq,beq) %自定义函数diff_val(x0)作用是求所给函数在x0出的偏导数 %自定义函数fval(x0)作用是求所给函数在x0出的函数值 format long; eps=1.0e-6; x0=transpose(x0); %刚开始给的x0为行向量 [f,x]=func; sz=length(x0); [m,n]=size(A); %把A分解为A1,A2,其中A1为起作用约束 for k=1:1:100 A1=A; A2=A; b1=b; b2=b; for i=m:-1:1 if abs(A2(i,:)*x0-b2(i,:)) < 0.1 A2(i,:)=[]; b2(i,:)=[]; end end for i=m:-1:1 if abs(A1(i,:)*x0-b1(i,:))>=0.1 A1(i,:)=[]; b1(i,:)=[]; end end A1; A2; b1; b2; i2=rank(A2); AE=[A1;Aeq]; [i1,j1]=size(AE); r=rank(AE); if r<i1 '行不满秩' return end if i2==0 '无效' return end %求解线性规划问题得到可行下降方向d0 s=diff_val(x0); c=double(s); lb=-1*ones(sz,1); ub=ones(sz,1); k1=length(b1); k2=length(beq); p=zeros(k1,1); q=zeros(k2,1); [d0,mn,m1,m2,m3]=linprog(c,A1,p,Aeq,q,lb,ub); d0;mn; df=abs(s*d0); if df<0.1 '最优解为' x0 f_val=fval(x0) k return else %进行一维搜索,求f(x(k+1))的最小值 b_=b2-A2*x0; d_=A2*d0; [dh,dl]=size(d_); ul=1; for i=1:1:dh if d_(i,:)>=0 u=1; else u=0; end ul=ul*u; end ul;b_;d_; vmax=inf; if ul==0 vmax=inf; else for i=1:1:dh if d_(i,:)>0 v=b_(i,:)/d_(i,:); if v<vmax vmax=v; end end end end end vmax; h=fmin(x0,d0,vmax); a=x0+h*d0; f_val=fval(a); x0=x0+h*d0; '****************' X0=x0 f_val=fval(x0) k '****************' end end
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服