簡體   English   中英

外罰函數法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM