Рисунок 1. Генетичний алгоритм. Схема
Схема кодування хромосом
Одна хромосома складається з двох частин, які складаються з послідовності коробок для пакування (BPS) S1 і послідовності контейнерів, у які завантажуємо коробки (CLS) S2 . Ми використовуємо схему кодування на основі порядку для представлення послідовностей, тому S1 і S2 є {1, ..., m} і {1, ..., N} відповідно, де m - кількість коробок, а N - кількість контейнерів.
Ініціалізація популяції
Механізм ініціалізації відповідає механізму, описаному у роботі Wang і Chen [11] для евристичного генерування деяких спеціальних хромосом у першому поколінні. Цей механізм заснований на спостереженні, що пакунки більшого розміру повинні бути упаковані в коробку першими. Послідовність генів S1 генерується шляхом сортування за спаданням відповідно до значення обсягу, довжини, ширини та висоти кожного продукту, тоді як S2 генерується випадковим чином.
Селекція
Для описаного ГА було вибрано турнірний метод селекції. Покоління складається з популяції хромосом. Вони відсортовані у порядку спадання параметру fitness (показник ефективності упаковки). Придатність хромосоми визначається евристичною стратегією упаковки. Перші E хромосоми обираються, як елітарність, яка безпосередньо переходить у наступне покоління. З популяції обираються E кількість батьків у пул для парування за допомогою методу відбору турніру з розміром турніру рівним 2. У кожному раунді ми випадковим чином вибираємо дві різні хромосоми з популяції. З ймовірністю pro b , константне значення, що визначається перед роботою алгоритму, кращий (більш пристосований) додається в парний пул, інакше додається слабкий. Ми відбираємо послідовні дві хромосоми в парний пул як батьків. Для кожної пари батьків існує ймовірність того, що вони підуть напряму у наступне покоління, інакше відбувається схрещування для генерації нащадків.
Схрещення і мутації
На відміну від схеми двійкового кодування, яка полегшує прості операції схрещування, такі як одноточкове схрещення, коли генні рядки просто замінюються одиничною точкою розрізу, розробка операції перехрещення для схеми кодування на основі порядку не є такою простою. Вчені розробили кілька операторів схрещення для цього типу хромосом, наприклад, схрещення з частковою відповідністю (PMX - Partial-Maped Crossover), циклічне схрещування (CX), порядкове схрещення (OX - Order Crossover), Для послідовності генів випадковим чином вибираються дві точки зрізу, скажімо, i та j. Батьки P1 і P2 дадуть двох нащадків O1 і O2 . Послідовність генів дитини O1 S1 генерується наступним чином, гени в позиціях від i + 1 до j копіюються з P1. Інші позиції в O1 заповнені відсутніми генами, починаючи з j + 1 по кругу. Відсутні гени отримують шляхом кругового підмітання P2 від j + 1 і перевірки, чи з’явиться він в O1 , якщо ні, то заповнити поточну позицію в O1 геном з P2 . Дитину O2 отримуємо змінивши послідовність P1 і P2 . Послідовність інших генів S2 функціонує незалежно таким же чином. Приклад продемонстровано на рисуноку 2. Мутація проводиться на кожному новоствореному потомстві з ймовірністю Pm , константне значення, що визначається програмістом перед роботою алгоритму. Для кожної послідовності генів випадковим чином вибираються дві позиції, і гени на цих позиціях міняються місцями.