约束优化方法与MATLAB实现

上传人:桔**** 文档编号:562033963 上传时间:2023-07-09 格式:DOCX 页数:16 大小:26.30KB
返回 下载 相关 举报
约束优化方法与MATLAB实现_第1页
第1页 / 共16页
约束优化方法与MATLAB实现_第2页
第2页 / 共16页
约束优化方法与MATLAB实现_第3页
第3页 / 共16页
约束优化方法与MATLAB实现_第4页
第4页 / 共16页
约束优化方法与MATLAB实现_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《约束优化方法与MATLAB实现》由会员分享,可在线阅读,更多相关《约束优化方法与MATLAB实现(16页珍藏版)》请在金锄头文库上搜索。

1、例 5-1 MATLAB 实现,用 M 函数文件形式求解: syms s tf=(s-5)人2+4*(t-6)人2;g=sA2+tA2-64;s-t+10;10-s;X=6.2 7.8 8.2;11 12 9.8; x,minf=minconSimpSearch2(f,g,X,1.3,0.7,1,0.7,s t)复合形法 minconSimpSearch2 函数文件如下:function x,minf=minconSimpSearch2(f,g,X,alpha,sita,gama,beta,var,eps) % f: 目标函数% g:约束函数% X: 初始复合形% alpha: 反射系数% s

2、ita: 紧缩系数% gama :扩展系数% beta :收缩系数% var: 自变量向量% eps: 精度% x:目标函数取最小值时的自变量% minf: 目标函数的最小值if nargin=8%函数参量个数eps=1.0e-6;endN=size(X);n=N(2);FX=zeros(1,n);while 1for i=1:nFX(i)=subs(f,var,X(:,i);end%按照IX的顺序重新排列X%sum(a,2),a 矩阵行相加 Xsorted(:,1:2)保留 Xsort 的 1, 2 列。 中心点坐标。%中心点函数值%判断收敛 endXS,IX=sort(FX);Xsorte

3、d=X(:,IX) ;px=sum(Xsorted(:,1:(n-1),2)/(n-1);Fpx=subs(f,var,px);SumF=0;for i=1:nSumF=SumF+(FX(IX(i)-Fpx)A2;SumF=sqrt(SumF/(n-1);if SumF=0bcon_1=0;elsecof_alpha=0.7*(cof_alpha);endend fx2=subs(f,var,x2);if fx2=0bcon_2=0;if fx3XS(1)count=1;elsecount=2;endelsebcon_2=0; count=3 ;endendif count=1Xsorted(

4、:,n)=x3;X=Xsorted;continueelseXsorted(:,n)=x2;X=Xsorted;continueendelseif fx2XS(n-1) Xsorted(:,n)=x2; X=Xsorted; continueelse%算反射点的坐标%看有没有出界%反射点函数值%扩张步骤,感觉应该用x2代贴第一部分pxif fx2XS(n)Xsorted(:,n)=x2;cof_beta=beta;bcon_3=1;while bcon_3=0bcon_3=5;elsecof_beta=cof_beta/2; bcon_3=bcon_3+1;endendif min(gx4)=

5、0fx4=subs(f,var,x4);FNnew=subs(f,var,Xsorted(:,n);if fx4FNnewXsorted(:,n)=x4;X=Xsorted;continueelsex0=Xsorted(:,1);for i=1:nXsorted(:,i)=x0+sita*(Xsorted(:,i)-x0);endendelsex0=Xsorted(:,1);for i=1:nXsorted(:,i)=x0+sita*(Xsorted(:,i)-x0);X=Xsorted;continueendendelsex0=Xsorted(:,1);for i=1:nXsorted(:,

6、i)=x0+sita*(Xsorted(:,i)-x0);X=Xsorted;continueendendendendendX=Xsorted;endminf=subs(f,var,x);M 函数文件的运行结果如下x = 5.21866.0635minf = 0.0639例 5-2 MATLAB 实现,用 M 函数文件形式求解 syms t s;f=(t-l)A2+(s-2F2+l;x,mf=minRosen(f,-2 1;-1 -1,-1;-2,0,0,t s) Rosen 梯度法投影法函数文件 minRosen 如下:function x,minf = minRosen(f,A,b,x0,

7、var,eps)%目标函数:f;%约束矩阵:A; %约束右端常数向量: b;%初始可行点: x0; %自变量向量: var;%精度: eps;%目标函数最小值时的自变量值: x; %目标函数的最小值: minf;format long;if nargin = 5eps = l.0e-6;endsyms l;x0 = transpose(x0);n = length(var);sz = size(A);m = sz(l);gf = jacobian(f,var);bConti = l;while bContik = 0;s = 0;Al = A;A2 = A;bl = b;b2 = b;for

8、i=1:mdfun = A(i,:)*x0 - b(i);if abs(dfun) 0A1 = A1(1:k,:);b1 = b1(1:k,:);endif s 0A2 = A2(1:s,:);b2 = b2(1:s,:);endwhile 1P = eye(n,n);if k 0tM = transpose(A1);P = P - tM*inv(A1*tM)*A1;endgv =subs(gf, var, x0);gv = transpose(gv);d = -P*gv;if d = 0if k = 0x = x0; bConti = 0; break;elsew = inv(A1*tM)*

9、A1*gv;if w=0x = x0;bConti = 0; break;else%对约束条件的系数矩阵和向量做分解%A1 代表等式约束系数矩阵%b1 代表等式约束向量%A2 代表不等式约束系数矩阵%b2 代表不等式约束系数矩阵%d 搜索方向%W 分量全为正u,index = min(w); sA1 = size(A1);if sA1(1) = 1 k = 0;elsek = sAl;选择W的一个负分量Al = A1(1:(index-1),:); A1(index+1):sA1(2),:);%去掉 Al 对应的行endendendelse break;endendyl = x0 + l*d;

10、tmpf =subs(f,var,yl);bb = b2 - A2*x0;dd = A2*d;if dd = 0tmpI,lm = minJT(tmpf,0,0.1);%用进退法确定一维极值问题的极值区间elselm = inf;for i=1:length(dd) if dd(i) 0if bb(i)/dd(i) lmlm = bb(i)/dd(i);endendendendxm,minf = minHJ(tmpf,0,lm,1.0e-14);%用黄金分割法求解一维极值问题tol = norm(xm*d);if tol epsx = x0; break;endx0 = x0 + xm*d;e

11、ndminf =subs(f,var,x);M 函数文件的运行结果如下:x = 0.50001.5000mf = 1.5000例 5-3 MATLAB 实现,用 M 函数文件形式求解 syms t ;a=4;b=3;f=a*t;g=t-b;x,minf=minNF(f,5,g,10,0.5,t) 内点惩罚函数法文件 minNF 如下: functionx,minf=minNF(f,x0,g,u,v,var,eps)%目标函数:f;%初始点:x0;%约束函数: g;%罚因子: u;%缩小系数: v;% 自变量向量: var ;%精度: eps;%目标函数取最小值时的自变量: x;%目标函数的最小

12、值: minf;format long;if nargin=6eps=1.0e-6;endk=0;FE=0;for i=1:length(g)FE=FE+1/g(i);endx1=transpose(x0);x2=inf;while 1FF=u*FE;SumF=f+FF; x2,minf=minNT(SumF,transpose(x1),var);Bx=subs(FE,var,x2);if u*Bxepsif norm(x2-x1)=epsx=x2;break;elseu=v*u;x1=x2;endelse% 构造罚函数%用牛顿法求解无约束优化%精度判别%修正参数if norm(x2-x1)=eps x=x2; break;else%修正参数u=v*u;x1=x2;endendendminf=subs(f

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号