Fairness - balance number of locations serviced per vehicle
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C++
- Estrellas
- 155
- Forks
- 47
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
We want to be able to balance the number of locations serviced by each vehicle to be as even as possible. The use-case is for example drivers who are getting paid (at least partially) by number of deliveries.
This constraint should be behind a flag and optional.
---
Implementation: use the underlying solver to
- Establish a vehicle vars <-> vehicle counts relationship via the `Distribute` constraint
- Add a `Deviation` constraint for vehicle counts targeting the `deviation` var
- Minimizing the `deviation` var
Roughly as follows:
```c++
std::vector vehicleCounts;
for (auto vehicle = 0; vehicle < numVehicles; ++vehicle)
vehicleCounts.push_back(solver->MakeIntVar(0, numNodes));
solver->AddConstraint(solver->MakeDistribute(vehicleVars, vehicleCounts));
auto* deviationVar = solver->MakeIntVar(0, numNodes * numNodes);
solver->AddConstraint(solver->MakeDeviation(vehicleCounts, deviationVar, numNodes));
model.AddVariableMinimizedByFinalizer(deviationVar);
```
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
No se menciona ningún archivo ni prueba. Empieza localizando el modelo de enrutamiento de vehículos y su configuración de restricciones opcionales, y después inspecciona cómo el solver subyacente expone Distribute, Deviation y la minimización mediante finalizer. Se considera terminado cuando un flag opcional habilita conteos equilibrados de ubicaciones por vehículo y el solver minimiza su desviación.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp
- Área
- backend
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 28/100