Giter Club home page Giter Club logo

optimizer-api's Introduction

Mapotempo Optimizer API Build Status

Run an optimizer REST API depending of many contraints for a Vehicle Routing Problem (VRP).

Prerequisite

For ruby, bundler and gems, rbenv or rvm are recommanded.

On Ubuntu

  • Ruby 2.3+ (if not using rbenv/rvm)
sudo apt install ruby-full
  • redis-server
sudo apt install redis-server
  • libgeos-dev
sudo apt install libgeos-dev

On Mac OS

brew install redis
brew install geos

Installation

bundle install

This project requires some solver and interface projects in order to be fully functionnal!

Configuration

Adjust config/environments files.

Running

bundle exec rake server

And in production mode:

APP_ENV=production bundle exec rake server

Start Redis and then start the worker

APP_ENV=production COUNT=5 QUEUE=* bundle exec rake resque:workers

Usage

The API is defined in Swagger format at http://localhost:1791/swagger_doc and can be tested with Swagger-UI http://swagger.mapotempo.com/?url=http://optimizer.mapotempo.com/swagger_doc

curl -X POST --header "Content-Type:application/json" --data '{"vrp":{vehicles":[]}}' http://localhost:1791/0.1/vrp/submit.json?api_key=key

Test

Run tests:

APP_ENV=test ROUTER_URL=http://localhost:4899 bundle exec rake test

You can add your own tests on specific Vehicle Routing Problem (for instance data from real cases). Let's see how to create a new test called "new_test". You will find template for test in test/real_cases_test.rb

Before creating test, you need to capture scenario, in order to have a static image of your problem, insensitive to the routers edits.

Add your test JSON file into test/fixtures/. Now to create your test, just copy test template in test/wrappers/real_cases_test.rb, or any equivalent file. Once launched, the dump file of the problem will be created and put aswell in test/fixtures as following:

  • new_test.dump file corresponding to complete vrp with calculated matrices if not provided

If you create a test by using .dump, your test will fail as soon as vrp model is changed. Just run following task to update fixtures:

TEST_DUMP_VRP=true APP_ENV=test bundle exec rake test TEST=test/real_cases_test.rb

Note: you can update a test and run the modified scenario with new vrp .json:

bundle exec rake server
COUNT=5 QUEUE=* bundle exec rake resque:workers
curl -X POST --header "Content-Type:application/json" --data @test/fixtures/my_test.json http://localhost:1791/0.1/vrp/submit.json?api_key=key

If you don't want to run some long real cases tests you can deactive them:

SKIP_REAL_CASES=true APP_ENV=test bundle exec rake test

Travis

To test on travis with a optimizer-ortools different than the latest version, specify in your travis configuration the following environment variable : OPTIMIZER_ORTOOLS_VERSION with you travis owner nick.

optimizer-api's People

Contributors

alain-andre avatar braktar avatar fab-girard avatar flomapo avatar fonsecadeline avatar frodrigo avatar mika-5 avatar mrfenril avatar senhalil avatar xals 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.