void RoutingModel::createVehicles(const char * vehicleFileName) {
IloCsvReader csvVehicleReader(_env, vehicleFileName);
IloCsvReader::LineIterator it(csvVehicleReader);
while(it.ok()) {
IloCsvLine line = *it;
char * namefirst = line.getStringByHeader("first");
char * namelast = line.getStringByHeader("last");
char * name = line.getStringByHeader("name");
IloNum capacity = line.getFloatByHeader("capacity");
IloNode node1 = IloNode::Find(_env, namefirst);
IloNode node2 = IloNode::Find(_env, namelast);
IloVisit first(node1, "depot");
_mdl.add(first.getCumulVar(_weight) == 0);
IloVisit last(node2, "depot");
_mdl.add(last.getCumulVar(_distance) >= line.getFloatByHeader("open"));
_mdl.add(last.getCumulVar(_distance) <= line.getFloatByHeader("close"));
IloVehicle vehicle(first, last, name);
vehicle.setCapacity(_weight, capacity);
vehicle.setCost(_time, 1.0);
vehicle.setCost(_distance, 1.0);
_mdl.add(vehicle);
++it;
}
csvVehicleReader.end();
}
|