对于2013 的碎片拼接问题的附件一与附件二,基于旅行商算法的碎片拼接问题,寻找最优哈密顿圈
先利用matlab计算出他的边权矩阵,再用lingo规划模型,求出最优的哈密顿圈,最终可以得到正确的排序,利用人工干预,找到 初末位置,即可还原。
matlab部分代码(求边权矩阵):
clear
close all
clc
dirname='C:\Users\Grin\Desktop\数学建模各种文档\2013年赛题\B\附件1';
files=dir([dirname,'\*.bmp']);
Num_file=numel(files);
I=cell(1,Num_file)
for k = 1:19
I{k} = imread([dirname '\' files(k).name]);
end
for k=1:19
J(k)=graythresh(I{k});
P{k}=im2bw(I{k},J(k));
end
for k=1:19
[le,n]=size(P{k});
left{k}=P{k}(:,1);
right{k}=P{k}(:,n);
end
for k=1:19
for n=1:19
if n==k
else
a(n,k)=sum(abs(left{n}-right{k}));
end
end
end
lingo部分代码:
model:
sets:
cities/1..19/:u;
link(cit