运筹学上机实验指导书.

发布时间 : 星期三 文章运筹学上机实验指导书.更新完毕开始阅读

图8

关于图6的Solution Report的注释如下:

(1) Global optimal solution found.整体最优解被找到。 (2) Objective value: 14.00000.最优值为14。

(3) Total solver iterations: 1.求解的总迭代步数为1步。 (4) Variable Value Reduced Cost

X1 4.000000 0.000000 X2 2.000000 0.000000 最优解的变量X1=4.000000,X2 =2.000000。

(5) Reduced Cost:表示减少的成本,即最小化问题的最优目标函数中各变量的检验数,即

在其它变量不变时,该变量减少一个单位,目标费用减少的数量如图8。对于最大化问题,是最优目标函数中各变量的检验数的相反数,表示当该变量增加一个单位时目标函数减少的数量如图9。这里由于上面X1和X2为取值非零的基变量,所以检验数为零。Reduced Cost为在最优解时,最小化问题中变量的检验数,最大化问题中变量检验数的相反数。

(6) Row Slack or Surplus Dual Price 1 14.00000 1.000000

2 0.000000 1.500000 3 0.000000 0.1250000

4 4.000000 0.000000

Slack or Surplus表示松弛或剩余变量,即将最优解带入各个约束条件后,左边比右边小的或大的数量,表示在最优方案中,剩余或超过的资源数量。注意,这里第一行表示目标函数,其松弛或剩余变量和对偶价格都没有意义。

(7) Dual Price,对偶价格,即最大化问题中对偶变量的最优解的值如图9所示,对于最小化

问题,对偶价格为对偶变量的最优解的值的相反数。

9

图9

图10

例1.2 求解下面线性规划的数学模型

min z=-3x1+4x2-2x3+5x4; 4x1-x2+2x3-x4=-2; x1+x2+3x3-x4≤14; -2x1+3x2-x3+2x4≥2; x1,x2,x3≥0,x4无约束;

LINGO中输入如下的代码:

min =-3*x1+4*x2-2*x3+5*x4; 4*x1-x2+2*x3-x4=-2; x1+x2+3*x3-x4<=14; -2*x1+3*x2-x3+2*x4>=2; @free(x4);

10

求解可得解报告:

Global optimal solution found.

Objective value: 2.000000 Total solver iterations: 0

Variable Value Reduced Cost X1 0.000000 15.50000 X2 8.000000 0.000000 X3 0.000000 8.500000 X4 -6.000000 0.000000 Row Slack or Surplus Dual Price 1 2.000000 -1.000000 2 0.000000 4.500000 3 0.000000 0.5000000 4 10.00000 0.000000

§1.2 大型线性规划模型的编程计算机求解

教学过程中所见到的运筹学模型大多是小型的,但是,在解决生产和经营管理活动中的实际时,建立的通常是含有很多和变量和约束条件的模型,用前面的方法,经常要花费大量的时间来输入代码或模型,下面介绍编程的方法,对于解决大型复杂的模型,效果显著。

下面是求解例1的线性规划的LINGO程序。 例2.1 用LINGO编程求解例1.1的线性规划模型

!定义变量与常量,给出了值的为常量; sets: is/1..3/:b; js/1..2/:c,x; links(is,js):a; endsets

!目标函数;

max=@sum(js(J):c(J)*x(J));

!约束条件;

@for(is(I): @sum(js(J):a(I,J)*x(J))<=b(I)); !指定常量的值; data:

!直接输入数据; c=2 3; b=8 16 12; a=1 2 4 0 0 4; end data end

11

求解可得Solution Report

Global optimal solution found.

Objective value: 14.00000 Total solver iterations: 1

Variable Value Reduced Cost B( 1) 8.000000 0.000000 B( 2) 16.00000 0.000000 B( 3) 12.00000 0.000000 C( 1) 2.000000 0.000000 C( 2) 3.000000 0.000000 X( 1) 4.000000 0.000000 X( 2) 2.000000 0.000000 A( 1, 1) 1.000000 0.000000 A( 1, 2) 2.000000 0.000000 A( 2, 1) 4.000000 0.000000 A( 2, 2) 0.000000 0.000000 A( 3, 1) 0.000000 0.000000 A( 3, 2) 4.000000 0.000000

Row Slack or Surplus Dual Price 1 14.00000 1.000000 2 0.000000 1.500000 3 0.000000 0.1250000 4 4.000000 0.000000

这里以!开始和分号结束的语句为注释语句,该程序的求解方法和解报告与小型模型类似,只是编程的解报告会把所有的系数也表述出来而已。 从例3可以看出,一个LINGO的程序由四个部分组成。 1. 以“sets:”开始,以“endsets”结束的语句定义模型中出现的变量集。

2. 以sets中定义的变量和常量来表达目标函数。

3. 以sets中定义的变量和常量来表达全部的约束条件。

4. 以“data:”开始,以“end data”结束的语句给常量指定数值。 第二章详细解释每一部分的含义及如何表达对应的数学模型。 例2.2 求解下面线性规划的数学模型;

min z=-3x1+4x2-2x3+5x4; 4x1-x2+2x3-x4=-2; x1+x2+3x3-x4≤14; -2x1+3x2-x3+2x4≥2; x1,x2,x3≥0,x4无约束;

编程如下:

!定义变量与常量,给出了值的为常量;

12

联系合同范文客服:xxxxx#qq.com(#替换为@)