Skip to content

raregodb/Backpack_problem_educational_practice_2024

 
 

Repository files navigation

Задача о неограниченном рюкзаке, решаемая генетическим алгоритмом

Учебная практика 2024

  • Шумилов А.В. - организация работы в команде, разработка структуры проекта, частичная реализация алгоритма.
  • Деменев К.О. - разработка и реализация GUI
  • Иванова М.А. - частичная реализация алгоритма

Запуск приложения через UILogic.py

Постановка задачи

Дано N вещей, каждая i-я имеет вес Wi и стоимость Ci. Необходимо заполнить рюкзак с максимальной вместимостью по весу Wmax вещами так, чтобы суммарная стоимость вещей в рюкзаке была максимальной. Можно класть несколько копий одной вещи в рюкзак.

Генетический алгоритм

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

Функция приспособленности (метрика качества) текущего потомка равняется либо суммарной стоимостей вещей, лежащих в рюкзаке, если их суммарный вес не превышает максимально допустимого; либо нулю в противном случае. Сам генетический алгоритм выглядит следующим образом:

  1. Случайная генерация начальной популяции из N хромосом;
  2. Вычисление функции приспособленности каждой особи текущего поколения;
  3. С помощью турнирного отбора, численностью 2, выбирается N родителей для следующего поколения;
  4. Внутри отобранного промежуточного поколения родителей произвольным образом выбирается пара особей для скрещивания;
  5. Производится равномерное скрещивание родителей с вероятностью Pc, получается сразу 2 потомка;
  6. Шаги 4-5 повторяются до тех пор, пока не получится поколение детей размера N;
  7. Производится мутация потомков с вероятностью Pm: каждый ген внутри генома мутирует с вероятностью Pg по следующей формуле: новая переменная = старая переменная ± α, знак + или – выбирается с равной вероятностью;
  8. Производится элитарный отбор в следующее поколение: берется 10% лучших представителей предыдущего поколения, а остальные 90% выбираются случайно;
  9. Шаги 2-8 повторяются до тех пор, пока на свет не будет произведено заданное число поколений M.

1.png 2.png 3.png

About

Проект по учебной практике 2024, решающий задачу о рюкзаке с помощью генетического алгоритма

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%