蚁群算法里的多智能体怎么协作?算出选路概率与信息素更新

核对蚂蚁的候选边概率、蒸发和一次回馈,理解共享记忆。提供演示输入、可核对结果和适用限制。

蚁群算法让多只蚂蚁分别构造候选路径,通过共享信息素影响后续选择。这里的智能体是搜索过程中的构造者,没有语言模型或强化学习神经网络。用两条候选边的自造数据,可以先核对选路概率与信息素更新。

从候选边权重算概率

采用基础示例权重 τ^α·η^β,其中 τ 是信息素,η=1/距离是启发值。令 α=1、β=2,两条合法候选边的距离为 2 和 4,初始信息素都为 1。权重分别是 1/4 和 1/16,归一化后选择概率为 0.8 和 0.2。距离短的边概率更高,但不是每次必选。

蚁群算法里的多智能体怎么协作?算出选路概率与信息素更新

Pants 项目文档说明了 Ant 的 alpha/beta、边的信息素与长度,以及 Solver 的蒸发和路径回馈职责。本文只演示一种基础更新,不把项目中的精英蚂蚁等扩展简化成与本公式完全一样。参数符号中的蒸发率也先明确含义,避免把保留比例和蒸发比例写反。

用一次走过的路径更新信息素

假设蒸发率 ρ=0.2,保留比例为 0.8,一只蚂蚁构造的完整路径长度 L=10,回馈系数 Q=1。走过的候选边获得 Q/L=0.1,没走过的边不增加。设本次第一条边被走过,下一轮信息素分别为 0.9 和 0.8。

保存 ant_step.py,运行 python ant_step.py。输入和蚂蚁走过的边在脚本中固定,便于检查公式,不是随机搜索的性能实验。

from math import isclose
distance = [2.0, 4.0]
pheromone = [1.0, 1.0]
alpha, beta, evaporation = 1.0, 2.0, 0.2
weights = [t**alpha * (1/d)**beta for t, d in zip(pheromone, distance)]
probability = [w/sum(weights) for w in weights]
visited_edges, Q, tour_length = {0}, 1.0, 10.0
updated = [(1-evaporation)*t + (Q/tour_length if i in visited_edges else 0)
           for i, t in enumerate(pheromone)]
print("probabilities:", probability, "pheromone:", updated)
assert isclose(probability[0], 0.8) and isclose(sum(probability), 1)
assert isclose(updated[0], 0.9) and isclose(updated[1], 0.8)

应得到概率约 [0.8,0.2]、信息素 [0.9,0.8]。下一轮概率需要用更新后的信息素重新计算。若距离为零、候选边为空或总权重为零,要先按任务明确处理,不能直接除法;已访问节点也不能继续作为旅行商下一步候选。

多只蚂蚁的协作体现在哪里

每只蚂蚁通常独立构造合法完整解,完成后把各自路径和成本提交给共享更新。不同路径的回馈汇总后改变所有蚂蚁下轮可见的边信息,这构成共享记忆。完整流程还需要构造路径、可行性检查、成本计算、重复迭代和保留最佳解,本例只核对其中两个关键运算。

信息素过早集中可能减少探索;蒸发和回馈强度不能只凭一次算例选择。本文没有运行旅行商实例或证明全局最优。接入实际路线前,先定义距离或代价、禁行边和返回起点规则,再用已知最优的小图验证完整路径算法。

资料与核对依据

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/33006.html

赞 (0)
AI小管家的头像AI小管家
多智能体粒子群算法怎么理解?手算一次速度与位置更新
上一篇 13小时前
贝叶斯推断智能体怎么更新判断?用设备告警核对先验与后验
下一篇 13小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部