From b95ad3dfd266be227a441c1c70f049971fdcafa0 Mon Sep 17 00:00:00 2001 From: Val Erastov Date: Wed, 1 Oct 2014 01:21:54 -0700 Subject: [PATCH] splitup is mistaken --- src/cad/SolveServer.java | 7 +++++-- src/cad/gcs/GlobalSolver.java | 10 +++++---- src/cad/gcs/constr/EqualsTo.java | 35 ++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 src/cad/gcs/constr/EqualsTo.java diff --git a/src/cad/SolveServer.java b/src/cad/SolveServer.java index 4e1fb23f..4ebe3280 100644 --- a/src/cad/SolveServer.java +++ b/src/cad/SolveServer.java @@ -5,6 +5,7 @@ import cad.gcs.GlobalSolver; import cad.gcs.Param; import cad.gcs.Solver; import cad.gcs.constr.Equal; +import cad.gcs.constr.EqualsTo; import cad.gcs.constr.Parallel; import cad.gcs.constr.Perpendicular; import gnu.trove.map.TIntObjectMap; @@ -37,7 +38,7 @@ public class SolveServer { ResourceHandler rh = new ResourceHandler(); rh.setDirectoriesListed(true); - rh.setResourceBase("/home/verastov/Dropbox/project/cadit/web"); + rh.setResourceBase("/home/xibyte/Dropbox/project/cadit/web"); handlers.addHandler(rh); server.setHandler(handlers); @@ -118,7 +119,9 @@ class SolveHandler extends AbstractHandler { } for (int i = 0; i < locked.length(); i++) { -// paramsDict.get(locked.getInt(i)).setLocked(true); + Param param = paramsDict.get(locked.getInt(i)); +// param.setLocked(true); + constraints.add(new EqualsTo(param, param.get())); } Solver.SubSystem subSystem = new Solver.SubSystem(constraints); diff --git a/src/cad/gcs/GlobalSolver.java b/src/cad/gcs/GlobalSolver.java index fab1b085..4a5af3c1 100644 --- a/src/cad/gcs/GlobalSolver.java +++ b/src/cad/gcs/GlobalSolver.java @@ -18,7 +18,7 @@ import java.util.List; public class GlobalSolver { - public static void globalSolve2(Solver.SubSystem subSystem, Runnable linearSolvedCallback) { + public static void globalSolve(Solver.SubSystem subSystem, Runnable linearSolvedCallback) { // for (Constraint c : subSystem.constraints) { // if (c instanceof Reconcilable) { @@ -44,7 +44,7 @@ public class GlobalSolver { } } - public static void globalSolve(Solver.SubSystem subSystem, Runnable linearSolvedCallback) { + public static void globalSolve2(Solver.SubSystem subSystem, Runnable linearSolvedCallback) { double eps = 0.0001; @@ -55,12 +55,14 @@ public class GlobalSolver { for (Solver.SubSystem system : subSystems) { java.lang.System.out.println("Solve subsystem: " + subSystem.value()); solveLM_COMMONS(system); - Solver.solve_BFGS(subSystem, false); - Solver.solve_LM(subSystem); +// Solver.solve_BFGS(system, false); +// Solver.solve_LM(system); java.lang.System.out.println("Subsystem solved: " + subSystem.value()); linearSolvedCallback.run(); } linearSolvedCallback.run(); + +// globalSolve2(subSystem, linearSolvedCallback); } diff --git a/src/cad/gcs/constr/EqualsTo.java b/src/cad/gcs/constr/EqualsTo.java new file mode 100644 index 00000000..e0e2e5fb --- /dev/null +++ b/src/cad/gcs/constr/EqualsTo.java @@ -0,0 +1,35 @@ +package cad.gcs.constr; + +import cad.gcs.Constraint; +import cad.gcs.Param; + +public class EqualsTo implements Constraint { + + private final Param[] params; + private final double value; + + public EqualsTo(Param p, double value) { + this.value = value; + this.params = new Param[]{p}; + } + + @Override + public double error() { + return params[0].get() - value; + } + + @Override + public Param[] getParams() { + return params; + } + + @Override + public void gradient(double[] out) { + out[0] = 1; + } + + @Override + public int pSize() { + return params.length; + } +}