Хорошее представление хромосомы в генетическом алгоритме VRPTW

Вопрос или проблема

У меня есть генетический алгоритм для задачи маршрутизации транспортного средства с временными окнами, и мне нужно реализовать определенные модификации. Я не уверен, какое будет лучшее представление хромосом.

У меня есть задачи, которые можно разделить на 3 подзадачи с определенными упорядоченными временными окнами, их нужно выполнять в порядке, и все 3 (они представляют сбор определенных товаров на складе, доставку их и возврат упаковки на другой склад). В части алгоритма, отвечающей за кроссовер, эти задачи комбинируются и оцениваются. Их необходимо обрабатывать в порядке в соответствии с их номером задачи, т.е. комбинация “A1, B1, B2, A2, B3, A3” является правильной, но “A1, B2, A2, B3, A3, B1” или “A1, A2, B1” – нет. Проблема в том, что я не знаю, как обеспечить соблюдение порядка событий. Как я могу отразить это требование в хромосомах? Или, где в алгоритме мне следует учитывать это требование?

В предыдущей версии алгоритма мы использовали только целую задачу A или B без различия подзадач, что теперь недостаточно. Я относительно новичок в генетических алгоритмах, поэтому извините, если это что-то очевидное.

Учитывая, что вы хотите максимизировать функцию приспособленности $\phi:\Bbb{R}^n\rightarrow\Bbb{R}$, сделайте $\phi(\vec{x})=-\infty\ \forall \vec{x}\ \notin X$, где область допустимых решений $X\subset \Bbb{R}^n$. Затем вы можете инициализировать популяцию $P=\{p\ |\ p\in X\}$ и если ГА попробует любое $p\notin X$, это решение будет устранено. Это заставляет ГА “учиться” области допустимых решений.

Ответ или решение

Оптимальное представление хромосом в генетическом алгоритме для задачи маршрутизации транспортных средств с временными окнами (VRPTW)

Введение

При разработке генетического алгоритма (ГА) для решения задачи маршрутизации транспортных средств с временными окнами важно правильно выбрать представление хромосом, чтобы соблюдать порядок выполнения подзадач и выполнять условия временных окон. В данной статье мы рассмотрим, как оптимально организовать представление хромосом для вашего сценария.

Понимание задачи

Вы имеете дело с задачами, разбитыми на три подзадачи, каждая из которых должна выполняться в строгом порядке, например, "A1, B1, B2, A2, B3, A3". Необходимо обеспечить, чтобы ГА не генерировал недопустимые последовательности, такие как "A1, B2, A2, B3, A3, B1", где подзадачи выполняются в неверной последовательности.

Представление хромосом

  1. Списковое представление с метаданными:
    Рекомендуется использовать векторное представление хромосом, где каждая хромосома представлена в виде списка, в котором содержится информация о подзадачах (например, "A1", "A2", "A3", "B1", "B2", "B3"). В этом списке следует также хранить информацию о приоритете задач или временных рамках выполнения, которые ограничивают порядок их следования.

  2. Использование специального формата:
    Каждый элемент списка можно закодировать с использованием структуры, которая будет содержать:

    • Название задачи (например, "A1")
    • Индекс самой подзадачи
    • Временные ограничения (например, время начала и время окончания)

    Пример такого представления:

    [
       {"task": "A", "subtask": 1, "start_time": 0, "end_time": 10},
       {"task": "B", "subtask": 1, "start_time": 10, "end_time": 20},
       {"task": "B", "subtask": 2, "start_time": 20, "end_time": 30},
    ]

    Это формат позволяет легко добавлять алгоритмы проверки на порядковость при операциях кроссовера и мутации.

  3. Контроль за порядком задач:
    Чтобы обеспечить корректный порядок выполнения, вы можете использовать алгоритм проверки на наличие дубликатов и нарушения последовательности. Например, в ходе кроссовера можно проверять на наличие "родительских" последовательностей и генерировать потомков только в том случае, если порядок подзадач не нарушен. Если последовательность не соответствует требованиям, она автоматически отвергается, и генерируется другая комбинация.

  4. Генерация начальной популяции:
    Ваша начальная популяция должна формироваться таким образом, чтобы все хромосомы соответствовали требуемому порядку выполнения задач. Это может быть достигнуто путем создания алгоритма, который будет перемешивать подзадачи с соблюдением их порядка. Например, вы можете создать популяцию с 10% допускаемых нарушений, чтобы ГА мог исследовать пространство решений.

Заключение

Корректное представление хромосом в генетическом алгоритме для задачи маршрутизации транспортных средств с временными окнами требует учета последовательности подзадач и временных ограничений. Используя списковое представление с метаданными, вы не только обеспечите соблюдение порядка выполнения, но и создадите более гибкую и устойчивую структуру для кроссоверов и мутаций. Учтите, что алгоритм может быть адаптирован под специфические требования вашей задачи и потенциальные изменения в логистических схемах.

Оцените материал
Добавить комментарий

Капча загружается...