线性规划问题计算机解法

线性规划问题计算机解法本节将简要介绍几种软件求解线性规划问题的方法.1.6.1应用EXCEL求解线性规划问题以EXCEL2007为例,首先加载EXCEL规划求解加载项,具体操作步骤为:Office按钮——EXCEL选项—— 加载项——转到——加载宏——规划求解加载项,此时在“数据”选项卡中出现带有“规划求解”按钮的“分析”组.  下面仍然以例1.5为例,说明其求解过程:1 设计电子表格将模型中的数据直接输入到工作表中并保存文档.其中,A列为说明性文字,A3为决策变量的初始值,可以任意给定,本例均设为0;在D4其中键入“=SUMPRODUCT (B$3:C$3,B4:C4)”或者从直接从函数中选择,SUMPRODUCT是EXCEL的一个内置函数,其功能是两个向量或者矩阵对应元素乘积的和,因此表示表示目标函数值,由于初始值设为0,因而显示0;同理在D5其中键入“=SUMPRODUCT (B$3:C$3,B5:C5)”,以此类推,其显示值均为0.

2 设置规划求解参数   点击“分析”组中的“规划求解”按钮即可弹出如下对话框:

在设计目标目标单元格中键入$D$4,或者直接点击单元格D4,并选择“最大值”选项,如下图所示

点击对话框中“添加”,弹出如下对话框

在“单元格引用位置”栏中键入“$D$ 5”(或点击单元格D5),选择“<=”(点击出现下拉菜单,可以选择其他约束形式),在约束值栏中键入“$F$5” (或点击单元格F5),确定后弹出下面对话框:

类似于上一步操作,添加所有的约束条件后如下图所示:

3 应用规划求解工具:点击“求解”弹出如下对话框,选择“保存规划求解结果”与“运算结果报告”

确定后则形成一张新的工作表:

如果想得到价值系数、资源向量等条件对最优值的影响,可以在步骤3中选择输出“敏感性报告”.1.6.1应用LINGO求解线性规划问题   从上面的介绍中看出,用EXCEL求解线性规划问题时操作简单,而其在输入数据方面有其方便之处.但如果决策变量和约束条件很多的话,其运行速度就不及专业的优化软件了.本节介绍一种专业的优化软件--LINGO的使用方法.LINDO 是 Linear Interactive Discrete Optimizer的缩写,是一个线性和整数规划的软件系统. LINDO /386 5.3以上版本,最大规模的模型的非零系数可以达到1,000,000个,最大变量个数可以达到100,000个,最大目标函数和约束条件个数可以达到32000个,最大整数变量个数可以达到100,000个。仍以例1.5为例, 打开LINGO, 点击“File”下拉菜单,选择“new”弹出对话框,在对话框中输入目标函数和约束条件,其格式是:max=2*x1+3*x2; x1+2x*2<=8; 4*x1<=16; 4*x2<=12;如下图所示:

说明:每个表达式以“分号”隔开;如果目标函数是取小,则使用“min=”. 保存文件后点击LINGO弹出下拉菜单,选择“solver”或者直接点击快捷按钮即会输出计算结果报告

和解的状态报告

从上面的介绍看出,在求解线性规划问题时,Lingo较Excel更为人性化.但涉及到整数规划和非线性规划问题时,格式有所不同,后面将要介绍.1.6.1应用MATLAB求解线性规划问题针对不同的线性规划模型,MATLAB优化工具箱提供不同的命令,具体分以下几种情况:模型1

其命令为 x=linprog(C,A,b)说明:向量C为行向量;命令用于求目标函数为最小的形式. 模型2

命令为x=linprog(C,A,b,Ae,be)说明:若没有不等式约束存在,则令A=[ ],b=[ ];若没有等式约束,可用模型1中的命令,或者令Aeq=[ ], beq=[ ].3、模型:

命令为x=linprog(C,A,b,Ae,be, xl,xu)或者 x=linprog(C,A,b,Ae,be, xl,xu, x0) 说明: 若没有等式约束, 则令A=[ ], b=[ ];若没有等式约束,令Ae=[ ], be=[ ];x0表示初始值. 注:以上命令可以用格式[x,fval]=linprog(…),其含义为返回最优解x及x处的目标函数值fval.例1:用matlab优化工具箱计算例1.5线性规划问题 解 新建M文件如下:

C=[-2 -3];A=[1 2; 4 0;0 4];b=[8;16;12];x=linprog(c,A,b)保存文件为xxgh1.m,点击Debug选择run或适用快捷键F5,运行结果为x =

4.0000 2.0000

或者建立如下M文件:

C=[-2 -3];A=[1 2; 4 0;0