项目作者: edervishaj

项目描述 :
Walking Bus Challenge
高级语言: Java
项目地址: git://github.com/edervishaj/walking-bus.git
创建时间: 2018-07-24T05:22:44Z
项目社区:https://github.com/edervishaj/walking-bus

开源协议:

下载


Walking Bus Challenge1

Problem Description

An elementary school want to setup a walking bus system for its students.

A walking bus (pedibus in Italian) is a form of student transport for schoolchildren who,
chaperoned by two adults (usually a driver leads and a conductor follows), walk to school, in
much the same way a school bus would drive them to school. Like a traditional bus, walking
buses have a fixed route with designated bus stops in which they pick up children (The walking
bus definition is courtesy of Wikipedia).

The routes of the walking bus system must serve all students joining the initiative. A route
starts form a bus stop, goes through other bus stops and ends at the school. All students on the
route must be picked-up. Routes can merge but cannot split after merging. No student must
travel more than alpha times the shortest path from his bus stop to the school. The design of
the routes should ensure students’ safety minimizing the risk involved in the path from home to
school.

It is your duty as manager of the school to define all the routes for the walking bus system
taking into account all requirements and minimizing the number of chaperons involved. In other
words, the number of routes composing the walking bus system must be minimized.

From a more abstract point of view: consider a complete graph G = (N, A). Set N = {0..n}
is the set of nodes, node 0 is the school and all other nodes represent bus stops. Set A =
(i, j) : i ∈ N, j ∈ N is the set of arcs representing connections among nodes. For each pair of
nodes i ∈ N, j ∈ N : (i, j) ∈ A the length and the dangerousness of the shortest path, ci,j, di,j,
from node i to node j is known; c0,j = ∞ ∀j ∈ N \ {0}.

For the purpose of this challenge we only take into account graphs in which the length of
the shortest path c ij is equal to the euclidean distance from node i to node j (the triangular
inequality holds).

The walking bus problem can be seen as a special case of spanning tree problem. In this
problem we want to find the feasible spanning tree, rooted in 0, for graph G with the minimum
number of leaves (primary objective function). A spanning tree is consider as feasible in the
walking bus problem if no node is distant from 0 more than alpha times the shortest path from
the node to 0 (that is c0,j). The walking bus problem takes also into account an additional
objective function that is the minimization of the total dangerousness of the paths selected as
routes for the walking bus (secondary objective function). The total dangerousness is computed
as the sum of the risk (di,j) associated with all the arcs composing the walking bus network.
This objective function is less important than the minimization of the number of leaves and it
is only used in order to differentiate among solutions with the same number of leaves.

Results evaluation criteria

Solvers will be evaluated and ranked using a set of 10 instances. This evaluation set is not the
same as the test set provided to the participants. However instances in the evaluation set have
the same structure and size of the instances in the test set.
Three different criteria will be considered for the evaluation. From the most to the less
important:

  1. Number of leaves. Minimizing the number of adults supervisors (number of leaves) required for the walking
    bus is the main goal. Given two feasible solutions S1 and S2 for the same instance lets call
    L1 and L2 the number of leaves in the spanning tree defined by S1 and S2 respectively. If
    L1 < L2 then S1 is better than S2.
  2. Risk. If two feasible solutions S1 and S2 have the same number of leaves then the solution
    described by the less dangerous (in terms of dij) spanning three prevails. Lets call D1 and
    D2 the sum of dij for all arcs (i, j) used in solutions S1 and S2 respectively. If L1 = L2
    and D1 < D2 then S1 is better than S2.
  3. Computational time. The faster the better. If L1 = L2 and D1 = D2 then the solving time is considered. Lets
    call T1 and T2 the time required in order to obtain S1 and S2 respectively. If L1 = L2 and
    D1 = D2 and T1 < T2 then S1 is better than S2.

1: project for Foundations of Operations Research course at Politecnico di Milano