mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
remove randomness from vehicle manager
This commit is contained in:
parent
070aef735f
commit
5307e65c10
1 changed files with 17 additions and 14 deletions
|
|
@ -16,11 +16,13 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package com.graphhopper.jsprit.core.problem.vehicle;
|
package com.graphhopper.jsprit.core.problem.vehicle;
|
||||||
|
|
||||||
import com.graphhopper.jsprit.core.util.RandomNumberGeneration;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
|
||||||
class VehicleFleetManagerImpl implements VehicleFleetManager {
|
class VehicleFleetManagerImpl implements VehicleFleetManager {
|
||||||
|
|
@ -33,6 +35,8 @@ class VehicleFleetManagerImpl implements VehicleFleetManager {
|
||||||
|
|
||||||
private ArrayList<Vehicle> vehicleList;
|
private ArrayList<Vehicle> vehicleList;
|
||||||
|
|
||||||
|
private int index = 0;
|
||||||
|
|
||||||
TypeContainer() {
|
TypeContainer() {
|
||||||
super();
|
super();
|
||||||
vehicleList = new ArrayList<Vehicle>();
|
vehicleList = new ArrayList<Vehicle>();
|
||||||
|
|
@ -50,17 +54,19 @@ class VehicleFleetManagerImpl implements VehicleFleetManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
Vehicle getVehicle() {
|
Vehicle getVehicle() {
|
||||||
return vehicleList.get(0);
|
if(index >= vehicleList.size()) index = 0;
|
||||||
|
Vehicle vehicle = vehicleList.get(index);
|
||||||
|
return vehicle;
|
||||||
|
}
|
||||||
|
|
||||||
|
void incIndex(){
|
||||||
|
index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isEmpty() {
|
boolean isEmpty() {
|
||||||
return vehicleList.isEmpty();
|
return vehicleList.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void shuffle(Random random){
|
|
||||||
Collections.shuffle(vehicleList,random);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Logger logger = LoggerFactory.getLogger(VehicleFleetManagerImpl.class);
|
private static Logger logger = LoggerFactory.getLogger(VehicleFleetManagerImpl.class);
|
||||||
|
|
@ -73,7 +79,7 @@ class VehicleFleetManagerImpl implements VehicleFleetManager {
|
||||||
|
|
||||||
private Vehicle[] vehicleArr;
|
private Vehicle[] vehicleArr;
|
||||||
|
|
||||||
private Random random = RandomNumberGeneration.getRandom();
|
private Random random;
|
||||||
|
|
||||||
VehicleFleetManagerImpl(Collection<Vehicle> vehicles) {
|
VehicleFleetManagerImpl(Collection<Vehicle> vehicles) {
|
||||||
super();
|
super();
|
||||||
|
|
@ -155,11 +161,6 @@ class VehicleFleetManagerImpl implements VehicleFleetManager {
|
||||||
return vehicles;
|
return vehicles;
|
||||||
}
|
}
|
||||||
|
|
||||||
void shuffle(){
|
|
||||||
for(int i=0;i< vehicleTypes.length;i++){
|
|
||||||
vehicleTypes[i].shuffle(random);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vehicle getAvailableVehicle(VehicleTypeKey vehicleTypeIdentifier) {
|
public Vehicle getAvailableVehicle(VehicleTypeKey vehicleTypeIdentifier) {
|
||||||
|
|
@ -183,7 +184,6 @@ class VehicleFleetManagerImpl implements VehicleFleetManager {
|
||||||
else{
|
else{
|
||||||
locked[vehicle.getIndex()] = true;
|
locked[vehicle.getIndex()] = true;
|
||||||
removeVehicle(vehicle);
|
removeVehicle(vehicle);
|
||||||
if(random.nextDouble() < 0.1) shuffle();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -217,6 +217,9 @@ class VehicleFleetManagerImpl implements VehicleFleetManager {
|
||||||
unlock(vehicleArr[i]);
|
unlock(vehicleArr[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for(int i=0;i<vehicleTypes.length;i++){
|
||||||
|
vehicleTypes[i].incIndex();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue