线性规划在我高中就提到了,一般是一个在限制条件下求最大最小值的问题
如下是线性规划的一般数学模型:
下面对这个模型讲解:
决策变量 :上面式子中的 X,可变
目标函数 :第一行max(min)Z=... 就是目标函数
价值系数:目标函数的各项的系数C1....Cj (其实很好理解,一般求目标都是要求价值)
约束矩阵 :下面的一堆方程组就是约束方程,
工艺系数:约束方程每一项的系数 ai j(约束方程一般根据条件限制来写,系数就是完成这一项的损耗)
资源限制:约束方程等号右边的系数b1....bj
由此我们看出,一个线性规划问题有的共同特征
1.一组决策变量 (用来表示某个方案)
2.一个目标函数(以此目标去选择决策变量)
3.一组约束条件(用等式或者不等式去表达,限制决策变量)
所以我们可以得到对一个线性规划问题建模的一般步骤
1.选择决策变量
2.写出目的函数
3.列出限制条件
标准形式
我们上面一直说的是一个线性规划的形式,下面说说他的标准型应该是怎么样的
总结一下
1.目标函数是求最大max
2.限制条件是等式
3.决策变量和资源限量都大于等于 0
转化为标准型
1.min ===> max 等式右边全部乘 (-1),左边自然变成 max
2.资源限量<0 同1,两边乘(-1)
3.不等式 ===>等式 :引入松弛变量和剩余变量
也很好理解啊,我比他大,那我减去我俩的差值不就可以等于他了吗,比他小就加差值
假设有n个决策变量
>= 变成 = 这里就需要减去x(n+1)作为剩余变量
<= 变成 = 这里就需要加上x(n+1)作为松弛变量
虽然这里多了个变量,但显然无法影响我们的目标函数,但面子得给,+0*x(n+1)就好
4.决策变量<=0 我们去它的相反数 用x'= -x 代替x
5.决策变量非负性无法判断:我们一般用 x' - x'' = x 代替x进入式子(x' ,x''都大于0)
(注意,这里对变量转化之后,最后写变量大于0的时候直接写替换所用的变量 例如x'
而不使用被换的式子 例如 x)
有这个办法,我们显然可以把任意的线性规划转化成标准型
图解法
图解法可以说是线性规划问题的一种很实用的解法了,我高中时期就就教了这个办法
1.对于每个限制条件,在直角坐标系中画出对应的直线
2.标注方向(这里推荐一个方法,吧不等式的第一项变成正的,这时候把不等号看做箭头,<则在线的左边
为可行域,>则线右边为可行域)
实在拿不准就取值来算一下,更稳妥
3.对目标函数画出对应的直线(这条线斜率确定,但是可以上下左右移动)
4.让目标线在可行域内移动,再看最大最小的时候对应多少
一般来说,这种情况要找的答案都对应我们可行域边上的某个点或者一条边线
可行域不是所有的时候都是一个闭合的区域,有下面这些情况
1.无可行域:限制条件自相矛盾的时候,就没有可行域
该线性规划问题一定无可行解
2.无界可行域:某个边没有封住,导致在朝某个方向到无穷远的区域内都满足条件
该线性规划问题可能有无界解(向无穷跑的那个边使我们要的),也可能有最优解(在他有的边上我们找到要找的点)
3.有界可行域:是一个凸集
该线性规划问题一定有解
a.一个最优解 (一个凸点是我们要找的)
b.无数个最优解(一条边正好与目标斜率相同,并且是我们要的)