线性规划求解
- 线性规划概念介绍
- 模型建立步骤
- 基本的线性模型例子
- 模型一般形式和标准形式
- 单纯形法、大M法、两阶段法
- 总结
线性规划概念介绍
线性规划是优化问题的特殊情形,其模型中的目标函数和约束条件均为决策变量的线性函数。
模型建立步骤
- 确定决策变量
- 确定目标函数
- 确定约束条件
基本的线性模型例子
列1【合理下料问题】用长度为500厘米的条材,截成长度为98厘米和78厘米两种毛胚,要求长98厘米的毛胚1000根,78厘米长的毛胚2000更,应增氧才能使所用的原材料最少,试建立问题的数学模型。
解一根500厘米的条材截成98厘米和78厘米长度的毛胚有很多种方案,列出方案表如下:
方案序号 | 98厘米毛胚数 | 78厘米毛胚数 | 剩余厘米数 |
1 | 0 | 6 | 32 |
2 | 1 | 5 | 12 |
3 | 2 | 4 | 70 |
4 | 3 | 3 | 50 |
5 | 4 | 2 | 30 |
6 | 5 | 1 | 10 |
设决策变量xi()表示第i个方案所用的条材数。目标函数可以表示为:
约束条件就是
由于是实际问题,决策变量应该取非负整数。
列2【0-1背包问题】一个旅行者要在背包里装一些最有用的旅行物品。背包容积为a,携带物品总质量最多为b。现有物品m件,第j件物品体积为aj,质量为bj(j=1,2,…,m)。为了比较物品的有用程度,假设第j件物品的价值是cj(j=1,2,…,m)。若每件物品只能携带整件,每件物品都能放入背包,并且不考虑放入背包里面的间隙。问旅行者应当携带那几件物品才能使得物品的总价值最大?试建立问题的数学模型。
解每件物品有被选择和不被选择两种可能,为此,设为第j件物品装入的数量,则对应于m件物品引入m个0-1变量:
目标函数=物品携带的总价值
约束条件,所携带的物品总体积不超过a,总质量不超过b
数学模型如下:
z=
该模型决策变量x只能取0或1,成为0-1整数规划,简称0-1规划。
列3【运输问题】某公司有3个同类产品的工厂(简称产地Ai,i=1,2,3),生产的产品由4个销售点(简称销售地Bi,i=1,2,3,4)销售,各工厂的生产量(用ai表示),各销售点的销量(用bj表示)以及各工厂到销售点的单位产品运价(用cij表示)如表2.3表示。问该公司应如何调运产品,在满足各销售点的需求量的前提下,使总的运费最少?
表2.3 产量、销量与单位产品运价关系表
产地\单位运价\销地 | B1 | B2 | B3 | B4 | 产量ai |
A1 | 3 | 11 | 3 | 10 | 7 |
A2 | 1 | 9 | 2 | 8 | 4 |
A3 | 7 | 4 | 10 | 5 | 9 |
销量bj | 3 | 6 | 5 | 6 | - |
解本问题中“如何制定调运方案”,就是指的安排一个产地和一个销地各应安排多大的运量,因此令从产地 Ai到销地Bj的运量为xij(i=1,2,3;j=1,2,3,4)作为本问题的决策变量。
目标函数=总运费=
约束条件:由表2.3可知,运输问题的总产量(7+4+9)=总销量(3+6+5+6),所以运输问题是平衡运输问题。第一个约束条件是:各产地运往某一销地的物品数量之和等于该销地的销量,即,第二个约束条件:某一产地运往各销售地的物品数量之和等于该地的产量,即,第三个约束条件:决策变量为非负,即。
因此数学模型可表述如下:
模型一般形式和标准形式
一般形式:
标准形式(也就是把一般形式的不等式转换成等式,目标函数一般转化为min方便后面求解):
转化方法:
首先先将x全部转化为,之后转变约束条件:对于小于的不等式,加一个松弛变量,对于大于的不等式,减一个松弛变量,之后是:目标函数,整体乘-1就可以了。
例如:将下列线性规划转化为标准模型
分析:
转化标准型为:
单纯形法、大M法、两阶段法
1)单纯形法
理论很复杂直接上题
列1单纯形法求解下列线性规划
解:A转化为标准形式:
B列出单纯形表如下:
Cj | | | 1 | -2 | 1 | 0 | 0 | 0 | ||
b | | | x1 | x2 | x3 | x4 | x5 | x6 | ||
0 | x4 | 10 | | | 1 | 1 | -2 | 1 | 0 | 0 |
0 | x5 | 8 | | | 2 | -1 | 4 | 0 | 1 | 0 |
0 | x6 | 2 | | | -1 | 2 | -4 | 0 | 0 | 1 |
| | 1 | 2 | -1 | 0 | 0 | 0 |
Cj表示的是目标函数对应xj的系数,在系数行列式里面选取一个单位矩阵,得到的三个变量就是x4,x5,x6。
b表示的不等式右边的数字
最后一行 是检验数,极小问题的结束条件就是检验数全部都是正数,极大问题的结束条件就是检验数全部都是负数。
C求解
由于检验数 不全大于0于是选取负数中最小的,在这一列里面找非负的数对应的x就是入基,让b/对应的数,取最小的就是出基。
Cj | | | 1 | -2 | 1 | 0 | 0 | 0 | |||
b | | | x1 | x2 | x3 | x4 | x5 | x6 | |||
0 | x4 | 10 | | | 1 | 1 | -2 | 1 | 0 | 0 | 10/1 |
0 | x5 | 8 | | | 2 | -1 | 4 | 0 | 1 | 0 | |
0 | x6 | 2 | | | -1 | [2] | -4 | 0 | 0 | 1 | 4/2 |
| | 1 | -2 | 1 | 0 | 0 | 0 |
用x2代替x6,化这个数字2为1,这列其他的数为0继续单纯形法,替代只需要修改变量和系数,即0 x6变成-2 x2,其他的不需要变。
此时所有的,达到结束条件,此时的b这一行就是x的取值,其他的都是0
由于目标函数只包含,于是最优解X*=(0,12,5,8)T
2)大M法
这个M是值很大的正数
列:使用大M法求解下列线性规划
max z=-3x1+x3
转化为标准形式
列出系数矩阵如下
发现没有单位矩阵不能使用单纯形法于是采用大M法,原来矩阵有一行于是补两个人工变量凑成一个单位矩阵
则原来的线性规划转化为:
解答过程如下:
3)两阶段法
第一步:继承了大M法,先将目标函数,变成人工变量相加,其中M取1
其他条件不变,用单纯刑法使得所有的,并且CB不含人工变量,求解如下:
如果包含人工变量替换为其他变量
第二步:以第一阶段的最终单纯形表为基础,出去人工变量及其系数列,只恢复基础变量的系数,其他不变,继续进行迭代,结果如下:
总结
练题是最重要的,多做多想。