还剩1页未读,继续阅读
文本内容:
2.8用__TLAB优化工具包解非线性规划用__TLAB优化工具包求解非线性规划时必须先化为如下形式 NLP求解程序名为fmincon,其最简单的调用格式为x=fminconfunx0A1b1(用于不含有等式约束和上下解约束的问题)其最复杂的调用格式为[xfvalexitflagoutputlambdagradhessian]=fminconfunx0A1b1A2b2v1v2nlconoptionsP1P
2...
2.
8.1程序fmincon输出变量其中输出变量的含义为1)x最优解2)fval最优解处的函数值3)exitflag程序结束时的状态指示0收敛 0函数调用次数或迭代次数达到最大值(该值在options中指定)0不收敛4Output:包含以下数据的一个结构变量funcCount 函数调用次数iterations 实际迭代次数cgiterations 实际PCG迭代次数(大规模计算用)algorithm 实际使用的算法stepsize 最后迭代步长(中等规模计算用)firstorderopt 一阶最优条件满足的情况(目标函数梯度的范数)5lambda:包含以下数据(LAGRANGE乘子)的一个结构变量总维数等于约束条件的个数,其非零分量对应于起作用的约束条件ineqlin 不等式约束的LAGRANGE乘子eqlin 等式约束的LAGRANGE乘子upper 上界约束的LAGRANGE乘子lower 下界约束的LAGRANGE乘子6grad:目标函数梯度7hessian:目标函数的hessian矩阵
2.
8.2程序fmincon输入参数其中输入变量的含义为x0为初始解(缺省时程序自动取x0=0)A1b1A2b2v1v2含义见模型(NLP)Fun.m给出目标函数,当GradO__=on时必须给出其梯度,当Hessian=on时还必须给出其Jacobi矩阵,一般形式为function[fgH]=funxf=...%o__ectivefunctionvalueifnargout1g=...%gra___ntofthefunctionifnargout2H=...%Hessianofthefunctionendnlcon.m给出非线性约束GradConstr=on时还给出梯度一般形式为function[c1c2__1__2]=nlconxc1=...%nonlinearinequalitiesatxc2=...%nonlinearequalitiesatxifnargout2__1=...%gra___ntsofc1__2=...%gra___ntsofc2endoptions包含算法控制参数的结构设定(或显示)控制参数的命令为Optimset,有以下一些用法Optimset//显示控制参数optimsetoptfun//显示程序optfun的控制参数opt=optimset//控制参数设为[](即缺省值opt=optimsetoptfun//设定为程序optfun的控制参数缺省值Opt=optimsetpar1val1par2val
2...Opt=optimsetoldoptspar1val
1...opt=optimsetoldoptsnewopts可以设定的参数比较多,对fmincon,常用的有以下一些参数Diagnostics 是否显示诊断信息(on或off)Display 显示信息的级别(off,iter,final,notify)LargeScale 是否采用大规模算法(on或off)__xIter 最大迭代次数TolCon 约束的误差限TolFun 函数计算的误差限TolX 决策变量的误差限GradO__ 目标函数是否采用分析梯度(on,off)Jacobian 目标函数是否采用分析Jacob矩阵(on,off)__xFunEvals 目标函数最大调用次数GradConstr 非线性约束函数是否采用分析梯度(on,off)
2.
8.3注意事项fmincon中输出变量、输入参数不一定写全,可以缺省当中间某个输入参数缺省时,需用[]占据其位置。