Фитнес-функция для распределения scm

Проблема: мне нужна фитнес-функция, которая будет использоваться для определения стоимости и количества распределенных предметов.

Обозначить:

У меня есть 1 распределительный центр (DC).

У меня 3 магазина (S1, S2, S3)

если в какое-то время у DC есть 30 штук предмета A. Магазины просят DC отправить им товар. S1 запрашивает 10 шт. изделия A. S2 запрашивает 15 шт. S3 просят 20 шт.

Как определить оптимальное количество предметов для отправки в Магазин, когда предмет DC ‹ общее количество запрошенных предметов, а прибыль от продажи этого предмета в каждом магазине рассчитывается для фитнес-функции?

Пример решения:

  • DC отправляет 7 на S1
  • DC отправляет 10 на S2
  • DC отправляет 13 на S3

Какую фитнес-функцию лучше всего использовать?


person ultrasnord    schedule 28.04.2014    source источник


Ответы (1)


Используйте показатель прибыли. Ваша фитнес-функция будет выглядеть так

integer fitness(int numberSentToA, int numberSentToB, int numberSentToC){
    moneyEarned = numberSentToA * priceAtWhichABuys + numberSentToB * priceAtWhichBBuys + numberSentToC * priceAtWhichCBuys;
    return moneyEarned;
}

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

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

person Pragy Agarwal    schedule 30.04.2014