Вопрос
Как вы думаете, генетические алгоритмы стоит попробовать для решения проблемы ниже, или я столкнусь с проблемами локальных минимумов?
Я думаю, что, возможно, аспекты проблемы отлично подходят для настройки стиля генератора / фитнес-функции. (Если вы испортили подобный проект, я хотел бы услышать от вас, а не делать что-то подобное)
Спасибо за любые советы о том, как структурировать вещи и прибить это правильно.
Проблема
Я ищу хороший алгоритм планирования для решения следующей реальной проблемы.
У меня есть последовательность с 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
Ограничения на матрицу таковы:
- [по строкам, то есть по горизонтали] Количество размещенных должно быть либо 11, либо 111
- [по строкам] Расстояние между двумя последовательностями, равными 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
Некоторые места на них могут быть зарезервированы (не уверен, что я должен сделать это просто зарезервировано / не зарезервировано или основано на функции). Зарезервированные места могут быть встречи и другие события
Сумма каждой строки (например, всех А) должна быть примерно одинаковой в пределах 2%. т.е. сумма (от А1 до А10) должна быть примерно такой же, как (от В1 до В10) и т. д.
Количество строк может варьироваться, например, у вас есть:
А1: 5 строк
A2: 5 строк
A3: 1 строка, где эта строка может быть, например:
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0
и т.д ..
Подзадача *
Я был бы очень рад решить только часть проблемы. Например, возможность ввода:
1 1 2 3 4 2 2 3 4 2 2 3 3 2 3
И получите соответствующий массив последовательностей с 1 и 0, сведенными к минимуму на количество строк в соответствии с вышеуказанными ограничениями.