Каталог решений - Решение транспортной задачи запросом

Решение транспортной задачи запросом

Решение транспортной задачи запросом

В наличии

Списание по двум последовательностям партий запросом (без программной обработки)

Категория:

Описание

Вступление (лирическое)

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

Итак, мне досталась задача, которая по постановке напоминает транспортную задачу открытого типа и решать ее нужно было непременно в запросе. Сохранившиеся в памяти фрагменты университетского курса по этой проблеме ответов не дали. Поиски в интернете тоже ничем полезным не закончились. Однако в голове сохранялось четкое ощущение того, что решение существует и достаточно простое.

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

Дисклеймер

Собственно, написать эту статью мне было гораздо тяжелее, чем снова придумать то самое решение. От успешно решенной интересной проблемы я получил удовлетворение, а от статьи… Именно поэтому написание текста было отложено на месяц, чтобы собраться с мыслями, а потом еще в течение нескольких месяцев усилием воли приходилось заставлять себя заниматься ее проработкой. Так прошло более полугода.

То, что вышло — это труд, который, тем не менее, ни на что не претендует. А данная публикация является реализацией моего желания сделать “вклад в общее дело”. Какой он вышел, таким и останется.

И второе. Предложенное решение не решает транспортную задачу в ее классической постановке (мы не найдем таким образом оптимальное решение), так как рассматриваем лишь частный случай. Но, все же, полученный результат будет близок или повторять опорный план, найденный методом “северо-западного угла”.


Часть 1. Теоретические основы

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

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

Если вы уже знакомы с этим материалом и хорошо себе представляете то, о чем идет речь, можете смело первую часть пропускать.

1.1 Списание партий товаров

Первое, что напоминает транспортная задача — это списание партий товаров. Тогда было принято решение прорабатывать проблему в этом направлении.

Ранее мне попадалась на глаза статья Срез последних на каждую дату в запросе (kb.mista.ru), а позднее и такая Использование нарастающих итогов в партионном учете и не только (nashe1c.ru). Последняя вселила в меня надежду, что решение существует и для моей проблемы.

has been added to your cart:
Оформление заказа