מידע

מועד הגשה 17/05/2024 23:59:59
מגבלת הגשות אין הגבלה

כניסה

Project 2024 - Instance 2

The full statement for the project is available through the slides on Moodle.

  • Instance: custom2
  • Threshold 1: 24500
  • Threshold 2: 24000

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. Note that the filename given as input is not the same as the filename found in your repository (i.e. "path/to/instance" will never be "data/dialaride/custom0").

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 10 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.