一.线性规划模型(LP)
目标函数及约束条件均为线性函数,称为线性规划问题。
可行解:满足约束条件的解
最优解:使目标函数达到最优值的可行解
注:线性方程指图像是直线的方程,非线性方程指图像不是直线的方程。一般来说线性方程就是一次函数,非线性为高次函数。
1. 建模的三个主要部分:
1.1 决策变量(问题的自变量)
1.2 目标函数
1.3 约束条件
2.MATLAB求解:
2.1 求解一般线性规划问题
2.2 求解整数线性规划问题
输入参数:f:目标函数中决策变量x的系数值向量
A:线性不等式约束的系数矩阵
b:线性不等式约束的右端常数向量
Aeq:线性等式约束的系数矩阵
beq:线性等式约束的右端常数向量
lb:决策变量x的上界值向量
ub:决策变量x的下界值向量
xint:取值为整数的决策变量x的下标
输出参数:x:最优解
fval:最优解代入目标函数中求出的最优值
3.例题:
其中minz为目标函数
x1,x2为决策变量
3.1 伪代码:
f=[-72,-64];
A=[1,1;12,8;3,0];
b=[50;480;100];
Aeq=[];
beq=[];
lb=[0;0];
ub=[];
①xint=[1,2];(x1,x2均取整数)
②xint(1);(只有x1取整数)
③xint(2); (只有x2取整数)
一般线性规划问题:[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub);
(整数线性规划问题[x,fval]=intlinprog(f,A,b,Aeq,beq,lb,ub));
二. 非线性规划模型(NLP)
目标函数或约束条件中包含非线性函数,称这种和规划问题为非线性规划问题。
1.MATLAB求解
传入参数:fun:目标函数句柄(匿名函数)
x0:决策变量的初始值向量
nonlcon:非线性约束函数的句柄
(匿名函数,可通过把函数转化为匿名函数)
A,b,Aeq,beq,lb,ub同线性规划
2.例题:
其中f(x)为非线性目标函数,
非线性约束函数为:
2.1伪代码
fun=@(x)((4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2))*exp(x(1)))%匿名函数
x0=[0,0]
%非线性约束函数,先用函数表示再转化为匿名函数
A=[2,1;3,5];
b=[4;10];
Aeq=[1,-2];
beq=-1;
lb=[];
ub=[0;0];
[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,@nonlcon)%d nonlcon加@转化为匿名函数
function [c,ceq] = nonlcon(x)
c=[1-x(1)*x(2);x(1)*x(2)-1.5];%d 非线性不等式约束函数
ceq=x(1)^2+x(2)^2-3;%d 线性不等式约束函数
end