实验三
一、实验目的:
1)进一步熟悉 Excel 规划求解工具,掌握 Excel 求解 0-1 整数规划问题;
2)进一步熟悉 Matlab 软件,掌握 Matlab 求解 0-1 整数规划问题;
3)用 Excel 和 Matlab 求解公司选址 0-1 规划问题。
二、实验器材
1)PC机: 20 台。
2)Microsoft Excel 软件(具备规划求解工具模块): 20 用户。
3)Matlab 软件(具备优化工具箱):20 用户。
三、实验原理:
公司选址属于 0-1 整数规划问题,通过对问题建立数学模型,根据 Excel 自
身特点把数学模型在电子表格中进行清晰的描述,再利用规划求解工具设定相应的
约束条件,最终完成对问题的寻优过程,具体可参见;在 Matlab 中,根据 Matlab
提供的 0-1 整数规划求解函数,将数学模型转换成 0-1 整数规划求解函数可传递
的数值参数,最终实现对问题的寻优求解过程,具体可参见中 bintprog 函数描述和
示例。
四、实验内容和步骤:
用 Excel 和 Matlab 完成下列公司选址问题。
某销售公司打算通过在武汉或长春设立分公司(也许在两个城市都设分公
司)增加市场份额,管理层同时也计划在新设分公司的城市最多建一个配送中心,
当然也可以不建配送中心。
经过计算,每种选择对公司收益的净现值列于下表的
第四列、第五列中记录了每种选择所需的费用,总的预算费用不得超过20 万元。
决策编号问题决策变量净现值(万元)所需资金(万元)
1 是否在长春设分公司x1 18 12
2 是否在武汉设分公司x2 10 6
3 是否在长春建配送中心x3 12 10
4 是否在武汉建配送中心x 4 8 4
问:如何决策才能使总的净现值最大
建立模型:
设=0 表示不建立,=1 表示建立,i=1,2,3,4用z表示预算费用总的净现值。
则目标函数 maxz=18 +10 +12 +8
先确立约束不等式:总的预算费用不得超过20 万元;设立的分公司数目大于等
于 1;且建立配送中心数目一定要小于分公司数目。
列出约束不等式如下:
12 +6 +10 +4 ≤20
- - ≤-1
- + ≤0
- + ≤0
=0,1
Excel 求解过程
打开 Excel ,选择“ Excel 选项”通过“工具”菜单的“加载宏”选项打
开“加载宏”对话框来添加“规划求解”。
将约束条件的系数矩阵输入 Excel 中,如下图所示,然后将目标函数的系数输入约束矩阵下方,最下方为最优解的值,
输入“ 0”或不输入。
系数矩阵的右端一列为合计栏,点击合计栏中单元格并在其中输入“ =sumproduct(”,用鼠标左键拖动合计栏所在行的系数,选定后输入“,”,然后拖拉选定最下方的空白行,输入“)”,输入“ Enter ”。
用此方法依次处理整个系数矩阵每一行和目标函数行,合计栏右端输入约束条件右端项,
在合计栏和约束条件右端项之间可以输入“≧”符号,也可以不输入。
上述步骤完成后,在菜单栏点击“数据”菜单,选择最右端“规划求解”选项,
弹出“规划求解参数” 对话框,目标单元格选择目标函数系数所在行和合计栏交
叉处的单元格,选择求最大值,可变单元格选择解所在行。
点击“添加约束条件”按钮,单元格引用位置选择合计那一列,约束关系选择“≦”,约束值选择右端
项系数所在列,点击确定。
在“选项”中勾选“采用线性模型”和“假定非负”,如果是用 EXCEL2010操作,步骤与基本相同,个别界面会有些区别。
求得最优解和目标函数最小值如下
运算结果报告如下:
Matlab 求解过程:
先在 command window对建立模型中各个参数矩阵进行赋值,同一行数字用
空格分开,换行时用分号分开,矩阵用“ 【】”表示,分别将目标函数系数 f ,系数矩阵 A,右端项 b 输入,因 matlab 的标准 0-1 求解模型中目标函数为求最小
值,因此输入 f 时要乘以一个负号。
输入一个命令完成后加分号,输入“Enter ”,矩阵被储存并在workspace中显示出来。
最后调用0-1线性规划的函数
x=bintprog(f,A,b);回车,即可得求解结果. 将最优解代入目标函数,输入
z=f ’ *x ,然后求出 -z 即为目标函数最大值。
计算界面如下图所示:
最优解:
当在武汉和长春均设立分公司,两地都不建配送中心时取得最优解。
此时总的净现值最大为 28万元。
Excel 和 matlab 优劣性比较:
Excel 模型直观明了,但是输入单元格较多,设置参数多,过程较复杂,而matlab有编程的意思,采用专门的操作语言,界面不够清晰明了,但是功能强
大,输入快捷,运算迅速。
Excel 可用于求解变量较少,较为简单的模型,用于日常使用, matlab 则是比较专业的软件,适用于较为复杂的问题求解。