?? 1.txt
字號:
罰函數(shù)法(通用)
function y=ff(x,k)
y=-17.86*0.42*x(1)/(0.8+0.42*x(1))*(1-exp(-2*(0.8+0.42*x(1))/3))*exp(-1.6)*x(2)-22.99*x(1)/(0.8+x(1))*(1-exp(-2*(0.8+x(1))/3))*x(3)+k*(x(2)-(1.22*10^2*(9517.8*exp(-1.6-2*0.42*x(1)/3)*x(2)+19035.6*exp(-2*x(1)/3)*x(3)))/(1.22*10^2+9517.8*exp(-1.6-2*0.42*x(1)/3)*x(2)+19035.6*exp(-2*x(1)/3)*x(3)))^2+k*(x(3)-exp(-0.8-2*x(1)/3)*x(3)-exp(-2.4-2*0.42*x(1)/3)*x(2))^2;
% 主函數(shù),參數(shù)包括未知數(shù)的個數(shù)n,懲罰因子q,懲罰因子增長系數(shù)k,初值x0,以及允許的誤差r
function G=FHS(x0,q,k,n,r,h,a)
l=1;
while (l)
x=powell(x0,n,q,r(1),h,a); %調(diào)用powell函數(shù)
g(1)=ff1(x),g(2)=ff2(x) . . . g(p)=ffp(x); %調(diào)用不等式約束函數(shù),將其值
%存入數(shù)組g
h(1)=hh1(x),h(2)=hh2(x) . . . h(t)=hht(x); %調(diào)用等式約束函數(shù),將其值
%存入數(shù)組h
for i=1:p
if g(i)<r
for j=1:t
if abs(h(j))<r(2)
continue;
else
break;
end
end
else
break;
end
end
if (i==p)&(j==t) %如果所有約束條件的值都在允許的范圍內(nèi)就結(jié)束
%搜索,否則加大懲罰力度繼續(xù)搜索
l=0;
else
x0=x;
q=k*q;
end
end
G=x
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -