- 博客(8)
- 收藏
- 关注
原创 关于α-β剪枝的补充
连续同向节点同样成立,但是需要注意的是:此时若还有下层未搜索完毕的与本节点连续的同向节点时,不能确定本层节点的β2(对max节点)和α2(对min节点),即:不能认为已经找到了最好情况。第二类(α2,β2)是根据已知的搜索到末端的结果,基于双方都理性的假设而得出的上下界,这就是其他书籍上用的α、β,这里记为α2,β2。父节点是min节点β2,子节点是max节点,孙节点也max节点,则可以把父节点的β2传递给子节点和孙节点。3)α1、β1虽然是节点值的上下界,但并不保证是上下确界,实际计算时允许放松。
2024-09-06 14:47:29 929
原创 关于旅行商问题几种常用算法的经验
模拟退火、禁忌搜索、遗传算法和蚁群算法,对于“移动”、“变异”、“扰动”等新解产生的机制:可以包括:两点交换、2-opt(等价于整段逆转)、3-opt、同向移位等,实质就是2-opt\3-opt\or-opt等算法与其他的搜索算法的结合。某些算法(如:单纯型法、动态规划法、完全随机搜索等)不存在“局部最优解”,只要不断进行搜索,一定能够找到最优解(但未必能够证明这个解就是最优的)。都能找到比较好的解。“局部最优解”应该是指:从既有解,按照算法规定的规则继续进行运算所生成的所有解都不如既有解更优。
2024-02-18 09:50:01 679
原创 3-opt方法解旅行商问题的三边选取方法
常见的是2-opt和3-opt,相关算法的介绍文章网上很多,这里不加赘述,只对三边选择方法进行说明。具体做法是:随机抽[0,n-1]内的3个不重复的整数,如果发现有任意两个数的差小于2(意味着两条边前后相连),则判为不可行的组合,重新再抽一次。缺点是如果城市太少,因为符合的概率太低,则程序会陷入不断的重抽,效率低。违反这条,新解的出现频率不同,搜索范围被缩小,不利于找寻全局最优解的目标。本程序采用随机抽取3个数字[0,n-1]内的数字,分别作为三条边的起点,也就是离开城市。违反这条,无法成功求解。
2024-02-05 09:53:44 884 1
原创 简单程序实现模拟退火算法求解TSP问题(python)
1、“温度”的作用的不断收紧许较差解可接受概率,高低是相对的。当温度趋近于零时,除非发现更优解,否则接受概率趋于零。起始温度过高,对较差解的接受概率太大,可能出现前期退化的情况。起始温度过低,则收敛过快,容易直接陷入局部最优解。3、以连续未发现更优解的迭代次数超过搜索邻域长度作为触发降温的条件,以保证在某一温度下可以充分地进行局部优化。介绍模拟退火算法求解TSP问题的文章网上很多,我无意在此重复介绍。2、本程序以2-opt优化方式为搜索邻域。
2024-01-03 11:21:33 646
原创 用禁忌搜索算法解TSP问题(python)程序及小贴士
因此要判断解是否在禁忌表内,就会出错,虽然可以通过表达式实现正确的逻辑判断,但是运行效率极低。为此建议如果城市数量过多,搜索邻域内可以不必全覆盖搜索,可随机选择邻域内的少部分解进行搜索。但是搜索的覆盖率不能过低,本人经验是不低于10%不同搜索邻域设置方式对搜索运算次数影响很大,当城市数量变大时,搜索邻域本身可能会急剧增大,极大浪费时间。对此有两种应对方式:1、搜索顺序在每次运行时随机打乱,2、搜索初值随机设定。由于邻域本身是确定的,如果采用固定搜索顺序,可能形成每次运行都是同一顺序,则搜索无随机性。
2023-11-13 16:56:56 87
原创 39行代码实现蚁群算法解决TSP问题程序(python)
对环游中国34城市问题大概率可以获得16000公里以内的解。对dantzig42问题可以得到最优解:699。全部程序,除去空行和注释行,仅39行代码。
2023-10-20 16:02:29 222
原创 简单代码实现遗传算法解决旅行商问题(TSP)的改进(python)
而且,对于初始种群没有特别要求,即便人为给与一个已经全部为最大值(最劣)的种群,也不会过早地收敛到比较差的解。3、简单地采用 适应度=1/(本次解的路程-已知最短路程+很小的正常数),即可实现动态自适应函数,避免适应度区分度过小的问题。需要说明:上述的改进,全部都是针对称旅行商问题(STSP)的,对于非对称旅行商问题(ATSP),上述第2点改进不能使用,第5点改进不建议使用。4、使用简单的代码,既实现了轮盘赌选择,又实现了最优个体保留,还实现了外来基因引入(故意对种群的基因进行污染)。
2023-10-16 13:13:09 429
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人