GithubHelp home page GithubHelp logo

lareton / transport_network_optimization Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 0.0 6.8 MB

Исследование ускоренных покомпонентных методов поиска равновесий в двухстадийной модели равновесного распределения транспортных потоков

Home Page: https://bigchallenges.ru/projects2023/transport_network_optimization

Jupyter Notebook 92.79% Python 7.21%
optimization optimization-algorithms transport-network transport-networks traffic

transport_network_optimization's Introduction

Имплементации экспериментов для статьи: "Об ускоренных покомпонентных методах поиска равновесий в двухстадийной модели равновесного распределения транспортных потоков"

https://arxiv.org/abs/2307.10469

В репозитории имплементирована транспортная двухстадийная модель (файл transport_problem.py - class DualOracle) и несколько различных алгоритмов оптимизации:

  • USTM - универсальный метод подобных треугольников (Universal Method of Similar Triangles): градиентный шаг сразу по всем переменным.
  • USTM-Sinkhorn - градиентный шаг по t и решение задачи по остальным переменным с помощью алгоритма Синхорна
  • ACRCD* - ускоренный покомпонетный метод (Accelerated by Coupling Ran- domized Coordinate Descent – ACRCD) - оптимизация происходит по блокам переменных - вероятность выбора блока зависит от (не)гладкости функции по данному блоку.

P. S. Для метода ACRCD* убрана адаптивность по (не)гладкости из-за проблем со сходимостью - запуски производились с подобранными константами гладкости.

Репозиторий содержит результаты вычислительных экспериментов по качеству сходимости перечисленных методов на реальных графах. Для тестирования использовались графы из репозитория. Для того чтобы оценивать сходимость методов было выбрано два критерия: зазор двойственности (разность между значением прямой и двойственной функции) и норма градиента по переменным λ и μ. Итоговая метрика объединяет оба критерия:

  # results: AlgoResults from algorithms
  x = results.history_count_calls
  dual_gap = results.history_dual_gap
  dual_gap_clipped = np.maximum(0, dual_gap)
  la_mu_end_norm = np.linalg.norm(np.hstack([oracle_stacker.optim_params.la, oracle_stacker.optim_params.mu]))               
  metric = 2 * np.array(results.history_la_mu_grad_norm) * la_mu_end_norm + dual_gap_clipped

  # (x, metric) - result plot

Метрики фиксировались относительно текущего кол-ва оракульных вызовов. Графики всех экспериментов можно найти в папке.

Эксперименты

Создание среды

>>> conda create --name transport_env -c conda-forge graph-tool
>>> conda activate transport_env
>>> pip install -r requirements.txt
>>> conda install ipykernel
>>> python -m ipykernel install --user --name transport_env --display-name "transport_env"

Запуск и сравнение всех алгоритмов: comparison of all algorithms

Тестирование покомпонетных методов на тестовой задаче:

Реализации самих методов и интерфейсов для работы с транспортной задачей:

Ноутбуки с использование каждого из перечисленных алгоритмов в отдельности (неактуально)

Тестовая задача

Для проверки эффективности покомпонентного метода на описанном в статье классе min-min задач сначала была введена "искусственная" тестовая задача оптимизации, зависящая от двух блоков переменных: TestProblem. На ней провелось сравнение алгоиртмов USTM и ACRCD*.

Определение тестовой задачи test problem

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

После этого было проведено тестирование на транспортной задаче. Используемые графы:

  • SiouxFalls
  • Anaheim
  • Chicago
  • Berlin

Транспортная задача

formula Описанные алгоритмы было запущены на нескольких графах, получены схожие результаты

Визуализация сравнения алгоритмов на графе Anaheim alogs

Визуализация сравнения алгоритмов на графе Sioux Falls alogs

Заключение

График демонстрирует, что применительно к задаче поиска равновесий в двухстадийной модели, из-за того, что оракул по негладкому блоку переменных сильно дороже оракула по гладкому блоку, получается, что эффект от расщепления оракульных сложностей проявляется не так ярко, как потенциально мог бы проявляться в целом на рассматриваемом классе min-min задач. Поэтому ключевую роль играют именно численные эксперименты, которые показали, что алгоритм ACRCD, хоть и является "физичным", однако работает хуже, чем обычный USTM и USTM-Sinkhorn!

transport_network_optimization's People

Contributors

lareton avatar krammnic avatar niquepolice avatar igordyslevski avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.