Вот, пришлось вернуться к выравниванию ресурсов. Раньше использовался 1 ресурс на задачу, теперь потребовалось несколько. Оказалось, что полный перебор все еще работает.
Предлагаю кусочек задачи для граждан у которых "нет проблем с циклами".
Формулировка задачи совсем не сложная.
Дано:
1. Доступность ресурсов – массив с целыми числами. Ресурс – это индекс.
2. Массив задач, которые конфликтуют по ресурсам (это уже выяснено). Для каждой задачи дано время старта и длительность (все в минутах), используемые ресурсы (массив целых такой же размерности, как в п.1), ну и номер для удобства.
Нужно устранить конфликты – если задача с более старшим индексом конфликтует с предыдущими (т.е. сумма по какому-либо ресурсу превышает доступность из п. 1), то нужно сдвигать ее вправо, пока она не "впишется". Первая задача, естественно, никогда не сдвигается.
Т. е., нужно получить новые времена старта задач.
Потренироваться можно на таких данных
Доступность ресурсов: {7,10,10,16,18,13}
Задачи:
№ 7 старт=10560 длит=960 ресурсы={4, 1, 4, 3, 9, 8 }
№ 8 старт=10560 длит=960 ресурсы={5, 5, 4, 0, 9, 1 }
№ 10 старт=9600 длит=2880 ресурсы={1, 5, 4, 6, 7, 3 }
№ 11 старт=10560 длит=480 ресурсы={3, 3, 2, 4, 5, 1 }
Ответ: новые времена старта {10560, 11520, 9600, 12480 }
Если кому интересно, вся задача взята отсюда
http://kisi.deu.edu.tr/guzin.kavrukkoca/BISMaster/ResourceLevelingUsingGeneticAlgorithms.pdfЧестно говоря, я не рассчитываю на ответы. Т.к. придется напрячься (мне – пришлось, но был стимул), а у каждого своих дел по горло и стимула нет.
Ну, на нет и суда нет.