Matlab实现Zoutendijk编程例子.doc

Matlab实现Zoutendijk编程例子.doc

ID:58676577

大小:59.00 KB

页数:4页

时间:2020-10-15

Matlab实现Zoutendijk编程例子.doc_第1页
Matlab实现Zoutendijk编程例子.doc_第2页
Matlab实现Zoutendijk编程例子.doc_第3页
Matlab实现Zoutendijk编程例子.doc_第4页
资源描述:

《Matlab实现Zoutendijk编程例子.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、用Zoutendijk方法求解下列问题:s.t.取初始点,通过Matlab编程实现求解过程。公用函数如下:1、function[f,x]=func%设置目标函数symsx1x2x3;f=x1^2+2*x2^2+3*x3^2+x1*x2-2*x1*x3+x2*x3-4*x1-6*x2;x=[x1,x2,x3];end2、functionf_val=fval(x0)%求目标函数值x0=transpose(x0);[f,x]=func;f_val=subs(f,x,x0);end3、functions=diff_val(x0)%求目标函

2、数梯度[f,x]=func;grad=jacobian(f,x);s=subs(grad,x,x0);end4、functionh=fmin(x0,d0,vmax)%求函数最小值[f,x]=func;symsh;a=x0+h*d0;f_val=inline(subs(f,x,a));ifvmax==infmin_h=fminbnd(f_val,0,10000);elsemin_h=fminbnd(f_val,0,vmax);endh=min_h;endZoutendijk方法主函数function[X0,f_val]=zouten

3、dijk(A,b,x0,Aeq,beq)%自定义函数diff_val(x0)作用是求所给函数在x0出的偏导数%自定义函数fval(x0)作用是求所给函数在x0出的函数值formatlong;eps=1.0e-6;x0=transpose(x0);%刚开始给的x0为行向量[f,x]=func;sz=length(x0);[m,n]=size(A);%把A分解为A1,A2,其中A1为起作用约束fork=1:1:100A1=A;A2=A;b1=b;b2=b;fori=m:-1:1ifabs(A2(i,:)*x0-b2(i,:))<0.1

4、A2(i,:)=[];b2(i,:)=[];endendfori=m:-1:1ifabs(A1(i,:)*x0-b1(i,:))>=0.1A1(i,:)=[];b1(i,:)=[];endendA1;A2;b1;b2;i2=rank(A2);AE=[A1;Aeq];[i1,j1]=size(AE);r=rank(AE);ifr

5、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);ifdf<0.1'最优解为'x0f_val=fval(x0)kreturnelse%进行一维搜索,求f(x(k+1))的最小值b_=b2-A2*x0;d_=A2*d0;[dh,dl]=size(d_);ul=1;fori=1:1:dhifd_(i,:)>=0u=1;els

6、eu=0;endul=ul*u;endul;b_;d_;vmax=inf;iful==0vmax=inf;elsefori=1:1:dhifd_(i,:)>0v=b_(i,:)/d_(i,:);ifv

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。