旅行商问题数学建模

时间:2025-06-30

黄石理工学院

大型作业

2011—2012 学年 第1学期

目录 一.摘要

二.旅行问题

1. 问题描述 2. 符号说明 3. 模型设计 4. 建模求解 5. 模型分析 6.

三.建模过程及心得体会

四.参考文件

一.摘要

本文是一个围绕旅行商问题和背包问题这两个经典问题的论文。问题一,是一个依赖与每个城市去一次且仅去一次的路线确定问题,问题二类似于问题一。问题三是一个依赖于可背重量限制的背包问题。

关键词:HAMILTON回路 LINGO 最优旅行路线 0-1模型

二.旅行问题 问题描述

某人要在假期内从城市A出发,乘火车或飞机到城市B,C,D,E,F旅游购物。他计划走遍这些城市各一次且仅一次,最后返回城市A。已知城市间的路费数据见附表1,请你设计一条旅行路线使得他的总路费最少。如果临行他因故只能去4个城市,该怎样修订旅行路线? 在城市间旅游时他计划购买照相机,衣服,书籍,摄像机,渔具,白酒,食品,而受航空行李重量的限制以及个人体力所限,所买物品的总重量不能超过15kg,各种物品的价格见附表2.请你为他决策买哪些物品,使所买物品价值最大。

模型设计

首先给出一个定义:设v1,v2,......,vn是图G中的n个顶点,若有一条从某一顶点v1出发,经过各节点一次且仅一次,最后返回出发点v1的回路,则称此回路为HAMILTON回路。 问题1.

分析:这个优化问题的目标是使旅行的总费用最少,要做的决策是如何设定旅行路线,决策受的约束条件:每个城市都必须去,但仅能去一次。按题目所给,将决定变量,目标函数和约束条件用数学符号及式子表示出来,就可得一下模型。 模型建立:

对于6个城市的旅行问题设A,B,C,D,E,F六个城市分别对应v1,v2,v3,v4,v5,v6。假设dij表示从城市i到城市j的费用。定义0-1整数型变量xij=1表示从城市i旅行到城市j,否则xij=0。则旅行问题的数学模型可表示为一个整数规划问题。 min z= s.t.

d

i 1

j

66

ijij

x (i j)

x

i 16

6

ij

=1 (i j;j=1,2,……,6)

x

j 1

ij

=1 (i j;i=1,2,……,6)

(i j;i=2,3,……,6;j=2,3,……6) ui uj nxij n1

其中辅助变量ui(i=2,3,……,6)可以是连续变化的,虽然这些变量在最优解中取普通的整数值(从而在约束条件中,可以限定这些变量为整数)。事实上,在最优解中,ui=访问城市的顺序数。

模型求解

运用LINGO,输入程序:

MODEL:

!Traveling Sales Problem for the cities of six city; SETS:

CITY / 1..6/: U; ! U( I) = sequence no. of city;

LINK( CITY, CITY): COST, ! The cost matrix; X; ! X( I, J) = 1 if we use link I, J; ENDSETS

DATA: !Cost matrix, it need not be symmetric; COST= 0 120 250 330 210 150 120 0 98 350 225 300 250 98 0 520 430 280 330 350 520 0 270 185 210 225 430 270 0 420 150 300 280 185 420 0 ; ENDDATA

N= @SIZE( CITY);

MIN= @SUM( LINK: COST * X);

@FOR( CITY( K): !It must be entered; @SUM( CITY( I)| I #NE# K: X( I, K)) = 1; ! It must be departed;

@SUM( CITY( J)| J #NE# K: X( K, J)) = 1; !Weak form of the subtour breaking constrains; !These are not very powerful for large problems; @FOR( CITY( J)| J #GT# 1 #AND# J #NE# K:

U(J)>=U(K)+X(K,J)-(N-2)*(1-X(K,J))+(N-3)*X(J,K));); @FOR( LINK: @BIN( X)); !Make the X's 0/1; ! For the first and last stop we know...; @FOR( CITY( K)| K #GT# 1:

U( K) <= N - 1 - (N - 2) * X( 1, K); U( K) >= 1 + ( N - 2) * X( K, 1)); END

得到结果: 总费用为1163

路线:A-B-C-F-D-E-A

问题2.

临时因故只能去4个城市,那么应该怎样安排旅行路线。

分析:在B,C,D,E,F五个城市中选4个城市,显然有5种可能,按照问题一中的模型,将费用矩阵稍作修改,运用LINGO分别解除5种可能的费用,进行比较,即得结果。 (1)选取B,D,E,F,计算旅行费用:

MODEL:

!Traveling Sales Problem for the cities of six city; SETS:

CITY / 1..5/: U; ! U( I) = sequence no. of city; LINK( CITY, CITY): COST, ! The cost matrix; X; ! X( I, J) = 1 if we use link I, J; ENDSETS

DATA: !Cost matrix, it need not be symmetric; COST= 0 120 330 210 150 120 0 350 225 300 330 350 0 270 185 210 225 270 0 420 150 300 185 420 0 ; ENDDATA

N= @SIZE( CITY);

MIN= @SUM( LINK: COST * X);

@FOR( CITY( K): !It must be entered; @SUM( CITY( I)| I #NE# K: X( I, K)) = 1; ! It must be departed;

@SUM( CITY( J)| J #NE# K: X( K, J)) = 1; !Weak form of the subtour breaking constrains; !These are not very powerful for large problems; @FOR( CITY( J)| J #GT# 1 #AND# J #NE# K:

U(J)>=U(K)+X(K,J)-(N-2)*(1-X(K,J))+(N-3)*X(J,K));); @FOR( LINK: @BIN( X)); !Make the X's 0/1; ! For the first and last stop we know...; @FOR( CITY( K)| K #GT# 1:

U( K) <= N - 1 - (N - 2) * X( 1, K); U( K) >= 1 + ( N - 2) * X( K, 1)); END

得到结果: 总费用:950

路线:A-B-E-D-F-A

(2)选取B,C,E,F,计算旅行费用:

MODEL:

!Traveling Sales Problem for the cities of six city; SETS:

CITY / 1..5/: U; ! U( I) = sequence no. of city; LINK( CITY, CITY): COST, ! The cost matrix; X; ! X( I, J) = 1 if we use link I, J; ENDSETS…… 此处隐藏:6469字,全部文档内容请下载后查看。喜欢就下载吧 ……

旅行商问题数学建模.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

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