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

14.01.13

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

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

Скачать файлы

Наименование Файл Версия Размер
map.rar
.rar 682,37Kb
76
.rar 682,37Kb 76 Скачать
Конструктор логиста с районами
.rar 901,35Kb
39
.rar 901,35Kb 39 Скачать

 

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

Дано:

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

    Необходимо:

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

     

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

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

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

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

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

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

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

 

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

См. также

Экспорт нескольких MXL таблиц в один XLS файл, на отдельные листы. Простой алгоритм

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

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

23.11.2015    18893    etmarket    14    

20

.NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия

Разработка внешних компонент Математика и алгоритмы Платформа 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    51048    Serginio    36    

57

Степень сходства двух наименований справочника

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

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

1 стартмани

25.02.2015    24416    etmarket    46    

17

Задача про сгибание листка

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

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

1 стартмани

26.02.2013    19465    11    Sbelyi78    38    

9

Универсальная печать таблицы значений

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

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

1 стартмани

23.05.2012    14758    66    McSeem    3    

8

Тригонометрические функции в 7.7

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

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

1 стартмани

04.03.2012    8576    4    nysysimara    10    

5

Таблица Значений для анализа при разработке и отладке

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

Таблица Значений, для анализа данных при разработке и отладке.

1 стартмани

30.11.2011    16450    46    Boog    10    

15
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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 181 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 181 14.01.13 11:47 Сейчас в теме
Добавлено "районирование" - разделение торговых точек по районам и составление маршрутов с учетом доставки по районам, чтобы исключить из маршрута точки которые находятся географически близко, но добраться до них сложно (например разделены рекой). Постараюсь найти последний релиз...
5. vladzem 14.01.13 12:16 Сейчас в теме
6. Angeros 22.01.13 07:33 Сейчас в теме
Ну вот в разработке представлено целых 2 файла, конструктор и мап, а что из них что?! Как-то не так пост оформлен, приводиться преамбула. Есть список вариантов решения проблемы, но на этом все...
Для построения логистики по городу нужно как минимум иметь дорожный граф где указаны точки с координатами, расстояния между точками и т.д. как это получается в вашей разработке?
7. phsin 181 24.01.13 12:33 Сейчас в теме
Angeros, спасибо за вопрос.

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

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

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