[英]Exterior penalty function method
我正在嘗試實現一種外部懲罰函數方法來最小化以下問題。
最小 f(x)=100*(x(2)-x(1)^2)^2+(1-x(1))^2
st, x(1)+2x(2)<=1
2x(1)+x(2)=1
首先,我使用fmincon
找到了最小值,答案是x
: array([ 0.4149, 0.1701])
和f(x)=0.34
。
然后我試圖使用我的外部懲罰函數方法的實現來找到最小值。 我正在使用這個懲罰函數:
F(x,a)=f(x)+a*(x(1)+2*x(2)-1)^2+a*(2*x(1)+x(2)-1)^ 2
起點x_0=[1,1]
, a=10
(在每次迭代中 a= a^2) ,這給了我x
: array([ 0.3333, 0.3333])
和f(x)=5.3
。
我的實現中的錯誤在哪里? 謝謝。
您的算法解決了以下等式約束問題!
最小化 f(x)=100*(x(2)-x(1)^2)^2+(1-x(1))^2
服從 x(1)+2x(2)=1 2x(1)+x(2)=1
和fmincon
(正確地)解決了原始問題(具有一個不等式和一個等式約束)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.