PyGAD:如何将基因约束到样本集而不进行替换?



假设我有一个分配问题,需要为乘客分配座位。我需要强制约束,即任何给定的座位最多只能分配一个乘客,每个乘客只能分配一个座位。

线性规划提供了一种阐明这些约束的方法;然而,对于非线性目标函数,启发式算法,如遗传算法,是潜在的合适的优化模型选择。

如果有25个座位,我需要一种机制来采样这些座位,而不需要在基因初始化时更换。此外,我需要突变和交叉来观察这个约束。

gene_space = [
{"low": 1, "high": 25, "step": 25},
]

我的问题是:

  1. PyGAD是否支持这个没有替换功能的集合采样?
  2. 如果没有,是否有一种算法可以适应随机抽样的整数并强制执行此约束?

关于2,部分解决方案可能包括使用给定的随机抽样整数的累积分布函数,并以某种方式使用CDF从可用的座位中检索没有替换的样本。(这种方法可能效率低下,可能会阻碍使用PyGAD的一些好处。)

可以设置allow_duplicate_genes=False防止重复基因。这样,给予一个基因的值将不会被另一个基因使用。

import pygad
...
ga_instance = pygad.GA(...,
allow_duplicate_genes=False,
...)
ga_instance.run()
...

相关内容

  • 没有找到相关文章

最新更新