我正在编写用于生成时间表的遗传算法。
目前我正在使用这两种启发式方法:
- 一天内讲座之间的孔数(相关)(孔少 -> 分数更高)
- 每个小时都有一些价值,因此对于每个时间表,我都会对讲座进行时的小时数进行总和。(在更合适的时间上课 -> 更高的分数)
我想平衡这两种启发式方法,因此该算法不会对任何一种都有利。实现这一目标的最佳方法是什么?
我正在编写用于生成时间表的遗传算法。
目前我正在使用这两种启发式方法:
我想平衡这两种启发式方法,因此该算法不会对任何一种都有利。实现这一目标的最佳方法是什么?
一个非常简单的方法就是将分数相加。归根结底,您想要一个混合分数,当任何一个独立分数上升时都会上升。您也可以使用乘法(根据分数的大小警惕数字溢出)。使用任何一种方法,您都可以对各个分数进行加权,例如
total_score = 0.4 * hours_score + 0.7 * holes_score
您甚至可以使权重可由用户配置。
开发一个评分函数来评估生成的时间表的质量。你在你的两个启发式中有这个想法。
产生一些随机的时间表问题。
选择一些值来平衡这两种启发式方法,生成解决方案,并评估哪些看起来最好(如果您无法提出评分函数,请关注它)。
选择一组新的平衡权重(即围绕上次最佳选择的邻域)并重复