The full statement for the project is available here. An outdated version regarding the thresholds but with a more explainatory example can be found on this link.
- Instance: custom3
- Threshold 1: 9500
- Threshold 2: 9000
Grading: 7/20 if you find any valid solution. 12/20 if you reach the first threshold. 14/20 if you reach the second threshold. 20/20 if you find the best solution among all groups. Linear (depending on your rank in the scoreboard, per instance) in between.
The grade given by INGInious is not your final grade, as it will only give you either 0 (which is final), 7 (which is final), 12 (which is final) and 14 (which is the minimum you will obtain in this case).
Your solver will be started with the command
MAVEN_OPTS="-Xms256M -Xmx600M" mvn -q exec:java -Dexec.mainClass="minicp.examples.DialARide" -Dexec.args="path/to/instance"
Test it on your computer before testing on INGInious.
The last nVehicles+1 lines of your output will be read, as they should contain your best found solution.
Use the DialARideSolution class to build the solution, and print it each time you obtain a solution. It should be something like this:
Length: 16210 - 21p, 6p, 9p, 10p, 9d, 10d, 8p, 6d, 1p, 22p, 1d, 17p, 16p, 14p, 22d, 23p, 14d, 11p, 17d, 21d, 20p, 11d, 16d, 19p, 8d, 19d, 20d, 23d, - 13p, 3p, 0p, 3d, 15p, 4p, 7p, 4d, 12p, 0d, 15d, 13d, 7d, 12d, - 2p, 5p, 2d, 18p, 5d, 18d,
Length is of course the total length of the tour made by all the vehicles. The next lines (one per vehicles) are the stop. 6p means that the vehicle goes to pickup the person from the 6th ride. 9d means that the vehicles drops the person from the 9th ride (ride are numbered from 0 to nRides-1).
You have 4 minutes in CPU (!!) time for each instance. Make sure your solver stops before being killed. You can measure the CPU time of your solver by using the following code snippet:
import java.lang.management.ManagementFactory; ManagementFactory.getThreadMXBean().getCurrentThreadCpuTime();
Be sure to RTFM to understand what this function does.
NB: it is possible that INGInious computes a subtly different length (max difference +/- 2) for your path, as it uses double precision. This should not modify anything else. If it does, do contact me!