private void retractPreviousStandstill(Cliente cliente) { Parada paradaAnterior = cliente.getParadaAnterior(); if (paradaAnterior != null) { // Score constraint distanceToPreviousStandstill softScore += cliente.getMilliDistanceToPreviousStandstill(); } }
private void retractNextCustomer(Cliente cliente) { Vehiculo vehicle = cliente.getVehiculo(); if (vehicle != null) { if (cliente.getSiguienteCliente() == null) { // Score constraint distanceFromLastCustomerToDepot softScore += vehicle.getUbicacion().getDistanciaMetros(cliente.getUbicacion()); } } }
private void retractMilliArrivalTime(Cliente cliente) { Integer horaLlegadaSegundos = cliente.getHoraLlegadaSegundos(); if (horaLlegadaSegundos != null) { int horaFinSegundos = cliente.getHoraFinSegundos(); if (horaFinSegundos < horaLlegadaSegundos) { // Score constraint arrivalAfterDueTime hardScore += (horaLlegadaSegundos - horaFinSegundos); } } }
private void insertMilliArrivalTime(Cliente cliente) { Integer horaLlegadaSegundos = cliente.getHoraLlegadaSegundos(); if (horaLlegadaSegundos != null) { int horaFinSegundos = cliente.getHoraFinSegundos(); if (horaFinSegundos < horaLlegadaSegundos) { // Score constraint arrivalAfterDueTime hardScore -= (horaLlegadaSegundos - horaFinSegundos); } } // Score constraint arrivalAfterDueTimeAtDepot is a build-in hard constraint in // VehicleRoutingImporter }
private void retractVehicle(Cliente cliente) { Vehiculo vehiculo = cliente.getVehiculo(); if (vehiculo != null) { // Score constraint vehicleCapacity int capacidad = vehiculo.getCapacidad(); int demandaAntigua = mapaDemandaVehiculo.get(vehiculo); int demandaNueva = demandaAntigua - cliente.getDemanda(); hardScore += Math.min(capacidad - demandaNueva, 0) - Math.min(capacidad - demandaAntigua, 0); mapaDemandaVehiculo.put(vehiculo, demandaNueva); if (cliente.getSiguienteCliente() == null) { // Score constraint distanceFromLastCustomerToDepot softScore += vehiculo.getUbicacion().getDistanciaMetros(cliente.getUbicacion()); } } }