问题
您认为遗传算法是否值得尝试解决以下问题,或者我会遇到局部最小值问题吗?
我认为问题的某些方面对于生成器/健身功能样式设置来说可能很棒。(如果你搞砸了一个类似的项目,我很乐意收到你的来信,而不是做类似的事情)
感谢您提供有关如何构建事物并正确解决此问题的任何提示。
我正在寻找一个很好的调度算法来解决以下现实世界的问题。
我有一个这样的 15 个插槽的序列(数字可能从 0 到 20 不等):
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
(并且这种类型总共有 10 种不同的序列)
每个序列都需要扩展成一个数组,其中每个插槽可以占据 1 个位置。
1 1 0 0 1 1 1 0 0 0 1 1 1 0 0
1 1 0 0 1 1 1 0 0 0 1 1 1 0 0
0 0 1 1 0 0 0 1 1 1 0 0 0 1 1
0 0 1 1 0 0 0 1 1 1 0 0 0 1 1
矩阵的约束是:
- [row-wise, ie Horizontal] 放置的个数,必须是 11 或 111
- [row-wise] 1的两个序列之间的距离需要最小为00
- 每列的总和应与原始数组匹配。
- 应该优化矩阵中的行数。
然后数组需要分配 4 个不同的矩阵之一,这些矩阵可能有不同的行数:
A, B, C, D
A、B、C 和 D 是现实世界的部门。负载需要在 10 天期间合理公平地放置,以免干扰其他部门的目标。
每个矩阵都与 10 个不同原始序列的扩展进行比较,因此您有:
A1, A2, A3, A4, A5, A6, A7, A8, A9, A10
B1, B2, B3, B4, B5, B6, B7, B8, B9, B10
C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
D1, D2, D3, D4, D5, D6, D7, D8, D9, D10
可能会保留这些位置上的某些位置(不确定我是否应该将其仅保留/不保留或基于功能)。 预留的位置可能是会议和其他活动
每行的总和(例如所有 A)应在 2% 内大致相同。即 sum(A1 到 A10) 应该与 (B1 到 B10) 等大致相同。
行数可能会有所不同,因此例如:
A1:5 行 A2:5 行 A3:1 行,其中单行可以是:
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0
ETC..
子问题*
我很乐意只解决部分问题。例如能够输入:
1 1 2 3 4 2 2 3 4 2 2 3 3 2 3
并获得一个适当的序列数组,其中 1 和 0 在上述约束之后的行数上最小化。