Rosenbrock函数Matlab代码非手术治疗
该存储库包含
Curtis
和
Overton
[1]
的
SQP-GS(顺序二次编程
-
梯度采样)算法的Python实现。
注意:这个实现是一个原型代码,它只针对一个简单的问题进行了测试,并且没有进行性能优化。
论文作者提供了一个
Matlab
实现,参见
[2]。
数学描述
该算法可以解决以下形式的问题
min
f(x)
s.t.
g(x)
<=
0
h(x)
=
0
其中f
、
g和h是局部
Lipschitz
函数。
因此,该算法可以解决具有非凸和非光滑目标和约束的问题。
有关详细信息,我们参考原始论文。
例子
该代码针对
Rosenbrock
函数的
2
维非平滑版本进行了测试,受最大函数约束。
请参见
[1]
中的示例
5.1。
对于这个问题,解析解是已知的。
下图显示了SQP-GS在不同起点的轨迹。
最后的迭代用黑色加号标记,而解析解用金色星星标记。
我们可以看到该算法始终如一地找到了最小值。
要重现此实验,请参阅文件test_rosenbrock.py
。
实施细则
求解器具有三个主要参数,称为f
、
gI和gE
。
2021-11-25 10:33:06
57KB
系统开源
1