一、数学规划问题
数学规划问题是求解在给定条件下,按照某一衡量标准来寻求计划,管理工作的最优方案。
即是:求目标函数在一定约束条件下的极值问题。
二、线性规划的一般形式
x:决策变量
f(x):目标函数
Ax <= b:不等式约束
Aeqx = beq:等式约束
在matlab中所有的限制条件都是利用矩阵表示,例如:
c = [2;3;-5];
a = [-2,5,-1;1,3,1];
b = [-10;12];
aeq = [1,1,1];
beq = 7;
lb = [0,0,0];
[x,Fval]=linprog(-c,a,b,aeq,beq,lb)
z = -Fval;
(x对应取得最优解x的取值,Fval 对应最优解)
三、针对例题的疑惑解答
函数的完全形式是:
[x,Fval]=linprog[c,A,b,Aeq,beq,lb,ub,x0]
lb,ub分别是上界和下界,x0是初始值
(1)为什么带入函数要用-c,结果还要使用z=-Fval取反呢?
由于标准形式只能解决最小值问题,如果要解决最大值,则需要将结果(Fval)和目标函数(-c)取反。
(2)如果没有不等式约束条件,或者等式约束条件怎么处理?
可以直接用[ ]代替Aeq、A、b、beq。
没有上限可以不用写ub参数。
(3)如果有自变量x(1~4)其中x1>=0、x2>=0、x3>=0,x4无限制条件怎么写lb参数呢?
如果是下界可以用-inf代替参数,如果是上界可以用inf代替参数。
lb = [0,0,0,-inf]
(4)x0在线性规划中可以不写吗?
完全可以,一般不用给的。
四、关于解的情况
如果没有解:
%Linprog stopped because no point satisfies the constraints.(没有任何一个点满足约束条件)。
如果有多个解:
将返回其中一个解。