1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/robin_shaun-multi-uav-task-assignment-benchmark

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
readme.md

Бенчмарк многоквадрокоптерной задачи назначения задач

Бенчмарк для тестирования алгоритмов много-UAV-задачи назначения

Введение

Представлен бенчмарк для оценки различных алгоритмов в контексте многоквадрокоптерной задачи назначения задач. Расширенная модель проблемы ориентирования команды используется для моделирования одной из таких задач. Реализованы три интеллектуальных алгоритма: Генетический алгоритм, оптимизация колоний муравьёв и частичное общественное обучение. Выполнены серии экспериментов с различными настройками для оценки этих трёх алгоритмов. Моделированная проблема и результаты оценки образуют бенчмарк, который может использоваться для оценки других алгоритмов, применяемых к задачам назначения задач для множества квадрокоптеров.

Обратите внимание, что три алгоритма выполняются на трёх ядрах процессора соответственно, что означает отсутствие параллельной оптимизации в этом бенчмарке.

Решение задачи для алгоритма оптимизации колоний муравьёв

Среднее вознаграждение для больших задач

Среднее время выполнения для больших задач

Для получения более подробной информации обратитесь к статье:К. Сяо, Ж. Лю, Ю. Ние, Л. Ма, Х. Уанг и Г. Уанг, "Бенчмарк для многоквадрокоптерной задачи назначения задач расширенной проблемы ориентирования команды", 2022 China Automation Congress (CAC), Ксиамень, Китай, 2022, с. 6966-6970, DOI: 10.1109/CAC57257.2022.10054991.Препринт ArXiv arXiv:2003.09700

Использование

1. Ввод и вывод алгоритма

Ввод алгоритма включает количество квадрокоптеров (скаляр), скорости квадрокоптеров ($n \times 1$ массив), количество целей (скаляр $n$), цели (($n + 1) \times 4$ массив, первая строка — депо, первый столбец — позиция x, второй столбец — позиция y, третий столбец — вознаграждение, четвертый столбец — затраченное время на завершение миссии), временные ограничения (скаляр). Ниже приведён пример инициализации класса GA в файле ga.py:

def __init__(self, vehicle_num, vehicles_speed, target_num, targets, time_lim):

В классе алгоритма должна быть функция run(), которая должна возвращать план назначения задач (массив, например, [[[28, 19, 11], [25, 22, 7, 16, 17, 23], [21, 26, 12, 9, 6, 3], [5, 15, 1], [18, 20, 29]]]), где каждый подмассив представляет маршрут одного квадрокоптера), и используемое вычислительное время (скаляр).

2. Оценка

Вы можете заменить один алгоритм ниже другим в файле evaluate.py, а затем выполнить команду python evaluate.py. Если вы не хотите одновременно оценивать три алгоритма, вам следует правильно модифицировать код (это легко сделать).```python ga = GA(vehicle_num, env.vehicles_speed, target_num, env.targets, env.time_lim) aco = ACO(vehicle_num, target_num, env.vehicles_speed, env.targets, env.time_lim) pso = PSO(vehicle_num, target_num, env.vehicles_speed, env.targets, env.time_lim) ga_result = p.apply_async(ga.run) aco_result = p.apply_async(aco.run) pso_result = p.apply_async(pso.run) p.close() p.join() ga_task_assignment = ga_result.get()[0] env.run(ga_task_assignment, 'GA', i + 1, j + 1) re_ga[i].append((env.total_reward, ga_result.get()[1])) env.reset() aco_task_assignment = aco_result.get()[0] env.run(aco_task_assignment, 'ACO', i + 1, j + 1) re_aco[i].append((env.total_reward, aco_result.get()[1])) env.reset() pso_task_assignment = pso_result.get()[0] env.run(pso_task_assignment, 'PSO', i + 1, j + 1) re_pso[i].append((env.total_reward, pso_result.get()[1]))


Здесь нет необходимости в переводе, поскольку весь текст представляет собой код на Python, который не требует перевода.### 3. Обучение с подкреплением

В функции `Env()` файла `evaluate.py` используется метод `step` для обучения с подкреплением. Поскольку этот процесс находится в разработке, демонстрация недоступна. Если ваш алгоритм использует обучение с подкреплением, вы можете попробовать его обучить с помощью `Env()`. Ваши pull requests и issues приветствуются.

## Улучшения

Этот [репозиторий](https://github.com/dietmarwo/Multi-UAV-Task-Assignment-Benchmark) обеспечивает существенное улучшение производительности и может использоваться для высокопроизводительной работы. Благодарим [dietmarwo](https://github.com/dietmarwo) за отличную работу.

1) Алгоритм ГА использует библиотеку [numba](https://numba.pydata.org/) для значительного увеличения скорости. Параметры настроены таким образом, чтобы время выполнения оставалось прежним: размер популяции 50 -> 300, количество итераций 500 -> 6000. Поэтому ГА теперь работает значительно быстрее по сравнению с оригинальной версией.2) Эксперименты настроены таким образом, чтобы время выполнения для малых задач было сбалансировано. Это значит: увеличенное усилие для ГА, уменьшенное усилие для АКО. Для средних/больших размеров задач вы видите, какие алгоритмы плохо масштабируются: увеличение времени выполнения сверхлинейно относительно размера задачи. Избегайте этих алгоритмов при работе с большими задачами.

3) Добавляет стандартный алгоритм непрерывной оптимизации: [BiteOpt](https://github.com/avaneev/biteopt)
   от Алексея Ванеева — использует ту же функцию приспособленности, что и `GA.py`.
   BiteOpt является единственным включенным алгоритмом, который хорошо работает с большим размером задачи.
   Это самый простой реализованный вариант, требуется только написание функции приспособленности,
   поскольку мы можем использовать библиотеку непрерывной оптимизации [fcmaes](https://github.com/dietmarwo/fast-cma-es).
   Выполните команду `pip install fcmaes`, чтобы использовать её.

4) Использует `NestablePool` для включения многопоточного процесса BiteOpt: много запусков оптимизации BiteOpt выполняется параллельно, а лучший результат возвращается. Установите `workers=1`, если вы хотите протестировать BiteOpt в однопоточном режиме.5) Все результаты создаются с использованием процессора AMD 5950X с 16 ядрами, который использует все ядра: 29 параллельных потока BiteOpt, остальные три алгоритма остаются однопоточными.

6) Добавлен тестовый файл `test_bite.py`, где можно отслеживать прогресс применения BiteOpt к задаче.

7) Добавлен тестовый файл `test_mode.py`, где можно отслеживать прогресс применения многокритериального оптимизатора fcmaes-MODE к задаче и сравнивать его с BiteOpt для одной и той же ситуации. fcmaes-MODE — это многокритериальный оптимизатор, применяемый к варианту задачи с несколькими целями. Цели следующие: награда (должна максимизироваться), максимальное время (должно минимизироваться), энергия (должна минимизироваться). Ограничение по времени из однокритериальной задачи всё ещё действует. Расход энергии приближенно рассчитывается как `sum(dt * v * v)`

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

**Основы тестирования алгоритма распределения задач для нескольких беспилотных летательных аппаратов на основе расширенной задачи маршрутизации команды (Team Orienteering Problem, TOP)** [*Текст запроса без перевода.*] В данном исследовании представлен алгоритм распределения задач между несколькими беспилотными летательными аппаратами (БПЛА) н... Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/robin_shaun-multi-uav-task-assignment-benchmark.git
git@api.gitlife.ru:oschina-mirror/robin_shaun-multi-uav-task-assignment-benchmark.git
oschina-mirror
robin_shaun-multi-uav-task-assignment-benchmark
robin_shaun-multi-uav-task-assignment-benchmark
master