SA:利用SA算法解决TSP(数据是14个虚拟城市的横纵坐标)问题——Jason niu

%SA:利用SA算法解决TSP(数据是14个虚拟城市的横纵坐标)问题——Jason niu
X = [16.4700   96.1000
     16.4700   94.4400
     20.0900   92.5400
     22.3900   93.3700
     25.2300   97.2400
     22.0000   96.0500
     20.4700   97.0200
     17.2000   96.2900
     16.3000   97.3800
     14.0500   98.1200
     16.5300   97.3800
     21.5200   95.5900
     19.4100   97.1300
     20.0900   92.5500];

D = Distance(X);
N = size(D,1);    

T0 = 1e10;
Tend = 1e-30;
L = 2;
q = 0.9;
Time = ceil(double(solve([num2str(T0) ‘*(0.9)^x = ‘,num2str(Tend)])));
count = 0;
Obj = zeros(Time,1);
track = zeros(Time,N); 

S1 = randperm(N);
DrawPath(S1,X)
title(‘利用自定义函数绘制TSP问题的初始路径(随机产生)—Jason niu‘)
disp(‘初始种群中的一个随机值:‘)
OutputPath(S1);
Rlength = PathLength(D,S1);
disp([‘总距离:‘,num2str(Rlength)]);

while T0 > Tend
    count = count + 1;
    temp = zeros(L,N+1);

    S2 = NewAnswer(S1);  

    [S1,R] = Metropolis(S1,S2,D,T0); 

    if count == 1 || R < Obj(count-1)
        Obj(count) = R;
    else
        Obj(count) = Obj(count-1);
    end
    track(count,:) = S1;
    T0 = q * T0;
end

figure
plot(1:count,Obj)
xlabel(‘迭代次数‘)
ylabel(‘距离‘)
title(‘SA:显示SA算法对TSP问题的优化过程(适应度函数)—Jason niu‘)

DrawPath(track(end,:),X)
title(‘SA:利用SA对TSP问题优化,绘制出利用SA算法优化后的最优路径图—Jason niu‘)
%% IX. 输出最优解的路线和总距离
disp(‘最优解:‘)
S = track(end,:);
p = OutputPath(S);
disp([‘总距离:‘,num2str(PathLength(D,S))]);

原文地址:https://www.cnblogs.com/yunyaniu/p/8494289.html

时间: 2024-08-17 21:06:07

SA:利用SA算法解决TSP(数据是14个虚拟城市的横纵坐标)问题——Jason niu的相关文章

蚁群算法解决TSP问题

一.论述 1.算法来源 蚁群算法的基本原理来源于自然界蚂蚁觅食的最短路径原理,根据昆虫学家的观察,发现自然界的蚂蚁虽然视觉不发达,但它可以在没有任何提示的情况下找到从食物源到巢穴的最短路径,并且能在环境发生变化(如原有路径上有了障碍物)后,自适应地搜索新的最佳路径. 2.单个蚂蚁寻找路径 正反馈: 单个的蚂蚁为了避免自己迷路,它在爬行时,同时也会释放一种特殊的分泌物--信息素(Pheromone),而且它也能觉察到一定范围内的其它蚂蚁所分泌的信息素,并由此影响它自己的行为.当一条路上的信息素越来

(原创)数据结构之利用KMP算法解决串的模式匹配问题

给定一个主串S(长度<=10^6)和一个模式T(长度<=10^5),要求在主串S中找出与模式T相匹配的子串,返回相匹配的子串中的第一个字符在主串S中出现的位置. 输入格式: 输入有两行: 第一行是主串S: 第二行是模式T. 输出格式: 输出相匹配的子串中的第一个字符在主串S中出现的位置.若匹配失败,输出0. 输入样例: 在这里给出一组输入.例如: aaaaaba ba 输出样例: 在这里给出相应的输出.例如: 6 解题思路:串的模式匹配有两种:一种是BF算法,一种是KMP算法:基于这道题给的数

利用多元线性回归法,从大量数据中提取五个因变量来预测一个自变量—Jason niu

from numpy import genfromtxt from sklearn import linear_model datapath=r"Delivery_Dummy.csv" data = genfromtxt(datapath,delimiter=",") x = data[1:,:-1] y = data[1:,-1] print (x) print (y) mlr = linear_model.LinearRegression() mlr.fit(x

Python爬虫技术(从网页获取图片)+HierarchicalClustering层次聚类算法,实现自动从网页获取图片然后根据图片色调自动分类—Jason niu

网上教程太啰嗦,本人最讨厌一大堆没用的废话,直接上,就是干! 网络爬虫?非监督学习? 只有两步,只有两个步骤? Are you kidding me? Are you ok? 来吧,follow me, come on! 第一步:首先,我们从网上获取图片自动下载到自己电脑的文件内,如从网址,下载到F:\File_Python\Crawler文件夹内,具体代码请查看http://www.cnblogs.com/yunyaniu/p/8244490.html 第二步:我们利用非监督学习的Hierar

利用非线性回归,梯度下降法求出学习参数θ,进而求得Cost函数最优值——Jason niu

import numpy as np import random def genData(numPoints,bias,variance): x = np.zeros(shape=(numPoints,2)) y = np.zeros(shape=(numPoints)) for i in range(0,numPoints): x[i][0]=1 x[i][1]=i y[i]=(i+bias)+random.uniform(0,1)%variance return x,y def gradie

一致性哈希算法——算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据

一致性哈希算法 摘自:http://blog.codinglabs.org/articles/consistent-hashing.html 算法简述 一致性哈希算法(Consistent Hashing)最早在论文<Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web>中被提出.简单来说,一致性哈希将整个哈希值空间组织成一

利用bloom filter算法处理大规模数据过滤

Bloom Filter是由Bloom在1970年提出的一种快速查找算法,通过多个hash算法来共同判断某个元素是否在某个集合内.可以用于网络爬虫的url重复过滤.垃圾邮件的过滤等等. 它相比hash容器的一个优势就是,不需要存储元素的实际数据到容器中去来一个个的比较是否存在. 只需要对应的位段来标记是否存在就行了,所以想当节省内存,特别适合海量的数据处理.并且由于省去了存储元素和比较操作,所以性能也比基于hash容器的高了很多. 但是由于bloom filter没有去比较元素,只通过多个has

利用谱聚类算法解决非完全图的聚类

在处理非完全图的聚类时候,很难找到一个有效的聚类算法去做聚类. 对于下图来说,10号点和15号点的位置相隔并不是那么近,如用普通聚类算法对下图做聚类,通常会把10号点和15号点聚在一个类上,所以一般的聚类效果并没有那么好. 而谱聚类,就很能很好的处理这类问题. 下面我们来重点介绍谱聚类 谱聚类(SpectralClustering),就是要把样本合理地分成两份或者K份.从图论的角度来说,谱聚类的问题就相当于一个图的分割问题.即给定一个图G = (V, E),顶点集V表示各个样本,带权的边表示各个

利用MySQL数据库如何解决大数据量存储问题?

提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如何做,对于一个存储设计,必须考虑业务特点,收集的信息如下:1.数据的容量:1-3年内会大概多少条数据,每条数据大概多少字节: 2.数据项:是否有大字段,那些字段的值是否经常被更新: 3.数据查询SQL条件:哪些数据项的列名称经常出现在WHERE.GROUP BY.ORDER BY子句中等: 4.数据更新类SQL条件:有多少列经常出现UPDATE或DELETE 的WHERE子句中: 5.SQL量的统计比,