Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Оптимизация "кругового маршрута" - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Оптимизация "кругового маршрута" (Макросы/Sub)
Оптимизация "кругового маршрута"
SLAVICK Дата: Воскресенье, 25.05.2014, 01:16 | Сообщение № 1
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Есть справочник адресов, с координатами.
По формуле КОРЕНЬ((X1-X2)^2+(Y1-Y2)^2) можно высчитать примерное расстояние между каждой парой точек.
Проверить можно через UDF функцию с запросом к Api (Здесь)
Я даже думал через тот же API и рассчитывать путь, доработав вышеуказанную функцию, но у гугла есть ограничение в 8 доп точек... (Здесь)
А в маршруте их может быть более 30....
Как расчитать оптимальную последовательность проезда этих точек, так чтобы в конце маршрута вернутся в начальную точку?
Прочитал про метод коммивояжера... может как то так? но как его воплотить в Вба пока не нашел. Что-то по маршрутам было здесь, но не совсем то.
Есть у кого то соображения, как это сделать?


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Воскресенье, 25.05.2014, 01:26
 
Ответить
СообщениеЕсть справочник адресов, с координатами.
По формуле КОРЕНЬ((X1-X2)^2+(Y1-Y2)^2) можно высчитать примерное расстояние между каждой парой точек.
Проверить можно через UDF функцию с запросом к Api (Здесь)
Я даже думал через тот же API и рассчитывать путь, доработав вышеуказанную функцию, но у гугла есть ограничение в 8 доп точек... (Здесь)
А в маршруте их может быть более 30....
Как расчитать оптимальную последовательность проезда этих точек, так чтобы в конце маршрута вернутся в начальную точку?
Прочитал про метод коммивояжера... может как то так? но как его воплотить в Вба пока не нашел. Что-то по маршрутам было здесь, но не совсем то.
Есть у кого то соображения, как это сделать?

Автор - SLAVICK
Дата добавления - 25.05.2014 в 01:16
MCH Дата: Воскресенье, 25.05.2014, 15:27 | Сообщение № 2
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

По описанию - классическая задача коммивояжера
Задача не простая, рабочего эффективного алгоритма у меня нет, но решить ее можно перебором.
Для 8 точек это сделать очень легко всего 7! вариантов перебрать, а вот для 30 - это уже нереально
Сколько может быть адресов в реальности?
 
Ответить
СообщениеПо описанию - классическая задача коммивояжера
Задача не простая, рабочего эффективного алгоритма у меня нет, но решить ее можно перебором.
Для 8 точек это сделать очень легко всего 7! вариантов перебрать, а вот для 30 - это уже нереально
Сколько может быть адресов в реальности?

Автор - MCH
Дата добавления - 25.05.2014 в 15:27
SLAVICK Дата: Воскресенье, 25.05.2014, 18:10 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
MCH, в реальности может быть и больше... но они поделены на регионы. И это внутри одного региона. Оптимизация регионов - следующий шаг. :D
просто не могу придумать алгоритм.
У гугла в премиум пакете можно расчитать до 23 путевых точек+начало+конец. .. итого 25.( при этом создается правильный маршрут) Работает быстро....
Рассчитать в одну сторону легко, вопрос как создать именно оптимальный маршрут... т.е. чтобы получилось что то вроде круга.
Думаю нужно расчитать возможные сочетание точек с созданием словаря или колекции ... но вот что дальше делать?


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеMCH, в реальности может быть и больше... но они поделены на регионы. И это внутри одного региона. Оптимизация регионов - следующий шаг. :D
просто не могу придумать алгоритм.
У гугла в премиум пакете можно расчитать до 23 путевых точек+начало+конец. .. итого 25.( при этом создается правильный маршрут) Работает быстро....
Рассчитать в одну сторону легко, вопрос как создать именно оптимальный маршрут... т.е. чтобы получилось что то вроде круга.
Думаю нужно расчитать возможные сочетание точек с созданием словаря или колекции ... но вот что дальше делать?

Автор - SLAVICK
Дата добавления - 25.05.2014 в 18:10
SLAVICK Дата: Воскресенье, 25.05.2014, 18:47 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
И почему 7 вариантов при 8ми точках? Ведь последовательность может быть: 1,2,3 ... и 1,5,8... и 1,8,5.. и так далее. Т.е намного больше 7:-)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеИ почему 7 вариантов при 8ми точках? Ведь последовательность может быть: 1,2,3 ... и 1,5,8... и 1,8,5.. и так далее. Т.е намного больше 7:-)

Автор - SLAVICK
Дата добавления - 25.05.2014 в 18:47
MCH Дата: Понедельник, 26.05.2014, 15:00 | Сообщение № 5
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

И почему 7 вариантов при 8ми точках?

не 7, а 7! (семь факториал = 5040 вариантов).
Различные варианты определяются перестановкой семи точек.

Приложите небольшой пример (не более 8 - 10 точек), для понимания, какова организация данных. Можно попробовать решить перебором.
За разумное время можно перебрать до 12 точек (11! ~ 40 млн комбинаций)
 
Ответить
Сообщение
И почему 7 вариантов при 8ми точках?

не 7, а 7! (семь факториал = 5040 вариантов).
Различные варианты определяются перестановкой семи точек.

Приложите небольшой пример (не более 8 - 10 точек), для понимания, какова организация данных. Можно попробовать решить перебором.
За разумное время можно перебрать до 12 точек (11! ~ 40 млн комбинаций)

Автор - MCH
Дата добавления - 26.05.2014 в 15:00
SLAVICK Дата: Понедельник, 26.05.2014, 16:24 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Вот пример, на первом листе - то что должно получится - с небольшим количеством данных - это можно рассчитать через гугл АПИ или здесь
На втором листе вторая матрица расстояний, нужно получить расчет как на первом листе, но для всех точек. т.е. Выезжаем из 1-й точки, проезжаем все точки, в последовательности которую нужно рассчитать, и приезжаем обратно в 1-ю точку.
Вроде бы понятно написал :D

Интересно по какому принципу работает Гугл? если их сервис позволяет рассчитать до 23 доп.точек?
К сообщению приложен файл: 2469176.xlsx (48.5 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Понедельник, 26.05.2014, 16:30
 
Ответить
СообщениеВот пример, на первом листе - то что должно получится - с небольшим количеством данных - это можно рассчитать через гугл АПИ или здесь
На втором листе вторая матрица расстояний, нужно получить расчет как на первом листе, но для всех точек. т.е. Выезжаем из 1-й точки, проезжаем все точки, в последовательности которую нужно рассчитать, и приезжаем обратно в 1-ю точку.
Вроде бы понятно написал :D

Интересно по какому принципу работает Гугл? если их сервис позволяет рассчитать до 23 доп.точек?

Автор - SLAVICK
Дата добавления - 26.05.2014 в 16:24
SLAVICK Дата: Вторник, 27.05.2014, 11:23 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Нашел интересное решение там есть файл он строит графики, и высчитывает положение следующей точки по координатам, быстро считает... конечно не 100% попадание, но лучше чем ничего :)
Может как то пойти по этому пути, а не по пути простого перебора комбинаций?... или как-то сочетать их


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеНашел интересное решение там есть файл он строит графики, и высчитывает положение следующей точки по координатам, быстро считает... конечно не 100% попадание, но лучше чем ничего :)
Может как то пойти по этому пути, а не по пути простого перебора комбинаций?... или как-то сочетать их

Автор - SLAVICK
Дата добавления - 27.05.2014 в 11:23
SLAVICK Дата: Вторник, 27.05.2014, 16:49 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Разобрался сам :D воспользовался встроенной надстройкой "Поиск решения" - делает расчет для 40 адресов меньше чем за две минуты :)
Правда, хотелось бы макрос - легче запускать...
Для того чтобы сработало - нужно включить надстройку "Поиск решения".
К сообщению приложен файл: 2469176-2-.xlsx (36.3 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеРазобрался сам :D воспользовался встроенной надстройкой "Поиск решения" - делает расчет для 40 адресов меньше чем за две минуты :)
Правда, хотелось бы макрос - легче запускать...
Для того чтобы сработало - нужно включить надстройку "Поиск решения".

Автор - SLAVICK
Дата добавления - 27.05.2014 в 16:49
MCH Дата: Суббота, 12.07.2014, 21:31 | Сообщение № 9
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Сделал решение задачи коммивояжера. Путь из 39 точек находится практически мгновенно.
Еще варианты решений есть здесь: http://www.excelworld.ru/forum/2-11826-1

PS: На графике широта и долгота перепутаны по осям, но это не влияет на решение
К сообщению приложен файл: Travelling_sale.xls (96.0 Kb)
 
Ответить
СообщениеСделал решение задачи коммивояжера. Путь из 39 точек находится практически мгновенно.
Еще варианты решений есть здесь: http://www.excelworld.ru/forum/2-11826-1

PS: На графике широта и долгота перепутаны по осям, но это не влияет на решение

Автор - MCH
Дата добавления - 12.07.2014 в 21:31
MCH Дата: Воскресенье, 13.07.2014, 09:40 | Сообщение № 10
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

На графике широта и долгота перепутаны по осям

Исправил
К сообщению приложен файл: Travelling_sale.rar (98.1 Kb)


Сообщение отредактировал MCH - Воскресенье, 13.07.2014, 09:44
 
Ответить
Сообщение
На графике широта и долгота перепутаны по осям

Исправил

Автор - MCH
Дата добавления - 13.07.2014 в 09:40
MCH Дата: Понедельник, 14.07.2014, 03:03 | Сообщение № 11
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Сделал маршрут по 312 городам России
https://yadi.sk/d/dHVV4UVDWXt9t
 
Ответить
СообщениеСделал маршрут по 312 городам России
https://yadi.sk/d/dHVV4UVDWXt9t

Автор - MCH
Дата добавления - 14.07.2014 в 03:03
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Оптимизация "кругового маршрута" (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!