流豊
流豊
关注数: 21
粉丝数: 99
发帖数: 391
关注贴吧数: 19
求大神看下错在哪里 function [x,minf] =minNF(f,x0,g,u,v,var,eps) gx0 = Funval(g,var,x0); if gx0 >= 0; %初始点在可行域内为初始内点 end else disp('初始点必须满足不等式约束!') x= NaN; minf = NaN; return end if u <= 0; disp('初始障碍因子必须大于0!'); %检查障碍因子 x= NaN; minf = NaN; return end if v >=1 || v < 0; disp('初始障碍系数必须大于0且小于1'); %缩小系数检查 x = NaN; minf = NaN; return end format long; if nargin == 6 eps = 1.0e-4; end k = 0; FE = 0; for i=1:length(g) FE = FE + 1/g(i); %利用不等式约束构造罚项 end x1 = transpose(x0); x2 = inf; while 1 FF = u*FE; SumF = f + FF; %构造罚函数 %-------用牛顿法求解无约束优化问题--------- [x2,minf] = minNT(SumF,transpose(x1),var); Bx=Funval(FE,var,x2); if u*Bx < eps if norm(x2 - x1)<=eps %精度判断 x = x2; break; else u = v*u; x1 = x2; end else if norm(x2 - x1)<=eps %参数修正 x = x2; break; else u = v*u; x1 = x2; end end end minf = Funval(f,var,x); formatshort;
1
下一页