1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

get rid of google guava dep

This commit is contained in:
oblonski 2017-02-07 09:53:46 +01:00
parent 6dbc35e350
commit ab8741a335
No known key found for this signature in database
GPG key ID: 179DE487285680D1
3 changed files with 30 additions and 22 deletions

View file

@ -42,12 +42,6 @@
<version>${logger.version}</version> <version>${logger.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>
</dependencies> </dependencies>

View file

@ -18,22 +18,21 @@
package com.graphhopper.jsprit.core.util; package com.graphhopper.jsprit.core.util;
import com.google.common.collect.HashMultiset;
import com.google.common.collect.Multiset;
import com.graphhopper.jsprit.core.algorithm.recreate.listener.JobUnassignedListener; import com.graphhopper.jsprit.core.algorithm.recreate.listener.JobUnassignedListener;
import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.job.Job;
import org.apache.commons.math3.stat.Frequency;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.Map; import java.util.Map;
import java.util.Set;
/** /**
* Created by schroeder on 06/02/17. * Created by schroeder on 06/02/17.
*/ */
public class UnassignedJobReasonTracker implements JobUnassignedListener { public class UnassignedJobReasonTracker implements JobUnassignedListener {
Map<String, Multiset<String>> reasons = new HashMap<>(); Map<String, Frequency> reasons = new HashMap<>();
Map<Integer, String> codesToReason = new HashMap<>(); Map<Integer, String> codesToReason = new HashMap<>();
@ -56,11 +55,10 @@ public class UnassignedJobReasonTracker implements JobUnassignedListener {
@Override @Override
public void informJobUnassigned(Job unassigned, Collection<String> failedConstraintNames) { public void informJobUnassigned(Job unassigned, Collection<String> failedConstraintNames) {
if (!this.reasons.containsKey(unassigned.getId())) { if (!this.reasons.containsKey(unassigned.getId())) {
Multiset<String> ms = HashMultiset.create(); this.reasons.put(unassigned.getId(), new Frequency());
this.reasons.put(unassigned.getId(), ms);
} }
for (String r : failedConstraintNames) { for (String r : failedConstraintNames) {
this.reasons.get(unassigned.getId()).add(r); this.reasons.get(unassigned.getId()).addValue(r);
} }
} }
@ -83,13 +81,13 @@ public class UnassignedJobReasonTracker implements JobUnassignedListener {
* @return * @return
*/ */
public int getCode(String jobId) { public int getCode(String jobId) {
Multiset<String> reasons = this.reasons.get(jobId); Frequency reasons = this.reasons.get(jobId);
String mostLikelyReason = getMostLikely(reasons); String mostLikelyReason = getMostLikely(reasons);
return toCode(mostLikelyReason); return toCode(mostLikelyReason);
} }
public String getReason(String jobId) { public String getReason(String jobId) {
Multiset<String> reasons = this.reasons.get(jobId); Frequency reasons = this.reasons.get(jobId);
String mostLikelyReason = getMostLikely(reasons); String mostLikelyReason = getMostLikely(reasons);
int code = toCode(mostLikelyReason); int code = toCode(mostLikelyReason);
if (code == -1) return mostLikelyReason; if (code == -1) return mostLikelyReason;
@ -102,15 +100,15 @@ public class UnassignedJobReasonTracker implements JobUnassignedListener {
else return -1; else return -1;
} }
private String getMostLikely(Multiset<String> reasons) { private String getMostLikely(Frequency reasons) {
Set<String> set = reasons.elementSet(); Iterator<Map.Entry<Comparable<?>, Long>> entryIterator = reasons.entrySetIterator();
int maxCount = 0; int maxCount = 0;
String mostLikely = null; String mostLikely = null;
for (String r : set) { while (entryIterator.hasNext()) {
int count = reasons.count(r); Map.Entry<Comparable<?>, Long> entry = entryIterator.next();
if (count > maxCount) { if (entry.getValue() > maxCount) {
mostLikely = r; Comparable<?> key = entry.getKey();
maxCount = count; mostLikely = key.toString();
} }
} }
return mostLikely; return mostLikely;

View file

@ -34,11 +34,13 @@ import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl;
import org.apache.commons.math3.stat.Frequency;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.Map; import java.util.Map;
/** /**
@ -137,4 +139,18 @@ public class UnassignedJobReasonTrackerTest {
Assert.assertEquals(1, solution.getUnassignedJobs().size()); Assert.assertEquals(1, solution.getUnassignedJobs().size());
Assert.assertEquals(4, reasonTracker.getCode(solution.getUnassignedJobs().iterator().next().getId())); Assert.assertEquals(4, reasonTracker.getCode(solution.getUnassignedJobs().iterator().next().getId()));
} }
@Test
public void testFreq() {
Frequency frequency = new Frequency();
frequency.addValue("VehicleDependentTimeWindowHardActivityConstraint");
frequency.addValue("b");
frequency.addValue("VehicleDependentTimeWindowHardActivityConstraint");
Iterator<Map.Entry<Comparable<?>, Long>> entryIterator = frequency.entrySetIterator();
while (entryIterator.hasNext()) {
Map.Entry<Comparable<?>, Long> e = entryIterator.next();
System.out.println(e.getKey().toString() + " " + e.getValue());
}
}
} }