使用模拟退火算法解决旅行家问题——C

本文介绍了如何使用模拟退火算法解决旅行商问题,这是计算智能课程的一项作业。文章提供了C语言实现的代码,并指出该代码未进行进一步优化,但突出了模拟退火算法的主要思想,即在搜索最优解的过程中允许接受较差的解决方案以扩大搜索范围。
摘要由CSDN通过智能技术生成

旅行家问题:

旅行商问题(Travelling Salesman Problem, 简记TSP,亦称货郎担问题):设有n个城市和距离矩阵D=[dij],其中dij表示城市i到城市j的距离,i,j=1,2 … n,则问题是要找出遍访每个城市恰好一次的一条回路并使其路径长度为最短。

计算智能课的一次作业,要求使用模拟退火算法去进行旅行家问题的求解,主要参数有三个,t,l,rate
退火算法最特殊的地方在于其在过程中对比较差的结果也有选择的可能性,扩大了搜索解的范围,关于退火算法的具体描述可以百度。

代码如下(没有进行进一步的优化 有些地方不够好 重要的模拟退火的思路)

代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <math.h>
#define NUM 5
using namespace std;

int D[5][5]=
{
   
    {
   0,15,13,27,36},
    {
   15,0,18,177,66},
    {
   13,18,0,77,36},
    {
   27,177,77,0,76},
    {
   36,66,36,76,0}
};
int* Plist=(int *)malloc(5*sizeof(int));
int t,L
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值