!保证不出现子圈;
@for(city(I)|I #gt# 1:
@for( city( J)| J#gt#1 #and# I #ne# J: u(I)-u(J)+n*x(I,J)<=n-1); );
!限制u的范围以加速模型的求解,保证所加限制并不排除掉TSP问题的最优解; @for(city(I) | I #gt# 1: u(I)<=n-2 ); !定义X为0\\1变量;
@for( link: @bin( x)); end
计算的部分结果为:
Global optimal solution found at iteration: 77 Objective value: 1.692489
Variable Value Reduced Cost N 5.000000 0.000000 U( 1) 0.000000 0.000000 U( 2) 1.000000 0.000000 U( 3) 3.000000 0.000000 U( 4) 2.000000 0.000000 U( 5) 0.000000 0.000000 DIST( 1, 1) 0.4491774 0.000000 DIST( 1, 2) 0.2724506 0.000000 DIST( 1, 3) 0.1240430 0.000000 DIST( 1, 4) 0.9246848 0.000000 DIST( 1, 5) 0.4021706 0.000000 DIST( 2, 1) 0.7091469 0.000000 DIST( 2, 2) 0.1685199 0.000000 DIST( 2, 3) 0.8989646 0.000000 DIST( 2, 4) 0.2502747 0.000000 DIST( 2, 5) 0.8947571 0.000000 DIST( 3, 1) 0.8648940E-01 0.000000 DIST( 3, 2) 0.6020591 0.000000 DIST( 3, 3) 0.3380884 0.000000 DIST( 3, 4) 0.6813164 0.000000 DIST( 3, 5) 0.2236271 0.000000 DIST( 4, 1) 0.9762987 0.000000 DIST( 4, 2) 0.8866343 0.000000 DIST( 4, 3) 0.7139008 0.000000 DIST( 4, 4) 0.2288770 0.000000 DIST( 4, 5) 0.7134250 0.000000 DIST( 5, 1) 0.8524679 0.000000 DIST( 5, 2) 0.2396538 0.000000 DIST( 5, 3) 0.5735525 0.000000 DIST( 5, 4) 0.1403314 0.000000 DIST( 5, 5) 0.6919708 0.000000 X( 1, 1) 0.000000 0.4491774 X( 1, 2) 0.000000 0.2724506 X( 1, 3) 0.000000 0.1240430 X( 1, 4) 0.000000 0.9246848 X( 1, 5) 1.000000 0.4021706 X( 2, 1) 0.000000 0.7091469 X( 2, 2) 0.000000 0.1685199 X( 2, 3) 0.000000 0.8989646 X( 2, 4) 1.000000 0.2502747 X( 2, 5) 0.000000 0.8947571
X( 3, 1) 1.000000 0.8648940E-01 X( 3, 2) 0.000000 0.6020591
页 第41
X( 3, 3) 0.000000 0.3380884 X( 3, 4) 0.000000 0.6813164 X( 3, 5) 0.000000 0.2236271 X( 4, 1) 0.000000 0.9762987 X( 4, 2) 0.000000 0.8866343 X( 4, 3) 1.000000 0.7139008 X( 4, 4) 0.000000 0.2288770 X( 4, 5) 0.000000 0.7134250 X( 5, 1) 0.000000 0.8524679 X( 5, 2) 1.000000 0.2396538 X( 5, 3) 0.000000 0.5735525 X( 5, 4) 0.000000 0.1403314 X( 5, 5) 0.000000 0.6919708
例7.4 最短路问题 给定N个点pi(i?1,2,?,N)组成集合{pi},由集合中任一点pi到另一点j的距离用ij表示,如果pi到j没有弧联结,则规定ij,又规定cii?0(1?i?N),指定一个终点pN,要求从pi点出发到pN的最短路线。这里我们用动态规划方法来做。用所
pc在的点pi表示状态,决策集合就是除pi以外的点,选定一个点j以后,得到效益ij并转入
pcpc???新状态j,当状态是pN时,过程停止。显然这是一个不定期多阶段决策过程。
定义f(i)是由pi点出发至终点pN的最短路程,由最优化原理可得
{cij?f(j)},??f(i)?minj???f(N)?0i?1,2,?,N?1p这是一个函数方程,用LINGO可以方便的解决。
!最短路问题; model: data: n=10; enddata sets:
cities/1..n/: F; !10个城市; roads(cities,cities)/ 1,2 1,3
2,4 2,5 2,6 3,4 3,5 3,6 4,7 4,8
5,7 5,8 5,9 6,8 6,9 7,10 8,10 9,10 /: D, P; endsets data: D=
6 5 3 6 9 7 5 11 9 1 8 7 5 4 10 5 7
页 第42
9; enddata F(n)=0;
@for(cities(i) | i #lt# n:
F(i)=@min(roads(i,j): D(i,j)+F(j)); );
!显然,如果P(i,j)=1,则点i到点n的最短路径的第一步是i --> j,否则就不是。 由此,我们就可方便的确定出最短路径; @for(roads(i,j):
P(i,j)=@if(F(i) #eq# D(i,j)+F(j),1,0) ); end
计算的部分结果为:
Feasible solution found at iteration: 0 Variable Value N 10.00000 F( 1) 17.00000 F( 2) 11.00000 F( 3) 15.00000 F( 4) 8.000000 F( 5) 13.00000 F( 6) 11.00000 F( 7) 5.000000 F( 8) 7.000000 F( 9) 9.000000 F( 10) 0.000000 P( 1, 2) 1.000000 P( 1, 3) 0.000000 P( 2, 4) 1.000000 P( 2, 5) 0.000000 P( 2, 6) 0.000000 P( 3, 4) 1.000000 P( 3, 5) 0.000000 P( 3, 6) 0.000000 P( 4, 7) 0.000000 P( 4, 8) 1.000000 P( 5, 7) 1.000000 P( 5, 8) 0.000000 P( 5, 9) 0.000000 P( 6, 8) 1.000000 P( 6, 9) 0.000000 P( 7, 10) 1.000000 P( 8, 10) 1.000000 P( 9, 10) 1.000000
例7.5 露天矿生产的车辆安排(CMCM2003B)
钢铁工业是国家工业的基础之一,铁矿是钢铁工业的主要原料基地。许多现代化铁矿是露天开采的,它的生产主要是由电动铲车(以下简称电铲)装车、电动轮自卸卡车(以下简称卡车)运输来完成。提高这些大型设备的利用率是增加露天矿经济效益的首要任务。
露天矿里有若干个爆破生成的石料堆,每堆称为一个铲位,每个铲位已预先根据铁含量将石料分成矿石和岩石。一般来说,平均铁含量不低于25%的为矿石,否则为岩石。每个铲位的矿石、岩石数量,以及矿石的平均铁含量(称为品位)都是已知的。每个铲位至多能安置一台电铲,电铲的平均装车时间为5分钟。
卸货地点(以下简称卸点)有卸矿石的矿石漏、2个铁路倒装场(以下简称倒装场)和卸岩石的岩石漏、岩场等,每个卸点都有各自的产量要求。从保护国家资源的角度及矿山的经济效益考虑,应该尽量把矿石按矿石卸点需要的铁含量(假设要求都为29.5%?1%,称为品
页 第43
位限制)搭配起来送到卸点,搭配的量在一个班次(8小时)内满足品位限制即可。从长远看,卸点可以移动,但一个班次内不变。卡车的平均卸车时间为3分钟。
所用卡车载重量为154吨,平均时速28kmh。卡车的耗油量很大,每个班次每台车消耗近1吨柴油。发动机点火时需要消耗相当多的电瓶能量,故一个班次中只在开始工作时点火一次。卡车在等待时所耗费的能量也是相当可观的,原则上在安排时不应发生卡车等待的情况。电铲和卸点都不能同时为两辆及两辆以上卡车服务。卡车每次都是满载运输。
每个铲位到每个卸点的道路都是专用的宽60m的双向车道,不会出现堵车现象,每段道路的里程都是已知的。
一个班次的生产计划应该包含以下内容:出动几台电铲,分别在哪些铲位上;出动几辆卡车,分别在哪些路线上各运输多少次(因为随机因素影响,装卸时间与运输时间都不精确,所以排时计划无效,只求出各条路线上的卡车数及安排即可)。一个合格的计划要在卡车不等待条件下满足产量和质量(品位)要求,而一个好的计划还应该考虑下面两条原则之一:
1.总运量(吨公里)最小,同时出动最少的卡车,从而运输成本最小;
2.利用现有车辆运输,获得最大的产量(岩石产量优先;在产量相同的情况下,取总运量最小的解)。
请你就两条原则分别建立数学模型,并给出一个班次生产计划的快速算法。针对下面的实例,给出具体的生产计划、相应的总运量及岩石和矿石产量。
某露天矿有铲位10个,卸点5个,现有铲车7台,卡车20辆。各卸点一个班次的产量要求:矿石漏1.2万吨、倒装场Ⅰ1.3万吨、倒装场Ⅱ1.3万吨、岩石漏1.9万吨、岩场1.3万吨。
铲位和卸点位置二维示意图如下,各铲位和各卸点之间的距离(公里)如下表: 矿石漏 倒装场Ⅰ 岩场 岩石漏 倒装场Ⅱ 矿石量 岩石量 铁含量 铲位1 5.26 1.90 5.89 0.64 4.42 铲位2 5.19 0.99 5.61 1.76 3.86 铲位3 4.21 1.90 5.61 1.27 3.72 铲位4 4.00 1.13 4.56 1.83 3.16 铲位5 2.95 1.27 3.51 2.74 2.25 铲位6 2.74 2.25 3.65 2.60 2.81 铲位7 2.46 1.48 2.46 4.21 0.78 铲位8 1.90 2.04 2.46 3.72 1.62 铲位9 0.64 3.09 1.06 5.05 1.27 铲位10 1.27 3.51 0.57 6.10 0.50 各铲位矿石、岩石数量(万吨)和矿石的平均铁含量如下表: 铲位1 铲位2 铲位3 铲位4 铲位5 铲位6 铲位7 铲位8 铲位9 铲位10 0.95 1.05 1.00 1.05 1.10 1.25 1.05 1.30 1.35 1.25 1.25 1.10 1.35 1.05 1.15 1.35 1.05 1.15 1.35 1.25 30% 28% 29% 32% 31% 33% 32% 31% 33% 31%
页 第44