Knitro 11.0.1 html
Win64(包含安裝包和肯定機器ID的軟件):連接:https://pan.baidu.com/s/14IfxlAdo3myYiAeCGzfSQQ 密碼:2k9qide
圖1 Knitro 11.0.1 win64 下載地址函數
官網獲取地址:https://www.artelys.com/en/optimization-tools/knitro/downloads字體
經過學術郵箱能夠申請一個月的完整版使用權。ui
圖2 Knitro 的申請spa
Yalmip的獲取教程見http://www.javashuo.com/article/p-dvihtkdw-cb.html命令行
1 options = sdpsettings('verbose',2,'solver','knitro','savesolveroutput',1);%verbose設置顯示信息的程度;savesolveroutput默認爲0,表示不保存求解結果,設爲1表示保存求解結果。 2 sol = optimize(Constraints,F,options);%Constraints爲約束;F爲目標函數;options爲屬性。
圖3 Yalmip調用Knitro的Matlab版本接口code
圖4 Yalmip調用Knitro求解器的函數htm
1 options = sdpsettings('verbose',2,'solver','knitro','savesolveroutput',1);%verbose設置顯示信息的程度;savesolveroutput默認爲0,表示不保存求解結果,設爲1表示保存求解結果。 2 sol = optimize(Constraints,F,options);%Constraints爲約束;F爲目標函數;options爲屬性。
1.首先找到Knitro的Matlab版本的Nlp例子,其路徑爲:C:\Program Files\Artelys\Knitro 11.0.1\knitromatlab,下面代碼中的knitromatlab是Knitro的matlab的調用接口。blog
[x,fval,exitflag,output,lambda,grad,hess] = knitromatlab(@objfun,x0,A,b,Aeq,beq,lb,ub,@constfun,extendedFeatures,[],'nlp2options.opt');%紅色字體是參數設置文檔
2.圖5中的exampleNLP2.m文件是Knitro給的NLP的例子,其中nlp2options.opt是Knitro參數設置文檔,參數設置的具體格式見圖6。
3.圖6是nlp2options.opt文件裏的內容。其中加了‘#’的語句,則‘#’後面的語句不執行(即藍色框)。紅色框爲一個參數的設置語句(參數詳見:https://www.gams.com/latest/docs/S_KNITRO.html#KNITROopttol),後半句爲說明這個參數對應Yalmip中的參數名稱(即圖7中藍色框部分).
4.那麼咱們將nlp2options.opt文件拷貝到咱們本身項目的路徑下,而後修改Yalmip調用Knitro的函數文件(callknitro.m)中的內容,具體修改見下面的代碼紅色字體部分。
1 solvertime = tic; 2 %本身加的對options的設置---start----2018.06.27 3 model.options.knitro.optionsfile = 'nlp2options.opt'; %參數設置文檔 4 %本身加的對options的設置---end---- 5 [xout,fval,exitflag,output,lambda] = knitromatlab_mip(funcs.objective,model.x0,model.A,full(model.b),model.Aeq,full(model.beq),model.lb,model.ub,funcs.constraints,model.xType,model.objFnType,model.cineqFnType,model.extendedFeatures,model.options.knitro,model.options.knitro.optionsfile); 6 solvertime = toc(solvertime);
5.那麼咱們之後要修改Knitro的參數,只須要在callknitro.m文件中修改便可。
圖5 Knitro的Matlab版本的例子
圖6 Knitro的參數設置文檔
圖7 Yalmip中Knitro的參數列表
具體見:https://www.artelys.com/tools/knitro_doc/3_referenceManual/returnCodes.html#returncodes
具體見: https://www.artelys.com/tools/knitro_doc/2_userGuide.html