lingo8.0完美教程

发布时间 : 星期日 文章lingo8.0完美教程更新完毕开始阅读

10

20

本问题实际上就是求各城镇之间的最小生成树问题,对于此问题,有一个专门的算法: Kruskal 算法,它是“避圈法”的推广。在这里,我们将它转化为一个0-1 规划问题来求解, 但是,当问题的顶点数目较大的时候,计算的速度可能比较慢。

首先得到问题的数学模型,不失一般性:设dij是两点i, j 之间的距离, 0,1 ij x ??,并假 设顶点1 是生成树的根,则: min

( , )

, ij ij

i j E

d x

???

??, s.t. 1 1 j

j V

x

???

????,(根至少有一条边连接到其他的顶点) 1, 1 ji

j V

x i

???

??????(除根外,每个点只有一条边进入) (各边不能构成圈) 相应的LINGO 程序: model:

sets:

cities/1..10/:level;

link(cities,cities):distance,x; endsets data:

distance=0 8 5 9 12 14 12 16 17 22 8 0 9 15 16 8 11 18 14 22 5 9 0 7 9 11 7 12 12 17 9 15 7 0 3 17 10 7 15 15 12 16 9 3 0 8 10 6 15 15 14 8 11 17 8 0 9 14 8 16 12 11 7 10 10 9 0 8 6 11 16 18 12 7 6 14 8 0 11 11 17 14 12 15 15 8 6 11 0 10 22 22 17 15 15 16 11 11 10 0; enddata

n=@size(cities);

min=@sum(link(i,j)|i #ne# j:distance(i,j)*x(i,j)); @sum(cities(i)|i #gt# 1:x(1,i))>=1; @for(cities(i)|i #gt# 1:

@sum(cities(j)|j #ne# i:x(j,i))=1;

@for(cities(j)|j #gt# 1 #and# j #ne# i:

level(j)>=level(i)+x(i,j)-(n-2)*(1-x(i,j))+(n-3)*x(j,i); );

@bnd(1,level(i),99999);

level(i)<=n-1-(n-2)*x(1,i); );

@for(link:@bin(x)); end

21

3 露天矿生产的车辆安排(CMCM2003B)

钢铁工业是国家工业的基础之一,铁矿是钢铁工业的主要原料基地。许多现代化铁矿是 露天开采的,它的生产主要是由电动铲车(以下简称电铲)装车、电动轮自卸卡车(以下简 称卡车)运输来完成。提高这些大型设备的利用率是增加露天矿经济效益的首要任务。 露天矿里有若干个爆破生成的石料堆,每堆称为一个铲位,每个铲位已预先根据铁含量 将石料分成矿石和岩石。一般来说,平均铁含量不低于25%的为矿石,否则为岩石。每个铲 位的矿石、岩石数量,以及矿石的平均铁含量(称为品位)都是已知的。每个铲位至多能安 置一台电铲,电铲的平均装车时间为5 分钟。

卸货地点(以下简称卸点)有卸矿石的矿石漏、2 个铁路倒装场(以下简称倒装场)和 卸岩石的岩石漏、岩场等,每个卸点都有各自的产量要求。从保护国家资源的角度及矿山的 经济效益考虑,应该尽量把矿石按矿石卸点需要的铁含量(假设要求都为29.5% ±?1%,称为

品位限制)搭配起来送到卸点,搭配的量在一个班次(8 小时)内满足品位限制即可。从长 远看,卸点可以移动,但一个班次内不变。卡车的平均卸车时间为3 分钟。

所用卡车载重量为154 吨,平均时速28 km h。卡车的耗油量很大,每个班次每台车消 耗近1 吨柴油。发动机点火时需要消耗相当多的电瓶能量,故一个班次中只在开始工作时点 火一次。卡车在等待时所耗费的能量也是相当可观的,原则上在安排时不应发生卡车等待的 情况。电铲和卸点都不能同时为两辆及两辆以上卡车服务。卡车每次都是满载运输。 每个铲位到每个卸点的道路都是专用的宽60m的双向车道,不会出现堵车现象,每段 道路的里程都是已知的。

一个班次的生产计划应该包含以下内容:出动几台电铲,分别在哪些铲位上;出动几辆 卡车,分别在哪些路线上各运输多少次(因为随机因素影响,装卸时间与运输时间都不精确, 所以排时计划无效,只求出各条路线上的卡车数及安排即可)。一个合格的计划要在卡车不 等待条件下满足产量和质量(品位)要求,而一个好的计划还应该考虑下面两条原则之一: 1.总运量(吨公里)最小,同时出动最少的卡车,从而运输成本最小;

2.利用现有车辆运输,获得最大的产量(岩石产量优先;在产量相同的情况下,取总运 量最小的解)。

请你就两条原则分别建立数学模型,并给出一个班次生产计划的快速算法。针对下面的 实例,给出具体的生产计划、相应的总运量及岩石和矿石产量。

某露天矿有铲位10 个,卸点5 个,现有铲车7 台,卡车20 辆。各卸点一个班次的产量 要求:矿石漏1.2 万吨、倒装场Ⅰ1.3 万吨、倒装场Ⅱ1.3 万吨、岩石漏1.9 万吨、岩场1.3

万吨。

铲位和卸点位置二维示意图如下,各铲位和各卸点之间的距离(公里)如下表:

铲位1 铲位2 铲位3 铲位4 铲位5 铲位6 铲位7 铲位8 铲位9 铲位10

矿石漏5.26 5.19 4.21 4.00 2.95 2.74 2.46 1.90 0.64 1.27 倒装场Ⅰ1.90 0.99 1.90 1.13 1.27 2.25 1.48 2.04 3.09 3.51 岩场5.89 5.61 5.61 4.56 3.51 3.65 2.46 2.46 1.06 0.57 岩石漏0.64 1.76 1.27 1.83 2.74 2.60 4.21 3.72 5.05 6.10 倒装场Ⅱ4.42 3.86 3.72 3.16 2.25 2.81 0.78 1.62 1.27 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 22

量 铁 含 量

30% 28% 29% 32% 31% 33% 32% 31% 33% 31% 模型分析:

本题是经典的运输问题的一种变形和扩展,但与经典的运输问题有明显的以下不同: (1)这是运输矿石与岩石两种物资的问题; (2)属于产量大于销量的不平衡运输问题;

(3)为了完成品位约束,矿石要搭配运输; (4)产地和销地均有单位时间的流量限制

(5)运输车辆只有一种,每次都是满载运输,154 吨/次;

(6)铲位数多于铲车数量意味要最优的选择不多于7 个产地作为最后结果中的产 地;

(7)最后求出各条线路上的派出车辆数及安排。

每个运输问题对应着一个线性规划问题,以上不同点对它的影响不同,(1),(2),(3) (4)条可以通过变量设计、调整约束条件来实现;(5)条是整数要求将其变为整数线性规 划;(6)条不容易用线性模型来实现,一种简单的办法就是从7 C10 ?120个整数规划中筛选出

最优的即可;(7)条可以在(6)的基础上算出各条线路上的最少派出车辆次数,在给出具 体安排即完成全部计算。然而这是一个实际问题,为了及时指挥生产,题中要求算法是快速 算法,而整数规划问题的本质是NPC 问题,要求在较短时间内算出50 个变量的整数规划问 题就不一定能够办得到,从另外得一个角度看,这是一个二层规划问题,第二层是组合优化, 如果求最优解计算量太大,所以问题转为求一个近似解。

调用120 次整数规划可用三种方法避免:1,先不考虑电铲数量约束运行整数线性规划, 再对解中运量最少的几个铲位进行筛选;2,在整数线性规划的铲车约束中调用sign 函数来

实现;3,增加10 个0-1 变量来标志每个铲位是否有产量。

从每个运输问题都有目标函数来看,这又是一个多目标规划的问题,第一问的主要目 标有1 重载路程最销2 总路程最小3 出动卡车数最少。仔细分析可以看出,1,2 在第一层, 3 在第二层,1 和2 基本等价,于是只用1 于第一层,对其结果在第二层中派最少的卡车, 实现全局目标生产成本最小,第二问的主要目标有:4 岩石产量最大,5 矿石产量最大 6 运量最小。

合理的假设主要有:

23

(1)卡车在一个班次中不应发生等待或者熄火后再启动的情况。

(2)在铲位或卸点出由两条线路以上造成的冲突问题面前,我们认为只要平均等待 时间能够完成任务,就认为不冲突,不进行具体排时计划方面的讨论。 (3)空载与重载的速度都是28km/s,耗油相差却很大 (4)卡车可提前推出系统等等 模型建立:

我们将只考虑本题第一问的模型,首先定义数学符号: ij x 为从i 号铲位到j 号卸点的石料运量;

c 为从i 号铲位到j 号卸点的距离(单位:km);

ij T 为从i 号铲位到j 号卸点路线上运行一个周期平均所需时间(单位:min); ij A 为从i 号铲位到j 号卸点最多可以同时运行的卡车数(单位:辆);

ij

B 为从i 号铲位到j 号卸点路线上一辆车最多可以运行的次数(单位:次); i p 为i 号铲位的矿石铁含量(%);p=(30,28,29,32,31,33,32,31,33,31)

ij

q 为j 号卸点的任务需求(单位:T)q=(1.2 1.3 1.3 1.9 1.3)*10000 i ck 为i 号铲位的铁矿石储量(单位:万吨) i cy 为i 号铲位的岩石储量(单位:万吨) i f 为描述第i 号铲位是否使用,为0-1 变量

j

目标函数和约束条件的分析:

(1)目标函数取为重载运输时的运量(t.km)最小(因ij x 代表整数车次数,乘154 后 等于运量;再乘以运输距离等于吨公里)。

(2)道路能力约束:由于一个电铲(卸点)不能同时为两辆卡车服务,所以一条线路上 最多能同时运行的卡车数是有限的,卡车在i 号铲位到j 号卸点路线上运行一个周期平均所 需的时间为 3 5(min) ij

T ??i j ×?????到距离2 平均速度

由于装车时间5min 大于卸车时间3min,所以可以分析出这条线路上卡车在不等待的条件 下最多能同时运行的卡车数为: [ ] 5

ij ij

T

A ??,同样可分析出每辆卡车一个班次中在这条路线 上最多可运行的次数为 8 60 ( 1) 5 [ ij]

ij

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