线性与非线性规划
本章收录了最基础的规划算法,包括线性规划,整数规划和非线性规划中最基本的MATLAB算法。
线性规划
其标准形式为
xminfTxA⋅x≤bAeq⋅x=beqlb≤x≤ub
[x,fval] = linprog(f,A,b);
[x,fval] = linprog(f,A,b,Aeq,beq);
[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub);
整数规划
标准形为
xminfTxx(intcon)isanintegerA⋅x≤bAeq⋅x=beqlb≤x≤ub
[x,fval] = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub);
非线性规划
标准形式
xminfTxA⋅x≤bAeq⋅x=beqc(x)≤0ceq(x)=0lb≤x≤ub
[x,fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options);
%x0为初始值,nonlcon为用m文件定义的非线性向量函数,option定义了优化参数
二次规划
xmin21xTHx+fTxA⋅x≤bAeq⋅x=beqlb≤x≤ub
[x,fval] = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options);
其他函数
[x,fval] = fminunc(fun,x0,options);%求无约束极值
[x,fval] = fminbnd(fun,x1,x2,options);%在[x1,x2]上求极小值
[x,fval] = fseminf(fun,x0,ntheta,semifcon,A,b,Aeq,beq,lb,ub);%半无穷约束,ntheta是半无穷约束的个数
[x,fval] = fminmax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options);%最小最大优化
或者使用optimtool
工具箱使用GUI求解。