在我们当前的项目中,我们需要在每个周末为主持人分配家庭数量以供午餐。
每个主持人可以服务设定数量的来宾(主持人容量)。 每个家庭可以有不同数量的成员。
在将家庭分配给主机之前,需要应用一些规则:
还有更多...
每个规则的重要性都有不同的权重,即,如果第一个规则中断,那么就无法进行家庭到主机的分配,但是第三个和第四个规则可能会放宽。
这种问题类似于婚礼计划表的安排,但要复杂得多。我研究了几天,似乎遗传算法可能是个好方向。但是,我坚持如何建模,编码输入和实现算法。
我真的很感谢任何建议。提前致谢。
答案 0 :(得分:0)
与其他任何遗传算法问题一样,您需要制作有效/部分无效的染色体(可以评估的场景)。
一个染色体的例子可以是W1: [{H1: F2, F3, F7}; {H2: F4, F6}; {H3: F1, F5}], W2: [{H1: F4, F3, F7}; {H2: F2}; {H3: F1, F5, F6}], ...
,表示在第1周(W1),寄宿家庭1(H1)接待家庭2、3和7,依此类推。
这可以通过随机分配或其他称为Population Initialization
的方法来生成现在需要一种评估该染色体的方法。可以根据问题中定义的要点来完成。
在此之后,可以考虑一些基本功能,例如交叉和变异。
基本示例:
1) for mutation, families can be shifted or switched from one host to another,
2) for crossover, some weekends can be chosen from one parent, and some from the second, duplicate families can be adjusted.
希望这会有所帮助。