1.6 软件求解线性规划问题
运筹学软件工具有很多,如Spreadsheet、Mathematica、Matlab、QSB、LINDO、LINGO等,这里就Spreadsheet及Mathematica在线性规划中的应用作一介绍。
Spreadsheet建模与求解是近年来国际上流行的、使用面较广的一种运筹学求解工具,它是在Excel内置的规划求解模块中对需要解决的问题进行描述与展开,然后建立求解模型,并使用Excel的命令与功能进行模拟、优化等分析。Excel直观的界面、出色的计算功能和图表工具,使其成为最流行的微机数据处理软件之一。运用Spreadsheet不但可以处理线性规划问题,还可处理整数规划、目标规划、图论、网络计划、对策论、排队论、存储论等经典的运筹学问题。Spreadsheet建模与求解具有操作简便、界面友好的特点,可以方便、快捷地求出运筹学问题的解,特别是使用者不需要经过太多培训就可以掌握,非常适合于企业日常管理决策工作的需要。
Mathematica是世界著名的数学软件,它是美国犹太裔学者Wolfram S.及其伙伴所开发的一个科学计算软件。它拥有范围广泛的数学计算功能,支持比较复杂的数值计算和符号计算,目前它已被应用于许多科学领域,包括物理、生物、社会学等学科。Mathematica在运筹学的线性规划、整数规划、动态规划、最短路等内容中都能发挥其强大的计算功能。
下面通过开篇案例来分析Spreadsheet求解的一般过程。
例1-15 某昼夜服务的电信客户服务中心,每天各时间段内所需客户服务人员数如表1-22所示。
表1-22 时间分段及人数需求
设客户服务中心客户服务人员分别在各时间段一开始时上班,并连续工作八小时,问该客户服务中心怎样安排客户服务人员,既能满足工作需要,又只需配备最少客户服务人员?
解:设xi表示第i班次时开始上班的客户服务人员数,建立如下求解模型。
目标函数:minf(x)=x1+x2+x3+x4+x5+x6
且x1,x2,x3,x4,x5,x6为整数
下面就该案例来说明如何利用Spreadsheet来求解。
Spreadsheet中的“规划求解”模块可以求解该问题,在使用“规划求解”前需要加载该模块。在Excel 2010版本中,首先要进入Excel主界面,单击主界面左上角的“文件”选项卡,在列表中单击“选项”,这时会弹出“Excel选项”对话框,在对话框中单击“加载项”,在对话框中的“管理”下拉列表中选择“Excel加载项”(一般默认情况下不用选择),然后再单击“转到”命令,这时会弹出“加载宏”对话框,在对话框中勾选“规划求解加载项”,再单击“确定”,“规划求解”工具便加载完成了,这时在“数据”选项卡中就会出现“规划求解”,这时便可以在Excel 2010中使用规划求解了。(加载后在每次启动Excel 2010时,都会自动加载该工具。)
(1)将求解模型及数据输入Spreadsheet工作表中。在工作表中的B1~G1单元格分别输入x1,x2,x3,x4,x5,x6,B2~G2单元格分别表示决策变量的取值。B3~G9单元格数据为技术系数矩阵,H3~H9单元格值为目标函数及约束1~6不等式符号左边部分,如H3=SUMPRODUCT(B3:G3,B2:G2),即H3=1*x1+1*x2+1*x3+1*x4+1*x5+1*x6,其余H4~H9含义雷同。I4~I9单元格数据为约束1~6不等式符号右端系数,如图1-4所示。
图1-4 Spreadsheet数据输入
(2)单击“工具”菜单中的“规划求解”命令,弹出“规划求解参数”对话框,如图1-5所示。在“规划求解参数”对话框中设置目标单元格为H3,选中“最小值”前的单选按钮,设置可变单元格为B2:G2。单击“规划求解参数”对话框中的“添加”按钮,打开“添加约束”对话框,单击单元格引用位置文本框,然后选定工作表的H4单元格,则在文本框中显示“$H$4”,选择“>=”约束条件,在约束值文本框中输入I4单元格,则在文本框中显示“$I$4”。单击“添加”按钮,把所有的约束条件都添加到“规划求解参数”对话框的“约束”列表框中。由于这里6个约束不等式符号都是“>=”,因此可以一次输入。按照同样的方法继续输入决策变量的非负约束与整数约束,如图1-5所示。
图1-5 “规划求解参数”对话框
(3)在“规划求解参数”对话框中单击“求解”按钮,弹出“规划求解结果”对话框,选中“保存规划求解结果”前的单选按钮,单击“确定”按钮,工作表中就显示出规划求解的结果,如图1-6所示。
图1-6 求解结果显示
从图1-6中可以看出,该客户服务中心6个班次开始上班的客户服务人员数分别为45人、25人、35人、15人、15人、15人,既能满足工作需要,又只需配备最少客户服务人员,配备最少客户服务人员数为150人。如果要生成运算结果报告,可在“规划求解结果”对话框中选择“报告”列表框中的“运算结果报告”。单击“确定”按钮,则产生运算结果报告表,在该表中对约束条件和结果作出了更为详细的说明。