线性规划
背景
项目上遇到了一个问题:如何分配项目点值,找到了北理工的运筹学教程进行学习,看到了线性规划问题如下:
问:工厂应分别生产多少单位Ⅰ 、 Ⅱ 产品才能使工厂获利最多?
资源 | 产品Ⅰ | 产品Ⅱ | 资源限制 |
---|---|---|---|
设备 | 1 | 1 | 300台时 |
原料A | 2 | 1 | 400kg |
原料B | 0 | 1 | 250kg |
单位产品获利(元) | 50 | 100 |
建立线性规划模型(设工厂分别生产 𝒙𝟏 , 𝒙𝟐 单位Ⅰ 、 Ⅱ 产品)
目标函数:
max z = 50𝒙𝟏+ 100𝒙𝟐
约束条件:
x1 + x2 ≤ 300
2x1 + x2 ≤ 400
x2 ≤ 250
x1, x2≥ 0
运筹学软件求解
运筹学随书附带了一个管理运筹学的软件,可以求解这个问题,如下图
分别输入变量个数,约束条件个数,目标函数后,点击求解即可求出最大值。
具体使用方法可见运筹学教程中第一周1.3线性规划问题的计算机求解
使用Excel求解线性规划问题
显示规划求解菜单
如果Excel中,没有显示上图所示菜单,可以按照以下步骤打开
- 打开文件=》选项
- 转到Excel加载项
- 勾上规划求解加载项
规划求解
输入题目已知条件
输入约束条件和目标函数
- 题目中工厂生产x1和x2件产品,
假设F10和G10单元格代表x1和x2
- F12单元格的公式代表目标函数
- F3 F4 F5 单元格的公式分别代表三个约束条件
约束条件F3 F4 F5的公式分别为
=C3*F10+D3*G10 即约束条件中 x1 + x2 ≤ 300
=C4*F10+D4*G10 即约束条件中 2x1 + x2 ≤ 400
=D5*G10 即约束条件中 x2 ≤ 250
目标函数E12的公式为
=C6*F10+D6*G10 即目标函数的 50𝒙𝟏 + 100𝒙𝟐
求解
- 点击规划求解,设置规划求解参数,如下图
- 设置目标为F12,目标为最大值
- "通过更改可变单元格"即设置F10和G10
- "遵守约束"即添加三个约束条件 F3 F4 F5
- "选择求解方法"为单纯线性规划
设置完成的规划求解参数如下图
点击求解后,结果如下图