From 708400a34a4fb780b48122cf25be652bf2d61f0c Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 6 Mar 2015 16:15:12 +0100 Subject: [PATCH] add handler if neighborhood tree is null --- jsprit-core/pom.xml | 5 +++++ .../algorithm/ruin/JobNeighborhoodsImpl.java | 11 +++++++++++ .../JobNeighborhoodsImplWithCapRestriction.java | 16 ++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/jsprit-core/pom.xml b/jsprit-core/pom.xml index 84d7cc88..ad387a5d 100644 --- a/jsprit-core/pom.xml +++ b/jsprit-core/pom.xml @@ -82,6 +82,11 @@ compile + + org.apache.commons + commons-math3 + 3.4 + diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java index d37e6b85..2ee436cd 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java @@ -31,6 +31,17 @@ class JobNeighborhoodsImpl implements JobNeighborhoods { public Iterator getNearestNeighborsIterator(int nNeighbors, Job neighborTo){ TreeSet tree = distanceNodeTree.get(neighborTo.getId()); + if(tree == null) return new Iterator() { + @Override + public boolean hasNext() { + return false; + } + + @Override + public Job next() { + return null; + } + }; Iterator descendingIterator = tree.iterator(); return new NearestNeighborhoodIterator(descendingIterator, nNeighbors); } diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java index e78ae08f..1232458b 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java @@ -32,8 +32,24 @@ class JobNeighborhoodsImplWithCapRestriction implements JobNeighborhoods { logger.info("intialise " + this); } + /* + TODO: obviously nearestNeighbor does not work with a single customer + */ public Iterator getNearestNeighborsIterator(int nNeighbors, Job neighborTo){ TreeSet tree = distanceNodeTree.get(neighborTo.getId()); + if(tree == null) return new Iterator() { + + @Override + public boolean hasNext() { + return false; + } + + @Override + public Job next() { + return null; + } + + }; Iterator descendingIterator = tree.iterator(); return new NearestNeighborhoodIterator(descendingIterator, nNeighbors); }