Конструктор логиста

14.01.13

Разработка - Математика и алгоритмы

Формирование маршрутов доставки на основе генетического алгоритма (решения задачи коммивояжера) для 1С Предприятия 7.7

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
map.rar
.rar 682,37Kb
77
77 Скачать (1 SM) Купить за 1 850 руб.
Конструктор логиста с районами
.rar 901,35Kb
40
40 Скачать (1 SM) Купить за 1 850 руб.

 

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

Дано:

  • Некоторое количество торговых точек (ТТ), обычно 50-500
  • Вес товара, который необходимо доставить в каждую ТТ
  • Некоторое количество машин с ограниченными вместимостью 1500 кг и ограниченными человеческими ресурсами - не более 15 магазинов в день

    Необходимо:

    Найти оптимальный маршрут с минимальным количеством машин и минимальнцым расстоянием доставки (пробегом)

     

    Существует несколько способов решения этой задачи

    1. Традиционный - деление по районам
    2. Перебор - для 100 точек потребуется 100! итераций, а это ОЧЕНЬ много
    3. Жадный алгоритм - вседа выбираем ближайшую точку, к сожалению, алгоритм дает иногда самый не оптимальный вариант
    4. Генетический алгоритм
    5. Алгоритм муравьиной колонии
  • Краткое описание алгоритма

    Описание структуры данных:

    Популяция состоит из Генов - возможные решения. Каждый Ген имеет стоимость, стоимость состоит из расстояния, пройденного машиной и весом, который эта машина перевозит.

    1. Формируем начальную популяцию. Можно формировать случайно, по районам или по жадному алгоритму
    2. Запускаем цикл (чем больше итераций тем лучше).
    3. Генерируем потомков только у лучших генов
    4. Сортируем по возрастанию стоимости
    5. "Элита" остается, остальные "умирают"

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

Добавлено разделение ТТ по районам и расстояния между районами. 

 

P.S. Огромная благодарность рябятам создавшим и развивающим проект 1С++!!! Так держать! Вы молодцы!

См. также

Загрузка и выгрузка в Excel Математика и алгоритмы Программист Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Статья посвящена распространённому вопросу - как сохранить несколько таблиц (отчетов) в формате MXL, с которым работает 1С, на отдельные листы одного Excel файла. Освещается простой алгоритм решения проблемы штатными средствами, без использования внешних модулей и библиотек (не относящихся к 1С и Excel).

23.11.2015    19221    etmarket    14    

21

Разработка внешних компонент Математика и алгоритмы Программист Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия, а так же генерация модулей на C# и 1С для подключения к событиям. Использование DynamicMethod и ILGenerator. Представлены примеры для использовании событий System.IO.FileSystemWatcher (Ожидает уведомления файловой системы об изменениях и инициирует события при изменениях каталога или файла в каталоге.) и SerialPort (обработка сканера штрих кода подключенного к COM порту). Обертка позволяет использовать классы .Net только на языке 1С. Реализация 1C Messenger описанного здесь http://infostart.ru/public/434771/

12.11.2015    51772    Serginio    36    

58

Математика и алгоритмы Программист Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

25.02.2015    25027    etmarket    46    

18

Математика и алгоритмы Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Часто при приеме на работу встречается задача про сгибание листка

1 стартмани

26.02.2013    19766    11    Sbelyi78    38    

9

Математика и алгоритмы Системный администратор Программист Бухгалтер Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Универсальная печать таблицы значений, которую не стыдно прикрутить к рабочей базе данных. Группировка данных, подсчет итогов, составление диаграмм, выгрузка в быстрый доступ к исходной ТЗ.

1 стартмани

23.05.2012    14891    66    McSeem    3    

8

Математика и алгоритмы Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Алгоритм получения значения тригонометрических функций путем разложения их в ряд Тейлора

1 стартмани

04.03.2012    8752    4    nysysimara    10    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. popal_al@mail.ru 12.01.13 23:09 Сейчас в теме
мне кажется это из проклуба за 200... год и разработчик не вы
нашел... просьба несчитать это рекламой проклуба
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=8162
разработчик veritas его сайт http://map.samtel.ru

да уж... просто хотел сказать - ссылаемся на автора
2. phsin 183 13.01.13 10:43 Сейчас в теме
Спасибо что помните! Вы знаете очень приятно! :)
Я разработчик, просто на proclub опубликовал под другим псевдонимом veritas в далеком 2008 году...
К своему удивлению не обнаружил на infostart'е
В последнее время заметил интерес к теме генетических алгоритмов (http://forum.infostart.ru/forum24/topic77246/) и поэтому решил опубликовать здесь.
Надеюсь кому-то будет интересно.
3. vladzem 14.01.13 09:30 Сейчас в теме
А с 2008 года обработка както менялась? Если да просьба прислать ее на адрес prog@sirobogatov.ru В настоящий момент занят проблемой оптимальной доставки.
4. phsin 183 14.01.13 11:47 Сейчас в теме
Добавлено "районирование" - разделение торговых точек по районам и составление маршрутов с учетом доставки по районам, чтобы исключить из маршрута точки которые находятся географически близко, но добраться до них сложно (например разделены рекой). Постараюсь найти последний релиз...
5. vladzem 14.01.13 12:16 Сейчас в теме
6. Angeros 22.01.13 07:33 Сейчас в теме
Ну вот в разработке представлено целых 2 файла, конструктор и мап, а что из них что?! Как-то не так пост оформлен, приводиться преамбула. Есть список вариантов решения проблемы, но на этом все...
Для построения логистики по городу нужно как минимум иметь дорожный граф где указаны точки с координатами, расстояния между точками и т.д. как это получается в вашей разработке?
7. phsin 183 24.01.13 12:33 Сейчас в теме
Angeros, спасибо за вопрос.

Нам нужны координаты точки доставки, исходим из предположения что кварталы прямоугольные, поэтому расстояние между точками = модулю разности координат (да, сразу надо отметить, что расстояние считается неправильно, но поскольку сравниваются одинаковые величины, то мне кажется что на решение это особо не отражается)
Поскольку невозможно рассчитать точное расстояние между N=500 точками доставки (если учитывать что граф ориентированный, то получится (N-1)! значений для вычислений)

В решении с районами добавляем к расстоянию между точками расстояние между районами, которое уже берем из графа (Справочника) Расстояния между районами.
Справочник "Расстояние между районами" заполняем из экселевской таблицы (пример таблицы в EXTFORMS) или вносим "вручную"

предлагается 2 файла - решения задачи
Скачать "map.rar" - решение без районов...
Скачать "Конструктор логиста с районами" - решение с районами...
8. Широкий 693 25.11.14 11:12 Сейчас в теме
Сыпется куча ошибок при запуске.
Если и удается сформировать расчет - выдает несколько маршрутов. Описания нет
Беда какая то
9. phsin 183 25.11.14 13:32 Сейчас в теме
Обработка давнишняя, поддерживать ее, наверно, не имеет смысла,
сейчас ее можно использовать пожалуй как упрощенную демонстрацию генетического алгоритма
на текущий момент есть более эффективные решения например http://infostart.ru/public/307383/
Оставьте свое сообщение