SNOPT一些使用方法总结

SNOPT是由Philip Gill等人编写的用于解决大规模优化问题的软件包,中文资料较少。它在使用上与MATLAB的fmincon存在差异。调用函数snopt需指定变量初始值、边界、乘子和状态等参数,其中userfun包含目标函数和约束条件,ObjAdd用于常数项,A和G则表示线性与非线性项的雅克比矩阵。试用版限制问题规模和使用期限。该文介绍了SNOPT的基本使用方法和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 )

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值