LINGO使用教程 - 图文(10)

2019-08-31 21:03

Lingo使用教程

ui1?ui2?n?n?1?n?1ui2?ui3?n?n?1?n?1??????????uik?ui1?n?n?1?n?1(ⅱ)非总巡回上的边

?uir?uj?n?2?n?1,r?1,2,?,n?2,j??2,3,?,n???ir,ir?1? ?????u?u?n?2?n?1,j?2,3,?,n?ijr?in?1

从而结论(2)得证。

这样我们把TSP转化成了一个混合整数线性规划问题。 minZ?nn??cxi?1j?1,i?jijijn?xij?1,j?1,2,?,n??i?1 n?xij?1,i?1,2,?,n?s.t.?j?1?u?u?nx?n?1,2?i?j?njij?ixij?0,1,i,j?1,2,?,n??ui?0,i?2,3,?,n?显然,当城市个数较大(大于30)时,该混合整数线性规划问题的规模会很大,从而

??给求解带来很大问题。TSP已被证明是NP难问题,目前还没有发现多项式时间的算法。对于小规模问题,我们求解这个混合整数线性规划问题的方式还是有效的。

TSP是一个重要的组合优化问题,除了有直观的应用外,许多其它看似无联系的优化问题也可转化为TSP。例如:

问题1 现需在一台机器上加工n个零件(如烧瓷器),这些零件可按任意先后顺序在机器上加工。我们希望加工完成所有零件的总时间尽可能少。由于加工工艺的要求,加工零件j时机器必须处于相应状态sj(如炉温)。设起始未加工任何零件时机器处于状态s0,且当

所有零件加工完成后需恢复到s0状态。已知从状态si调整到状态sj(i?j)需要时间cij。零件j本身加工时间为pj。为方便起见,引入一个虚零件0,其加工时间为0,要求状态为s0,

则{0,1,2,…,n}的一个圈置换π就表示对所有零件的一个加工顺序,在此置换下,完成所有加工所需要的总时间为

nnn?(c?i?0i(i)n?p?(i))??c?i?0i(i)??pj?0j

由于

?pj?0j是一个常数,故该零件的加工顺序问题变成TSP。

!旅行售货员问题; model: sets:

city / 1.. 5/: u; link( city, city): dist, ! 距离矩阵;

第46页(共59页)

Lingo使用教程

x;

endsets

n = @size( city);

data: !距离矩阵,它并不需要是对称的;

dist = @qrand(1); !随机产生,这里可改为你要解决的问题的数据; enddata !目标函数;

min = @sum( link: dist * x); @FOR( city( K): !进入城市K;

@sum( city( I)| I #ne# K: x( I, K)) = 1; !离开城市K;

@sum( city( J)| J #ne# K: x( K, J)) = 1; );

!保证不出现子圈;

@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

第47页(共59页)

Lingo使用教程

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 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到另一点pj的距离用cij表示,如果pi到pj没有弧联结,则规定cij???,又规定ciii?0(1?i?N),指定一个终点pN,要求从pi点出发到pN的最短路线。这里我们用动态

规划方法来做。用所在的点pi表示状态,决策集合就是除pi以外的点,选定一个点pj以后,得到效益cij并转入新状态pj,当状态是pN时,过程停止。显然这是一个不定期多阶段决

第48页(共59页)

Lingo使用教程

策过程。

定义f(i)是由pi点出发至终点pN的最短路程,由最优化原理可得

cij?f(j),i?1,2,?,N?1??f(i)?minj ???f(N)?0这是一个函数方程,用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 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

??

第49页(共59页)

Lingo使用教程

计算的部分结果为:

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

所用卡车载重量为154吨,平均时速28km/h。卡车的耗油量很大,每个班次每台车消

第50页(共59页)


LINGO使用教程 - 图文(10).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:成都九中高2014届12月生物考试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: