【人工智能】高级搜索技术(模拟退火搜索算法和遗传算法解决旅行商问题)

目录

一、旅行商问题

[1. 需求分析](#1. 需求分析)

[2. 数据结构、功能模块设计与说明](#2. 数据结构、功能模块设计与说明)

[2.1 数据结构](#2.1 数据结构)

(1)模拟退火搜索算法

(2)遗传算法

[2.2 功能模块设计](#2.2 功能模块设计)

(1)模拟退火搜索算法

(2)遗传算法

[3. 核心代码与测试结果说明](#3. 核心代码与测试结果说明)

(1)模拟退火搜索算法

(2)遗传算法

[4. 心得体会](#4. 心得体会)


一、旅行商问题

现有一个商人,准备从广州出发,经过广东省的各个城市再回到广州,每个城市只经过一次,城市分布情况见图1所示。请使用模拟退火搜索算法和遗传算法寻找一条线路,使得商人按上述要求走过的路径之和最短,并比较两种方法所使用的时间和最终的行走路径的优越性。各个城市之间的距离请通过上网搜索确定。

图1 广东省市级城市分布图

1. 需求分析

使用模拟退火搜索算法和遗传算法寻找一条线路,使得商人从广州出发,经过广东省的各个城市再回到广州,每个城市只经过一次且路径之和最短。

2. 数据结构、功能模块设计与说明

2.1 数据结构

(1)模拟退火搜索算法

① 分别有初始温度、冷却因子、终止温度、每个温度内循环次数、城市数量,数据结构如下

② 字符串数组保存城市名称

③ Dist数组存储广东省内各城市之间的距离:

④ 用ArrayList存储路径,路径上的一个城市用一个整形保存它在cities数组中对应的下标。

(2)遗传算法

① 下面几张截图和上面算法一样

② 每一个个体用一个类表示,保存当前个体的路径数组和适应度。

③ 适应度的计算:适应度=1/路径距离。路径越短,适应度越高,越容易被接受。

2.2 功能模块设计

(1)模拟退火搜索算法

流程图如下:

(2)遗传算法

① 总流程图:

说明:这个遗传算法我的编码就是这个路径上各城市对应在cities数组中的下标。以下是各重要的子模块流程图。

② 子模块1:选择适应度高的染色体流程图

③ 子模块2:生成累积概率表流程图

④ 子模块3:轮盘选择法流程图

⑤ 子模块4:交叉操作流程图

⑥ 子模块5:变异操作流程图

3. 核心代码与测试结果说明

(1)模拟退火搜索算法

① 控制温度下降:外循环温度,内循环每个温度遍历次数

② 初始化路径列表

③ 计算整数列表表示的路径上的节点距离之和

④ 概率函数:判断是否接受新的解

⑤ 模拟退火算法测试结果:

结果为2904

(2)遗传算法

① 主函数

② 初始化种群

③ 计算适应度

④ 选择适应度高的个体

⑤ 计算累积概率表

⑥ 交叉

部分代码:

⑦ 变异

遗传算法测试结果:

我设置的初始个体数是500个,这里第一代就已经找到最终结果了,和模拟退火一样是2904

4. 心得体会

(1)两种算法在相近的运行时间内,模拟退火的误差维持在5%左右,稍差于遗传算法。

(2)模拟退火是采用单个个体进行优化,遗传算法是一种群体性算法。

(3)模拟退火与遗传算法都对初解有一定的依赖性,好的初解有利于最终解。

(4)遗传算法可以采用并行计算来加快算法运行。

相关推荐
老陈头聊SEO1 小时前
生成引擎优化(GEO)在内容营销中的新机遇与应用洞察
其他·搜索引擎·seo优化
Zilliz Planet1 天前
官宣 | Milvus 2.6云上GA:三层存储降本85% 、速度快ES 4-7 倍,多数据类型支持
大数据·elasticsearch·搜索引擎·全文检索·milvus
峥嵘life1 天前
Android16 系统每月Google安全补丁导入说明
大数据·elasticsearch·搜索引擎
天草二十六_简村人1 天前
ES索引检索课程名称时,同时支持模糊搜索和精准搜索
大数据·后端·elasticsearch·搜索引擎·全文检索
skywalk81631 天前
bingle,一个小型搜索引擎项目第一阶段:基本实现(使用Trae自动编程)
搜索引擎·baigle
铭毅天下1 天前
从软考开始考 Elasticsearch 说开去 ......
大数据·elasticsearch·搜索引擎·全文检索
AI营销资讯站1 天前
原圈科技AI营销专家韩剑:不懂AI营销,将错失2026增长先机
人工智能·搜索引擎
小兜全糖(xdqt)1 天前
elasticsearch 大批量index数据的时候提高性能
大数据·elasticsearch·搜索引擎
黑客思维者2 天前
2025年AI垃圾(AI Slop)现象综合研究报告:规模、影响与治理路径
人工智能·搜索引擎·百度
张彦峰ZYF2 天前
探索数据的力量:Elasticsearch中指定链表字段的统计查询记录
搜索引擎·性能优化·es