VRP with split delivery, simultaneous pickup and delivery and heterogeneous fleet

181 views
Skip to first unread message

betsy.o...@pucp.pe

unread,
Sep 24, 2017, 3:11:07 PM9/24/17
to AMPL Modeling Language
Hello,

I have a routing model that considers deliveries with split demand, pickup and delivery, and heterogeneous fleet.

Initially I made it in Lingo 17.0 and then in AMPL to solve it with gurobi, my idea is to drastically lower the time of solution obtaining a good result. In both, I used a gap of 0.15 and a maximum execution time of 33.3 min (2000 seconds).

Specifically in the example that I attached the best result that Lingo 17.0 returns is 26454.73995 and AMPL with gurobi 25826.38027.

I would like someone to offer me some recommendation to get the AMPL model to return me at least these results but in a maximum time of 5 minutes.

I have tested with other AMPL solvers but I have not obtained better results.

I attached the model developed in AMPL and the excel file for obtaining the data.

Regards,

Betsy Orellana.
vrp.mod
vrp.run
vrp.xlsx

Robert Fourer

unread,
Sep 25, 2017, 10:39:42 AM9/25/17
to am...@googlegroups.com
The first thing you should do is to set "option gurobi_options 'outlev=1';" to get a detailed log of what Gurobi is doing. That will show which parts of the Gurobi solver are taking a lot of time, and might be speeded up. However there is never any guarantee that the solution time can be reduced substantially.

A common recommendation is that it may help to use a smaller coefficient than 1000000 in a constraint like UsDef. I don't think this coefficient needs to be any bigger than the number of z-variables on the left, which is given by the expression card{v in vehicle, i in nod, j in nod, l in posn: i<>j and type[v] = m}. The solvers' preprocessing routines might be reducing this coefficient already, however.

Bob Fourer
am...@googlegroups.com

=======

betsy.o...@pucp.pe

unread,
Sep 25, 2017, 5:02:33 PM9/25/17
to AMPL Modeling Language
Many thanks Bob,

By displaying the "outlev" option of gurobi I have been able to observe that a solution with a gap of at least 0.25 can be reached in 10 minutes on average. However, although I have defined: "option gurobi_options $ gurobi_options'timelim 600 ';" iterations do not stop, just when I remove the line: "option gurobi_options' outlev = 1';" returns the solution found until the 10th minute.

Regards,

Betsy Orellana

Robert Fourer

unread,
Sep 27, 2017, 5:08:32 PM9/27/17
to am...@googlegroups.com
There might be an error in one of your gurobi_options statements. Look at the beginning of the Gurobi log where it will show all of the options that Gurobi actually received:

Gurobi 7.5.0: outlev 1
timelim 600
Optimize a model with ...

Check that both outlev 1 and timelim 600 appear in this list of options following "Gurobi 7.5.0". If they do not, then try giving both options in one statement, like

option gurobi_options 'outlev 1 timelim 600';

If both options appear in the list and still Gurobi does not stop after 600 seconds, then for further help post the entire Gurobi log.
Reply all
Reply to author
Forward
0 new messages