TSP问题
问题描述
给定一系列城市和每对城市之间的路费,求解访问每座城市一次,并回到起始城市的最短回路。
本篇记录学习用matlab+yalmip求解TSP问题的过程。
线性规划(张干宗著)中描述:
模型建立
Obj=sum x*d
st:
sum x ( : , j ) = 1
sum x ( i , : ) = 1
ui - uj + (N-1) * xij <= N - 2 where: i != j i,j>=2 防止子环
d为费用矩阵,ui,uj 松弛变量,大于0 即可,N为城市数量:1,2,…N
Matlab 代码
注意,x=binvar(2,2),默认是x是对称变量,即x(2,1)=x(1,2)!!! ,改为x=binvar(2,2,‘full’)即可。(吐血,这个报错改了一天才发现是变量定义错误)
yalmip基本语法
下面给出城市为:2座,3座,4座时的代码(费用矩阵为对称矩阵)
clear
clc
n=4;
if n==4
d=[ 0 1 5 4;
1 0 2 6;
5