From 3a252d48df734cdd55f6f8fbde9a56db178087e9 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Sun, 7 Jan 2018 19:07:29 +0800 Subject: [PATCH] Update readme --- Readme.md | 47 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/Readme.md b/Readme.md index f48b9d7..da90ad1 100644 --- a/Readme.md +++ b/Readme.md @@ -10,6 +10,9 @@ assemblies. ## Installation +If you don't want to build everything yourself, please checkout the release +page for pre-built images. + At the moment of this writing, Assembly3 only works with a forked FreeCAD [branch](https://github.com/realthunder/FreeCAD/tree/LinkStage3). You need to first checkout this branch and build it yourself. @@ -156,20 +159,47 @@ SolveSpace's solver design, that is, symbolic algebraic + non-linear least square minimization. It can be considered as a python implementation of the SolveSpace's solver. -SciPy offers a dozen of different minimization algorithms, but most of which -cannot compete with SolveSpace performance wise. The reasons for writing this -backend are, +SciPy offers a dozen of different [minimization](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html) +algorithms, but most of which cannot compete with SolveSpace performance wise. +The following list shows some non-formal testing result using default +parameters with the sample [assembly](#create-a-super-assembly-with-external-link-array) +described later + +| Algorithm | Time | +| --------- | ---- | +| SolveSpace (as reference) | 0.006s | +| Nelder-Mead | Not converge | +| Powell | 7.8s | +| CG | 10+37s [1](#f1) | +| BFGS | 10+0.8 [1](#f1) | +| Newton-CG | 10+61+0.5s [2](#f2),[3](#f3) | +| L-BFGS-B | 10+1.5s [1](#f1),[3](#f3) | +| TNC | 10+0.8s [1](#f1) | +| COBYLA | 0.2s [3](#f3) | +| SLSQP | 10+0.3 [1](#f1),[3](#f3) | +| dogleg | 10+61+?s [2](#f2) Failed to solve, linalg error | +| trust-ncg | 10+61+1.5s [2](#f2) | + +[1] Including Jacobian matrix calculation (10s in this test +case), which is implemented using sympy lambdify with numpy. + +[2] Including Hessian matrix calculation (61s in this test +case), in addition to Jacobian matrix. + +[3] The obtained solution contains small gaps in some of +the coincedence constrained points. Incorrect use of the algorithm? + +The reasons for writing this backend are, * SolveSpace is under GPL, which is incompatible with FreeCAD's LGPL, * To gain more insight of the solver system, and easy experimentation with new ideas due to its python based nature, * For future extension, physics based simulation, maybe? -You'll need to install SymPy and SciPy for your platform. For Ubuntu, simply -run +You'll need to install SymPy and SciPy for your platform. ``` -apt-get install python-sympy python-scipy +pip install --upgrade sympy scipy ``` ## Design @@ -184,10 +214,7 @@ which are summarized below, The forked FreeCAD core supports external object linking (with a new type of property, `PropertyXLink`, as a drop-in replacement of PropertyLink), -displaying, editing, importing and exporting. An important feature that's still -missing is cross document undo/redo. Currently, a single action involving -external objects may generate multiple transactions across multiple documents, -which is inconvenient and confusing if the user tries to undo/redo. +displaying, editing, importing/exporting, and cross-document undo/redo. ### Part-tree