想使用非线性优化工具SNOPT,却发现用不起?
https://ccom.ucsd.edu/~optimizers/downloads/
去上述地址,选择非US背景,提交一个免费试用申请
一天以内,你的邮箱将会收到一个license文件和一个下载网址
选择MATLAB版本下载
1 将license文件添加进环境变量 SNOPT_LICENSE
2 将下载的snopt文件解压,添加进matlab的搜索路径
3 在snopt路径下,运行runNPexamples
(有一些报错信息,但是可以先忽略,在README 文件中有信息可以帮助使用snopt,运行runQPexamples是会出现没有license的错误,因为申请试用我仅申请了snopt,没有权限使用sqopt)
4 可以将example中一些例子copy下来,新建一个脚本
clear all;
setenv('SNOPT_LICENSE','F:\SNOPT\snopt7_matlab\snopt7.lic')
neF = 19;
n = 9;
Obj = 1; % The default objective row
% Ranges for F.
Flow = zeros(neF,1);
Fupp = ones(neF,1);
Flow( 1:15) = -Inf;
Fupp(16:neF) = Inf;
% The Objective row is always free.
Flow(Obj) = -Inf;
Fupp(Obj) = Inf;
% Multipliers and states
Fmul = zeros(neF,1);
Fstate = zeros(neF,1);
% Ranges for x.
xlow = -Inf*ones(n,1);
xupp = Inf*ones(n,1);
xlow(1) = 0;
xlow(3) = -1;
xlow(5) = 0;
xlow(6) = 0;
xlow(7) = 0;
xupp(3) = 1;
xupp(8) = 0;
xupp(9) = 0;
% Multipliers and states
xmul = zeros(n,1);
xstate = zeros(n,1);
x = [ .1;
.125;
.666666;
.142857;
.111111;
.2;
.25;
-.2;
-.25 ];
[x,F,INFO] = snopt(x,xlow,xupp,xmul,xstate, ...
Flow,Fupp,Fmul,Fstate, ...
@(x)snoptuserfun(x));
试运行
好像没有什么错误
具体snopt如何使用还需要继续研究啊