SNOPT一些使用方法总结

snopt是Philip Gill, Walter Murray,Michael Saunders一同编写的一个软件包,用来求解大型优化问题。关于它的中文介绍比较少,昨天大概看了一下使用说明,大致了解了snopt的一个基本使用方法,用中文记录下来
搞好了snopt的申请、安装、试运行之后就是学习snopt这个函数如何使用
因为在使用方法上与matlab中fmincon还是有些差距
如下优化问题
在这里插入图片描述
[x,F,info,xmul,Fmul,xstate,Fstate,output] = snopt(x, xlow, xupp, xmul, xstate, Flow, Fupp, Fmul, Fstate,userfun, varargin);
调用函数有以下几种方式
[…] = snopt(x, xlow, xupp, xmul, xstate,
Flow, Fupp, Fmul, Fstate, userfun,
[options])
[…] = snopt(x, xlow, xupp, xmul, xstate,…
Flow, Fupp, Fmul, Fstate, userfun,…
ObjAdd, ObjRow, [options])
[…] = snopt(x, xlow, xupp, xmul, xstate,…
Flow, Fupp, Fmul, Fstate, userfun,…
ObjAdd, ObjRow,
A, G, [options])
x 是变量初始值 (这里和fmincon类似)
xlow, xupp是变量最小最大值(F类似)
xmul, xstate是变量初始乘子与初始状态(F类似)
Flow, Fupp,Fmul, Fstate指的是userfun的最大最小值限制与初始乘子和状态 mul与state一般取0,具体取值说明见SNOPT官网的帮助文档
userfun与fmincon中的userfun差别比较大
这里的userfun包括目标函数与约束条件
userfun(objrow)一般objrow默认值为1,也就是userfun(1)为优化函数,userfun(2:n)为约束条件
如果优化函数中有常数项将其写进 objadd中
关于约束条件也有一些地方需要注意,就是常数项一定要以Flow与Fupp的形式表达出来,userfun(2:n)中不能有常数项出现,一定是线性项+非线性项(通过我的反复尝试发现,常数写在userfun中根本起不到约束作用)
输入变量 A与G 是userfun的雅克比矩阵中线性项与非线性项,A与G是可选择的输入变量,如果使用者没有输入,snopt会调用snjac()来求解
具体的A与G示例如下
在这里插入图片描述
补充一个试用版本的限制,最新一次下载中发现的
If you are not in the U.S., you can request access to restricted precompiled libraries for SNOPT and SQOPT. These libraries limit the problem size to 500 constraints and variables and are time-limited to 3 months.

We offer evaluation versions of our optimization libraries SNOPT7 and SQOPT7 for macOS, Windows, and Linux systems.

Please choose the appropriate option below and fill out the form to download trial versions of our optimization packages. We will send an email to you within a few hours of submission with the download link once you have been approved.

Problems or questions? Please email us at optimizers@ccom.ucsd.edu.

If you are using SNOPT for your own research, please cite the following publications:
P. E. Gill, W. Murray, M. A. Saunders, Elizabeth Wong.
SNOPT 7.7 User’s Manual.
CCoM Technical Report 18-1, Center for Computational Mathematics, University of California, San Diego.
( bibtex )
P. E. Gill, W. Murray and M. A. Saunders.
SNOPT: An SQP algorithm for large-scale constrained optimization.
SIAM Review 47 (2005), 99-131.
( bibtex )

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SNOPT是一种高性能的优化求解器,主要用于求解非线性、非凸的优化问题。其名称是斯坦福大学数值优化软件(Stanford Optimization Software)的缩写。 SNOPT在优化领域中具有广泛的应用,特别是在工程设计、经济学、金融学等领域。它采用了一种稳定而高效的优化算法,能够处理大规模的优化问题。 SNOPT的求解算法基于序列二次规划(Sequential Quadratic Programming, SQP)方法。该方法通过迭代求解一系列二次规划子问题来逼近原始优化问题的最优解。在每个迭代步骤中,SNOPT会根据当前的二次规划问题构建一个局部模型,然后使用线性化技术来求解该模型。通过不断更新线性化点和目标函数的梯度信息,SNOPT得以逐步接近全局最优解。 为了提高性能,SNOPT还采用了一系列的加速技术。例如,它可以自动进行约束和变量下界/上界的松弛,并使用一种剪枝技术来减少冗余的计算。此外,SNOPT还提供了多种线性和非线性约束处理方法,以适应不同类型的优化问题。 SNOPT的优点包括高效的收敛性、良好的稳定性和可扩展性。它可以在大规模问题上获得较好的性能,并且在处理复杂约束和非凸问题时仍保持稳定。此外,SNOPT还提供了丰富的接口和配置选项,以及友好的用户文档和示例代码,方便用户进行使用和调试。 总之,SNOPT是一种强大的优化求解器,通过采用高效的算法和多种加速技术,能够有效地求解非线性、非凸的优化问题。它在各个领域都具有广泛的应用,并且以其优秀的性能和稳定性受到用户的青睐。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值