Как указал TaslemGuy, генетические алгоритмы не гарантируют оптимальности, даже если они обычно дают хорошие результаты.
Чтобы получить оптимальные результаты, вам придется искать все возможные комбинации действий, пока не найдете оптимальный путь в древовидном представлении. Тем не менее, сделать это для StarCraft сложно, так как есть много разных путей для достижения цели. В шахматах вы перемещаете пешку с e2 на e4, а затем противник движется. В StarCraft вы можете перемещать юнитов в момент х или х + 1 или х + 10 или ...
Шахматный движок может смотреть на многие различные аспекты доски (например, сколько фигур у него и сколько у противника), чтобы направлять его поиск. Он может игнорировать большинство доступных действий, если знает, что они строго хуже других.
Для создателя порядка сборки действительно имеет значение только время. Лучше построить еще один беспилотник, чтобы быстрее добывать минералы, или быстрее запустить этот нерестовый бассейн? Не так просто, как в шахматах.
Такие решения принимаются довольно рано, поэтому вам придется искать каждую альтернативу заключению, прежде чем вы сможете выбрать лучшую, что займет длинное время.
Если бы я сам написал оптимизатор порядка сборки, я бы, вероятно, попытался бы сформулировать эвристику, которая оценивает, насколько хорошо (близко к целевому состоянию) текущее состояние, как это делают шахматные движки:
Score = a*(Buildings_and_units_done/Buildings_and_units_required) - b*Time_elapsed - c*Minerals - d*Gas + e*Drone_count - f*Supply_left
Это пытается привязать счет к проценту выполнения, а также к общему знанию StarCraft (держите свои ресурсы на низком уровне, стройте дронов, не создавайте больше ресурсов, чем вам нужно). Конечно, переменные от a до f потребуют настройки.
После того, как у вас есть эвристика, которая может несколько оценить ценность ситуации, я бы использовал Поиск в первую очередь или, возможно, IDDFS для поиска по дереву возможностей.
Редактировать
Недавно я нашел бумагу , которая фактически описывает оптимизацию порядка сборки в StarCraft, даже в реальном времени. Авторы используют поиск в глубину с ответвлением и границей и эвристики, которые оценивают минимальный объем усилий, требуемых для достижения цели, на основе технологического дерева (например, зерлингам нужен нерестовый пул) и время, необходимое для сбора необходимых минералов.