参考资料--zoutendijk可行方向法的matlab实现.docx

参考资料--zoutendijk可行方向法的matlab实现.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
、基本思想是:给定一个可行点之后,用某种方法确定一个改进的可行方向,然后沿方向,求解一个有约束的线有哪些信誉好的足球投注网站问题,得极小点,令,如果不是最优解,则重复上述步骤。可行方向法就是利用线性规划方法来确定的。、线性约束问题:设是问题的一个可行解,假定,,其中,则一个非零向量是在点点的一个可行方向,当且仅当,;如果,则是一改进方向。、非线性约束问题设是问题的一个可行解,令,,即是点紧约束的指标集,设和在点可微,在点连续,如果,,则是一改进的可行方向。、算法、线性不等式约束的Zoutendijk方法的计算步骤:1.求一初始可行解。,令k=1,转2。 2.对于可行点,设,,, 求解问题 ,得最优解,如果=0,计算结束,是K—T点;否则转3。3.求解线有哪些信誉好的足球投注网站问题(a)其中设为(a)式最优解,令,返回2。、非线性不等式约束的Zoutendijk方法的计算步骤:1) 选取允许误差,,求一初始可行点,令,转2)。2)确定指标集。3) 若,且,计算结束,取;若,且,令,转6);若,转4)。4) 令,求解线性规划问题(4-2)的最优解;5) 若,计算结束,取;否则令,转6)。6) 求出线有哪些信誉好的足球投注网站问题的最优解,其中;令,,返回2)。、程序源码、主程序简单说明:此程序可以处理线性和非线性问题,程序主要由label得值来判断,当label=1时运行线性约束部分,label=0时运行非线性约束部分function [X0,f_val]=zoutendijk(A,b,x0,Aeq,beq,label)%自定义函数diff_val(x0)作用是求所给函数在x0出的偏导数%自定义函数fval(x0)作用是求所给函数在x0出的函数值format long;eps=1.0e-6;x0=transpose(x0);%刚开始给的x0为行向量funcsz=length(x0);if label==1[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 ri1 行不满秩 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 df0.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 vvmax 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 ****************endendif label==0 for k=1:1:100 %确定指标集 f(x)梯度: sf=diff_val(x0) sf=eval(sf) f(x)梯度长度: norm_s=norm(sf) GL=length(G);

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档