文章目录
1 线性规划
无论我们做什么事,都希望用最小的代价换取最大的利益,而线性规划就是解决这类问题的一个重要方法,下面我们通过1个具体的示例来介绍一下如何使用线性规划
2 利润最大化问题
某工厂生产三种产品,下面的表是这三种产品的利润和原料消耗,据此制定一个总利润最大的生产计划
我们假设这三种产品的产量分别为x1,x2,x3,则其总利润的表达式为:
产品的产量不能小于0,而且产量还受限于原料,于是就有了以下约束条件:
我们的目标就是在满足这些约束条件的情况下使z最大。
3 求解代码
MATLAB中有一个专门求解线性规划问题的函数:linprog(),其使用方法如下:
[x,fval]=linprog(c,A,b,Aeq,beq,lb,ub,x0,options)
用于求解以下模型
其中fval表示最优解处的目标函数值,lb和ub分别表示决策变量的下界和上界,若不存在可以用空矩阵代替,x0表示迭代初始点,options是控制参数,用于指定模型求解算法、计算精度和最大迭代次数等
f:目标函数
A:不等式约束条件矩阵
b:对应不等式右侧的矩阵
Aeq:等式约束条件矩阵
beq:对应等式右侧的矩阵
lb:x的下界
ub:x的上界
x0:设置初始点x0,这个选择项只是对medium-scale算法有效。默认的large-scale算法和简单的算法忽略任何初始点。(一般用不到)
例子1:
c=[2;3;1];
a=[1,4,2;3,2,0];
b=[8;6];
[x,y]=linprog(c,-a,-b,[],[],zeros(3,1))
zeros返回一个double型0*0矩阵