
启发算法
明湖底的炼丹炉
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
遗传算法(GA)
前言遗传算法是典型的智能算法,其本质也是通过不断搜索从而得到最好的解决方案,但是与随机搜索不同,遗传算法的搜索具有一定的智能性,在搜索时它更倾向于选择适应度更优的解决方案,以下是遗传算法的一个基本流程图:在上述基本遗传算法的基础上,可以在初始种群、个体选择、交叉方式、变异方式以及局部优化等方面作进一步调整,从而达到更好的效果。搜索类算法改进的本质基本都是让搜索具有全局性或者使得每次搜索的解更优质。构造使用遗传算法求解旅行商问题最主要的问题是编码和交叉,要保证交叉过程中尽量不产生坏解且交叉能够带来足原创 2021-08-22 12:45:25 · 1990 阅读 · 0 评论 -
改进贪心算法
前言贪心算法很容易陷入局部最优,基本无法找到全局最优解,为了得到更好的解,可以考虑在贪心算法求得解的基础上,对解进行进一步改进,接下来将使用爬山法对贪心算法的解进行改进。爬山法爬山法是一种局部搜索方法,在有一个解决方案的基础上,我们可以对解决方案进行适当地改变,这种操作也称之为领域操作,如果改变后的解决方案优于改变前的解决方案,则保持这种改变,否则做还原操作。爬山法是典型的局部搜索算法,它只接受好的改变,拒绝坏的改变,这有很大的局限性。与之相对应的是模拟退火算法,他以一定的概率接受坏的改变,可以看作一原创 2021-08-21 16:44:40 · 2332 阅读 · 2 评论 -
贪心算法(greedy algorithm)
前言贪心算法是最基础的启发算法之一,原理简单,操作方便,其基本思想是每一步都作出当前的最优决策,它基本能够保证解的质量不会太差,但是对于解空间足够大的组合优化问题,要找到最优解基本不可能。在TSP问题中,贪婪的定义是每次都从当前城市选择一个距离最近的城市。求解使用ortools求解TSP问题,与之前整数规划使用的为同一数据。import pandas as pdfrom ortools.linear_solver import pywraplp# 数据distance = pd.read_t原创 2021-08-21 16:08:24 · 507 阅读 · 0 评论 -
TSP问题
前言TSP问题是广为人知的组合优化问题,它易于描述,但是难以求解。基于TSP问题的特性,决定使用通过TSP问题来学习各类启发算法,比较不同启发算法在旅行商问题上的表现。问题TSP问题可以描述为:现有一些节点,节点和节点之间均可相连形成边,节点之间的边存在距离,需要找到一个遍历方案先后访问所有的点,使的遍历的总距离最短。模型旅行商问题可以建模为一个纯整数规划模型:目标函数最小化总距离,约束1-2保证每个节点都能进出一次,约束3保证不会出现多个圈,约束4-5保证便利顺序属于0~n-1,约束6-原创 2021-08-21 13:58:43 · 18390 阅读 · 9 评论