0

我正在尝试在 python 中使用 GA 解决 CVRP 物流问题。问题本身听起来是这样的:

找到 15 个客户的 CVRP 问题的最优至少 3 路解决方案。客户位置、他们的需求和车辆最大容量可以随机选择。

在阅读了很多关于 GA 实施到物流的信息后,我仍然想知道它的解决方案应该如何看待我的案例。

假设我将所有有效路线(总需求不超过车辆容量)编码为二进制代码。

例如:路线 1 [0 -> 1 -> 0] 编码:bin(1)

路线 2 [0 -> 2 -> 0] 编码:bin(2)

路线 15:[0 -> 15 -> 0] 编码:bin(15)

和路由 16 分别为:[0 -> 1 -> 2 -> 0] 编码:bin(16)

大约有 38.000 条可能的路线,其中 1940 条有效(不超过车辆容量)。1940 的二进制编码应该是 11110010111,=> 11 个二进制数字,所以我们将每个染色体固定为 11 个二进制数字长度(例如 bin(1) = 00000000001),让 GA 执行所有操作(选择、交叉、变异)。

我们还对不存在的路线进行编码,直到 11111111111(2047),但为它们分配了极低的适应度,以确保它们在 GA 选择期间被过滤。

我的适应度函数显然是点之间的距离,我想要的只是最小化它。

总体目标是找到至少 3 条路线,通过所有客户并覆盖最短距离。

所以,是时候提问了:

• 我是否使用了正确的编码?
• 在我的案例中,GA 实施的结果应该是什么?
• 我应该如何设置停止算法的条件?
• 假设我的种群长度为 100 个人,我如何在我达到例如第 50 代后找到最佳路线?我如何知道这 100 个人中的哪一个是最佳的?

我不确定,我已经以体面的方式解释了所有内容,如果没有,请告诉我,我会尝试提供更多细节甚至代码。

4

0 回答 0