在Python中使用GA实现物流CVRP

问题描述

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

找到 CVRP 问题的至少 3 条路径的最优解,其中 15 顾客。客户位置、他们的需求和车辆最大容量 可以随机

在阅读了大量关于 GA 实施到物流的信息后,我仍然想知道它的解决方案应该如何在我的情况下进行。

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

例如: 路线一 [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 个人中哪一个是最佳的?

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)