运筹优化学习05:Lingo进行TSP路径优化源码分享与经典文献分析

本文主要是介绍运筹优化学习05:Lingo进行TSP路径优化源码分享与经典文献分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1 TSP经典模型

1.1 DFJ模型

1.2 MTZ模型

2 模型分析与经典文献赏析

3 模型拓展与Lingo源码

3.1 拓展模型表述

3.2 Lingo源代码


1 TSP经典模型

1.1 DFJ模型

引文格式:

G.B. Dantzig, D.R. Fulkerson and S.M. Johnson, "Solution of a large scale traveling salesman problem", Oper. Res. 2, 393-410(1954).

模型表述:

 

1.2 MTZ模型

引文格式:

C.E. Miller, A.W. Tucker and R.A. Zemlin, "Integer programming formulations and traveling salesman problems", J. ACM 7,
326-329 (1960).

数学表述:

引入了自由变量u_{i}来消除子路径

是一个比较弱的LP松弛,其可行解并不是一个凸多边形平面

2 模型分析与经典文献赏析

DFJ模型可以较为容易的拓展到CVRP中,但拓展到DVRP中就不那么容易了更不用说要拓展到VRPTW中了

MTZ模型的子路径消除约束可与其他强约束合并

原文赏读:

3 模型拓展与Lingo源码

3.1 拓展模型表述

3.2 Lingo源代码

MODEL: SETS: 
CITY / 1.. 6/: U; ! U( I) = 顾客编号序列; 
LINK( CITY, CITY): DIST, ! 距离矩阵; X; ! 二进制变量,根据链接(i,j)是否被访问决定X( I, J) = 1或0 ;
ENDSETS DATA: !距离矩阵,可以是对称矩阵也可以使非对称矩阵; 
DIST =0 56 35 21 51 60 
56 0 21 57 78 70 
35 21 0 36 68 68 
21 57 36 0 51 61 
51 78 68 51 0 13 
60 70 68 61 13 0; 
ENDDATA 
!模型参考文献:Desrochers, M., & Laporte, G. (1991). Improvements and extensions to the Miller-Tucker-Zemlin subtour elimination constraints. Operations Research Letters, 10(1), 27–36.; 
!doi:10.1016/0167-6377(91)90083-2?;
N = @SIZE( CITY); 
MIN = @SUM( LINK: DIST * X); 
@FOR( CITY( K): @SUM( CITY( I)| I #NE# K: X( I, K) ) = 1; ! 必须到达顾客点k; @SUM( CITY( J)| J #NE# K: X( K, J) ) = 1; ! 必须从顾客点k离开 @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)); ! 二进制变量约束;
@FOR( CITY( K)| K #GT# 1: U( K) <= N - 1 - ( N - 2) * X( 1, K); U( K) >= 1 + ( N - 2) * X( K, 1)); 
END 

 

这篇关于运筹优化学习05:Lingo进行TSP路径优化源码分享与经典文献分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/336081

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类