外部罚函数方法

问题描述 投票:2回答:1

我正在尝试实现外部惩罚函数方法以最小化以下问题。

最小f(x)= 100 *(x(2)-x(1)^ 2)^ 2 +(1-x(1))^ 2

s.t,x(1)+ 2x(2)<= 1

2x(1)+ x(2)= 1

首先,我使用fmincon找到了最小值,答案为xarray([ 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),这给了我xarray([ 0.3333, 0.3333])f(x)=5.3

我的实现错误在哪里?谢谢。

optimization nonlinear-optimization convex non-convex
1个回答
0
投票

您的算法解决了以下equality约束问题!

最小化f(x)= 100 *(x(2)-x(1)^ 2)^ 2 +(1-x(1))^ 2

取决于x(1)+ 2x(2)= 12x(1)+ x(2)= 1

fmincon(正确)解决了原始问题(具有一个不等式和一个相等约束)。

© www.soinside.com 2019 - 2024. All rights reserved.