【文件属性】:
文件名称:rosenbrock函数Matlab代码-ncOPT:用于非光滑、非凸约束优化的SQP-GS算法的Python实现
文件大小:57KB
文件格式:ZIP
更新时间:2021-06-17 03:14:18
系统开源
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
。
【文件预览】:
ncOPT-main
----rosenbrock.png(48KB)
----dev()
--------test_sp_class.py(550B)
----.gitignore(22B)
----ncopt()
--------torch_obj.py(1KB)
--------sqpgs.py(15KB)
--------__init__.py(2B)
--------rosenbrock.py(1KB)
----README.md(2KB)
----test_rosenbrock.py(1KB)
----train_max_fun.py(4KB)