基于旅行商模型的碎纸片拼接复原

本文介绍了如何使用旅行商算法解决2013年碎片拼接问题。通过MATLAB计算边权矩阵,并运用LINGO建立规划模型,寻找最优哈密顿圈,确定正确顺序。结合人工干预,确定起始和结束位置,实现碎纸片的复原。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于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(cities,cities):

distance,x;endsets

data:

distance=

    ;在此输入matlab计算的边权值矩阵

enddata

n=@size(cities);

min=@sum(link(i,j)|i#ne#j:distance(i,j)*x(i,j));

@for(cities
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值