Итак, в последнее время я действительно увлекся алгоритмами в целом. И я недавно реализовал алгоритм оптимизации муравьиной колонии, чтобы решить TSP (очевидно, очень весело). Теперь я ищу другие «проблемы», которые нужно решить. Теперь я хотел реализовать алгоритм для решения проблемы, связанной с выполнением процентного требования и ниже произвольного предела.
Например:
Пользовательский ввод:
1) предел - т.е. количество энергии, которое можно потратить.
2) "хромосомные" типы - т.е. синий (подтипы - индиго и т. д.), красный (подтипы - бордовый и т. д.), желтый (подтипы - светло-желтый и т. д.) -Каждый первичный атрибут, такой как синий, имеет «бассейн» на выбор, состоящий из разных подтипов, таких как индиго, голубой, морской синий и т. д. -Каждый подтип цвета имеет различную стоимость.
3) процент типов, требуемых для «идеального» решения (можно ввести +/-% для большего разнообразия). - т.е. 10% красного, 30% синего, 60% желтого.
Результат:
1) возможные окончательные решения, которые удовлетворяют двум требованиям, ниже, но близки к требуемой стоимости и соответствуют процентным требованиям супертипов.
Так например.
Это очень простой пример, очевидно, что он был бы более сложным, чем это на самом деле.
Пользователь указывает стоимость должна быть следующей 95 <= cost <= 105.
Пользователь выбирает 25% синего, 25% желтого, 50% красного. с отклонением +/- 5%
Доступные пулы для каждого цвета
Синий: Индиго: стоимость = 25; Морской синий: стоимость = 30; Синий: стоимость = 75;
Желтый: Светло-желтый: стоимость = 20; Темно-желтый: стоимость = 30; Супер темно-желтый (lol): стоимость = 75;
Красный: Бордовый: стоимость = 20; Кроваво-красный: стоимость = 45; Ярко-красный: стоимость = 55;
Таким образом, алгоритм будет работать и возвращать различные комбинации.
Комбинация 1: индиго, темно-желтый, кроваво-красный: стоимость = 100: синий = 25%, желтый = 30%, красный = 55%.
Комбинация 2: морской синий, светло-желтый, кроваво-красный: стоимость = 105: синий = ~ 30%, желтый = ~ 20%, красный = ~ 50%
Комбинация 3: и т. Д. И т. Д. .
РЕДАКТИРОВАТЬ: Второе редактирование
Вывод будет состоять из наборов различных комбинаций.
Например, одно решение может состоять из таких комбинаций:
Одно решение может быть представлено следующим образом:
Комбинация 1: Стоимость = 20; 50% синий, 25% желтый, 25% красный;
Комбинация 2: Стоимость = 30; 10% синего, 50% желтого, 40% красного
Комбинация 3: Стоимость = 50; 25% синего, 25% желтого, 50% красного;
Решение: = (комбинация 1, комбинация 2, комбинация 3) общая стоимость = 100, и она состоит из x% синего, y% желтого, z% красного;
сравните решение с требованиями, если оно закрыто, сохраните его, а если не отбросьте.
КОНЕЦ РЕДАКТИРОВАНИЯ
Итак, мой вопрос. Я знаю, что генетический алгоритм подойдет. Но сработает ли реализация ACO? Например, синий, желтый и красный будут означать «местоположения», тогда их подтипы будут представлять разные «дороги».
Просто интересно, что может быть более эффективным решением или, возможно, каким-то совершенно другим алгоритмом. Я новичок в этом материале и только начал читать об этом чуть больше недели назад.
РЕДАКТИРОВАТЬ: Первое редактирование
Я хочу указать, что хочу иметь 5 хороших уникальных решений (5 из них произвольное число, могло быть 3, могло быть 20).