matlabff2函式 罰函式法MATLAB程式

2021-10-13 07:52:07 字數 1346 閱讀 7490

一、進退法、

0.618

法、powell

法、罰函式法的

matlab

程式設計

罰函式法(通用)

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;

主函式,引數包括未知數的個數

n,懲罰因子

q,懲罰因子增長係數

k,初值

x0,以及

允許的誤差

rfunction g=fhs(x0,q,k,n,r

,h,a)

l=1;

while (l)

x=powell(x0,n,q,r(1),h,a);

呼叫powell

函式g(1)=ff1(x),g(2)=ff2(x) . . . g(p)=ffp(x);

呼叫不等式約束函式,將其值

存入陣列

gh(1)=hh1(x),h(2)=hh2(x) . . . h(t)=hht(x);

呼叫等式約束函式,將其值

存入陣列

hfor i=1:p

if g(i)

for j=1:t

if abs(h(j))

continue;

else

break;

endend

else

break;

endend

if (i==p)&(j==t)

如果所有約束條件的值都在允許的範圍內就結束

l=0;

else

x0=x;

q=k*q;

endend

g=x%powell

演算法,用於尋找無約束最優值點

function

powel=powell(x0,n,q,r

,h,a)

d=eye(n);

%n個線性無關的初始搜尋方向

k=1;

拉格朗日乘子法 懲罰函式法

karush kuhn tucker conditions,kkt條件,kt條件 乙個非線性規劃 nonlinear programming 問題能有最優化解法的條件。引入了乘子 目標函式 約束條件都是凸函式 向量間的線性加平移變換 也稱拉格朗日乘子法 約束問題只有等式約束條件,則可通過乘子將約束問...

優化之外罰函式法

罰函式法的基本思想是借助罰函式把約束問題轉化為無約束問題,然後用無約束最優方法來求解。目標函式 約束條件 clc syms x1 x2 e e為罰因子 m 1 1 c 10 a 1 0 b 1 0 c為遞增係數 賦初值 f x1 2 x2 2 e 1 x1 2 構造罰函式 f0 1 0 求偏導 海森...

最優化問題 三 之 外點法(罰函式法)

罰函式法又稱乘子法,是將約束優化問題轉換為無約束最優化問題的方法之一。其基本思想就是通過在原始的目標函式中新增乙個障礙函式 也可以理解成懲罰函式 來代替約束條件中的不等式約束。如果當前解不滿足約束條件,就在目標項上加上乙個正向的懲罰 這裡考慮的都是最小化問題 強迫當前解往可行域的方向走。至於正向懲罰...