我尝试使用遗传算法解决这个问题,并且很难选择适应度函数。我的问题与原来的旅行推销员问题有点不同,因为人口和获胜单位可能不一定包含所有城市。
所以,我对每个单位有 2 个值:他访问的城市数量、总时间和他访问城市的顺序。我尝试了 2-3 个健身功能,但它们的效果不佳。
我需要考虑到他访问过的城市数量以及总时间的良好健身功能。
谢谢!
我尝试使用遗传算法解决这个问题,并且很难选择适应度函数。我的问题与原来的旅行推销员问题有点不同,因为人口和获胜单位可能不一定包含所有城市。
所以,我对每个单位有 2 个值:他访问的城市数量、总时间和他访问城市的顺序。我尝试了 2-3 个健身功能,但它们的效果不佳。
我需要考虑到他访问过的城市数量以及总时间的良好健身功能。
谢谢!
除了 Peladao 建议使用帕累托方法或某种加权和之外,为了完整起见,我还想提及另外两种可能性。
首先,您可以优先考虑您的健身功能。因此,人口中的个人按第一个目标、第二个目标、第三个目标进行排名。因此,只有当两个人在第一个目标上相等时,他们才会被第二个目标进行比较。如果您的目标明确占主导地位,这可能是一种可行的方法。
其次,您可以将您的两个目标定义为仅当它们超过某个阈值时才惩罚的约束。当城市的数量不应该在某个范围内时,这可能是可行的,例如 [4;7],但它是 4 还是 5 无关紧要。这类似于加权和方法,其中个人的贡献综合适应度值的目标相差几个数量级。
帕累托方法是唯一一种同等重视所有目标的方法。它需要适合多目标优化的特殊算法,例如 NSGA-II、SPEA2、AbYSS、PAES、MO-TS、...
无论如何,如果您能展示您尝试过的 2-3 个适应度函数,那就太好了。也许有相当简单的错误。
多目标适应度函数可以使用帕累托最优来实现。
您还可以使用不同适应度值的加权和。
有关多目标优化和 GA 的良好且易读的介绍:http: //www.calresco.org/lucas/pmo.htm