@@ -121,15 +121,15 @@ public Collection<Job> ruinRoutes(Collection<VehicleRoute> vehicleRoutes) {
121
121
}
122
122
final double maxT = maxTime ;
123
123
final double maxD = maxDistance ;
124
- final double timeI = 10 ;
124
+ final double timeInfluence = 10 ;
125
125
final double distanceI ;
126
126
double distanceInfluence = 1 ;
127
127
if (random .nextDouble () < 0.5 ) {
128
128
distanceI = 0 ;
129
129
} else distanceI = distanceInfluence ;
130
130
neighborActivities .sort ((o1 , o2 ) -> {
131
- double rO1 = relatedness (o1 , maxD , maxT , timeI , distanceI );
132
- double rO2 = relatedness (o2 , maxD , maxT , timeI , distanceI );
131
+ double rO1 = relatedness (o1 , maxD , maxT , timeInfluence , distanceI );
132
+ double rO2 = relatedness (o2 , maxD , maxT , timeInfluence , distanceI );
133
133
return Double .compare (rO1 , rO2 );
134
134
});
135
135
int toRemove = getRuinShareFactory ().createNumberToBeRemoved ();
@@ -144,8 +144,20 @@ public Collection<Job> ruinRoutes(Collection<VehicleRoute> vehicleRoutes) {
144
144
return unassignedJobs ;
145
145
}
146
146
147
- private double relatedness (RelatednessToTourActivity o1 , double maxDistance , double maxTime , double timeI , double distanceI ) {
148
- return timeI * o1 .time / maxTime + distanceI * o1 .distance / maxDistance ;
147
+ private double relatedness (RelatednessToTourActivity o1 , double maxDistance , double maxTime , double timeInfluence , double distanceInfluence ) {
148
+ double time ;
149
+ if (maxTime == 0 ) {
150
+ time = 0 ;
151
+ } else {
152
+ time = o1 .time / maxTime ;
153
+ }
154
+ double distance ;
155
+ if (maxDistance == 0 ) {
156
+ distance = 0 ;
157
+ } else {
158
+ distance = o1 .distance / maxDistance ;
159
+ }
160
+ return timeInfluence * time + distanceInfluence * distance ;
149
161
}
150
162
151
163
@ Override
0 commit comments