diff --git a/LP/src/main/java/de/uni/bremen/cluster/editing/lp/google/GoogleSolveHelper.java b/LP/src/main/java/de/uni/bremen/cluster/editing/lp/google/GoogleSolveHelper.java index ddae7eefd2ee28d48e9dec953177edf1e65b44a1..363b925015bcc0aeea2ef7a4df82f2d058d98cb0 100644 --- a/LP/src/main/java/de/uni/bremen/cluster/editing/lp/google/GoogleSolveHelper.java +++ b/LP/src/main/java/de/uni/bremen/cluster/editing/lp/google/GoogleSolveHelper.java @@ -97,17 +97,10 @@ public abstract class GoogleSolveHelper { @SneakyThrows public void solve() { - try { - final long time = System.currentTimeMillis(); - createSolver(); - solve(time, false, null); - } catch (Exception e) { - if (e instanceof InterruptedException) { - ConsoleHelper.print("OrTools recived an interrupt"); - mpSolver.interruptSolve(); - throw new InterruptedException(); - } - } + final long time = System.currentTimeMillis(); + createSolver(); + mpSolver.suppressOutput(); + solve(time, false, null); } public void solve(EdgeModification<UndirectedEdge> changes) { diff --git a/Utilities/src/main/java/de/uni/bremen/cluster/editing/utilities/solver/common/FruchtemanLpOrIlpSolver.java b/Utilities/src/main/java/de/uni/bremen/cluster/editing/utilities/solver/common/FruchtemanLpOrIlpSolver.java index 3b6f302493a0332b562581b165a907194c94e136..ba46193cb58388469df758cd3a50108f74f7fadb 100644 --- a/Utilities/src/main/java/de/uni/bremen/cluster/editing/utilities/solver/common/FruchtemanLpOrIlpSolver.java +++ b/Utilities/src/main/java/de/uni/bremen/cluster/editing/utilities/solver/common/FruchtemanLpOrIlpSolver.java @@ -31,15 +31,11 @@ import java.util.concurrent.atomic.AtomicInteger; public class FruchtemanLpOrIlpSolver extends Solver { - private static int maxIlpEdges = 12000; - private static int minIlpP3s = 930; - private static int maxLPP3s = 140000; //not tested atm with smac + private static int maxIlpEdges = 4965; + private static int maxLpEdges = 76652; + private static int maxIlpP3s = 72410; + private static int maxLPP3s = 720000; private static boolean and = false; - private static double maxP3sRatioLP = 0.05; - private static double maxP3sRatioILP = 0.005; - private static double edgesVerticiesRatioILP = 0.02; - - private double p3Ratio; public FruchtemanLpOrIlpSolver(final ProblemInstance graph) { super(graph); @@ -111,13 +107,8 @@ public class FruchtemanLpOrIlpSolver extends Solver { return; } - p3Ratio = p3Helper.getSizeEdgeDisjointP3s() / (double) p3s; - ConsoleHelper.print("P3s found: " + p3s); - ConsoleHelper.print("P3-Ratio: " + p3Ratio); - if (p3s < minIlpP3s) { - bb(instance, p3Helper); - } else if (doIlp(p3s, instance)) { + if (doIlp(p3s, instance)) { ilp(instance); } else { bb(instance, p3Helper); @@ -126,10 +117,8 @@ public class FruchtemanLpOrIlpSolver extends Solver { } private boolean doIlp(int p3s, ProblemInstance instance) { - return !and && (instance.getEdges().size() < maxIlpEdges || p3Ratio < maxP3sRatioILP - || (instance.getVertices().size() / (double) instance.getVertices().size() < edgesVerticiesRatioILP)) - || and && (instance.getEdges().size() < maxIlpEdges && p3Ratio < maxP3sRatioILP - && (instance.getVertices().size() / (double) instance.getVertices().size() < edgesVerticiesRatioILP)); + return !and && (instance.getEdges().size() < maxIlpEdges || maxIlpP3s < p3s) + || and && (instance.getEdges().size() < maxIlpEdges && maxIlpP3s < p3s); } private void ilp(final ProblemInstance instance) { @@ -202,8 +191,8 @@ public class FruchtemanLpOrIlpSolver extends Solver { } private boolean doLP(ProblemInstance instance, P3Helper<ProblemInstance> p3Helper) { - return (!and && (p3Helper.getSizeAllP3s() < maxLPP3s || p3Ratio < maxP3sRatioLP)) - || (and && (p3Helper.getSizeAllP3s() < maxLPP3s && p3Ratio < maxP3sRatioLP)); + return (!and && (instance.getEdges().size() < maxLpEdges || p3Helper.getSizeAllP3s() < maxLPP3s)) + || (and && (instance.getEdges().size() < maxLpEdges && p3Helper.getSizeAllP3s() < maxLPP3s)); } @Override diff --git a/Utilities/src/main/java/de/uni/bremen/cluster/editing/utilities/solver/graphsplitter/TestMain.java b/Utilities/src/main/java/de/uni/bremen/cluster/editing/utilities/solver/graphsplitter/TestMain.java index baa9a2031af65fde6f13df35e49ca260c2a941f7..73b2e680970020e63947fabfbc1f75be7829e704 100644 --- a/Utilities/src/main/java/de/uni/bremen/cluster/editing/utilities/solver/graphsplitter/TestMain.java +++ b/Utilities/src/main/java/de/uni/bremen/cluster/editing/utilities/solver/graphsplitter/TestMain.java @@ -8,7 +8,7 @@ import de.uni.bremen.cluster.editing.utilities.common.api.algorithm.Solver; public class TestMain { public static void main(final String... args) { - final String path = "../test-cases/exact/exact061.gr"; + final String path = "../test-cases/exact/exact199.gr"; Solver.TRACKING = true; Solver solver = new GraphSplitterSolver(path); solver.solve();