Задача: как оптимально распределить остатки на складе по заказам? Коллеги, есть реальная рабочая задачка, помогите найти решение. На складе имеется n "катушек", на каждой из которых намотан кабель различной длины. Имеем m заявок на закупку кабеля, также с различной длиной. Необходимо найти оптимальную комбинацию заявок и катушек, чтобы удовлетворить максимальное (не обязательно все) кол-во заявок. При этом заявка считается закрытой только в том случае, если кабель требуемой длины поставляется полностью, одним неделимым сегментом. К примеру, если у нас есть две катушки по 15м и 20м и заявка на 21м, то удовлетворить ее не получится, потому что неделимый сегмент в 21м мы поставить не сможем.
В реальности катушек и заказов может быть под несколько сотен, и алгоритм должен отрабатывать за разумное время.
Язык программирования не принципиален, можно и просто псевдокод. Приветствуются любые ссылки на спец. литературу, в которой освещаются такого рода алгоритмы.

21 Авг 2019 в 06:06
199 +1
1
Ответы
1

Для решения данной задачи можно воспользоваться методом динамического программирования.

Один из возможных вариантов алгоритма:

Создать двумерный массив dp размером (n+1) x (m+1), где dp[i][j] будет обозначать максимальную суммарную длину кабеля, которую можно получить, используя только i первых катушек и j первых заявок.Инициализировать dp[0][0] = 0.Перебрать все возможные комбинации катушек и заявок и обновлять значения массива dp с учетом возможности добавления следующей катушки или заявки.На последнем этапе выбрать максимальное значение из dp[n][m].

Алгоритм будет работать за O(n * m) времени, что может быть приемлемо даже для большого количества катушек и заявок.

Также можно посмотреть на алгоритмы поиска оптимального назначения (например, венгерский алгоритм), которые могут быть адаптированы для данной задачи.

Поиск информации по ключевым словам "задача о рюкзаке" также может дать некоторые полезные идеи для оптимизации решения.

20 Апр в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир