diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8d9254e..5d30521 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,8 +1,11 @@ # Contribute -Do you like this project? If so, you can contribute to it in various ways, and you don't need to be a developer! +Do you like this project? +If so, you can contribute to it in various ways, +and you don't need to be a developer! -Download the latest GitHub version, then install the dev requirements in ``requirements-dev.txt``. +Download the latest GitHub version, +then install the dev requirements in ``requirements-dev.txt``. In a nutshell @@ -26,16 +29,25 @@ We use unittest. You can use it in two ways: This section is mainly intended for maintainers. Fell free to use the tools described here, but they are not necessary in any way. -* To publish a new version, use ``bump2version``. For instance ``bump2version minor``. -* Update CHANGELOG.md with release date and edit subsection titles. -* Regenerate the documentation (uses Sphinx). - * By hand with ``sphinx-build -b html sphinx/ docs/``. - * We also provide a configuration file for users of PyCharm that does the same. - * Clean everything with ``make clean``. -* Commit and add a tag (e. g. v0.4.0). -* Publish a new [GitHub release](https://github.com/HugoFara/pylinkage/releases). +1. To publish a new version, use ``bump2version``. For instance ``bump2version minor``. +2. Update CHANGELOG.md with release date and edit subsection titles. +3. Regenerate the documentation (uses Sphinx). + * By hand with ``sphinx-build -b html sphinx/ docs/``. + * We also provide a configuration file for users of PyCharm that does the same. + * Clean everything with ``make clean``. +4. Commit and add a tag (e. g. v0.4.0). +5. Publish a new [GitHub release](https://github.com/HugoFara/pylinkage/releases). + + +## Caveats + +Pylinkage is a small project to build 2D linkages in a simple way. +It is not intended for complex simulations. +If you want to do much more, my best advice is to start your own project. +If you simply want to have fun developing new features, you are welcome here! ## Contributions for everyone Don't forget to drop a star, fork it or share it on social media. This is a community project, and the bigger the community, the more it will thrive! + diff --git a/README.md b/README.md index 6d67a87..cd862a3 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ score, position, coord = pl.particle_swarm_optimization( # Let's use the result in our linkage! my_linkage.set_num_constraints(constraints) # Dimensions -my_linkage.set_coords(init_pos) # Intial position +my_linkage.set_coords(init_pos) # Initial position pl.show_linkage(my_linkage) ``` @@ -224,7 +224,7 @@ Our objective function, often called the fitness function, is the following: init_pos = my_linkage.get_coords() @pl.kinematic_minimizastion -def fitness_func(loci, **kwargs): +def fitness_func(loci, **_kwargs): """ Return how fit the locus is to describe a quarter of circle. @@ -311,12 +311,21 @@ With a bit of imagination, you have a wonderful windshield wiper! As of today, we segment the code in main three parts: * [linkage.py](https://github.com/HugoFara/pylinkage/blob/main/pylinkage/linkage.py) this module describes joints and linkages - * Due to the geometric approach, joints (instances of ``Joint`` object) are defined without links. + * Due to the geometric approach, joints (instances of ``Joint`` object) + are defined without links. * The ``Linkage`` class that will make your code shorter. * [optimizer.py](https://github.com/HugoFara/pylinkage/blob/main/pylinkage/optimizer.py) proposes three optimizations based on three techniques: - * The "exhaustive" optimization (``exhaustive_optimization`` function) is a simple grid search optimization method, consisting or trying sequencially all positions. It is here for demonstration purposes only, and you should not use it if you are looking for an efficient technique. - * The built-in Particle Swarm Optimizer (PSO). I started with it, so it offers a large set of useful options for linkage optimization. However, it is here for legacy purposes, and is much short than the PySwarms module. - * PSO using [PySwarms](https://github.com/ljvmiranda921/pyswarms). We provide a wrapper function to PySwarm from ljvmiranda921, that will progressively be extended. + * The "exhaustive" optimization (``exhaustive_optimization`` function) + is a simple grid search optimization method, + consisting or trying sequentially all positions. + It is here for demonstration purposes only, + and you should not use it if you are looking for an efficient technique. + * The built-in Particle Swarm Optimizer (PSO). + I started with it, so it offers a large set of useful options for linkage optimization. + However, it is here for legacy purposes, and is much shorter than the PySwarms module. + * PSO using [PySwarms](https://github.com/ljvmiranda921/pyswarms). + We provide a wrapper function to PySwarm from ljvmiranda921, + that will progressively be extended. * [visualizer.py](https://github.com/HugoFara/pylinkage/blob/main/pylinkage/visualizer.py) can make graphic illustrations of your linkage using matplotlib. * It is also used to visualize your n-dimensional swarm, which is not supported by PySwarms. diff --git a/docs/api/collections.html b/docs/api/collections.html index 7902524..1a56b64 100644 --- a/docs/api/collections.html +++ b/docs/api/collections.html @@ -1,7 +1,7 @@
- +linkage.py this module describes joints and linkages
Due to the geometric approach, joints (instances of Joint
object) are defined without links.
Due to the geometric approach, joints (instances of Joint
object)
+are defined without links.
The Linkage
class that will make your code shorter.
optimizer.py proposes three optimizations based on three techniques:
The “exhaustive” optimization (exhaustive_optimization
function) is a simple grid search optimization method, consisting or trying sequencially all positions. It is here for demonstration purposes only, and you should not use it if you are looking for an efficient technique.
The built-in Particle Swarm Optimizer (PSO). I started with it, so it offers a large set of useful options for linkage optimization. However, it is here for legacy purposes, and is much short than the PySwarms module.
PSO using PySwarms. We provide a wrapper function to PySwarm from ljvmiranda921, that will progressively be extended.
The “exhaustive” optimization (exhaustive_optimization
function)
+is a simple grid search optimization method,
+consisting or trying sequentially all positions.
+It is here for demonstration purposes only,
+and you should not use it if you are looking for an efficient technique.
The built-in Particle Swarm Optimizer (PSO). +I started with it, so it offers a large set of useful options for linkage optimization. +However, it is here for legacy purposes, and is much shorter than the PySwarms module.
PSO using PySwarms. +We provide a wrapper function to PySwarm from ljvmiranda921, +that will progressively be extended.
visualizer.py can make graphic illustrations of your linkage using matplotlib.
diff --git a/docs/readmelink.html b/docs/readmelink.html index b2fe125..f948cb4 100644 --- a/docs/readmelink.html +++ b/docs/readmelink.html @@ -1,7 +1,7 @@ - +linkage.py this module describes joints and linkages
Due to the geometric approach, joints (instances of Joint
object) are defined without links.
Due to the geometric approach, joints (instances of Joint
object)
+are defined without links.
The Linkage
class that will make your code shorter.
optimizer.py proposes three optimizations based on three techniques:
The “exhaustive” optimization (exhaustive_optimization
function) is a simple grid search optimization method, consisting or trying sequencially all positions. It is here for demonstration purposes only, and you should not use it if you are looking for an efficient technique.
The built-in Particle Swarm Optimizer (PSO). I started with it, so it offers a large set of useful options for linkage optimization. However, it is here for legacy purposes, and is much short than the PySwarms module.
PSO using PySwarms. We provide a wrapper function to PySwarm from ljvmiranda921, that will progressively be extended.
The “exhaustive” optimization (exhaustive_optimization
function)
+is a simple grid search optimization method,
+consisting or trying sequentially all positions.
+It is here for demonstration purposes only,
+and you should not use it if you are looking for an efficient technique.
The built-in Particle Swarm Optimizer (PSO). +I started with it, so it offers a large set of useful options for linkage optimization. +However, it is here for legacy purposes, and is much shorter than the PySwarms module.
PSO using PySwarms. +We provide a wrapper function to PySwarm from ljvmiranda921, +that will progressively be extended.
visualizer.py can make graphic illustrations of your linkage using matplotlib.
diff --git a/docs/searchindex.js b/docs/searchindex.js index 11ae86d..493ea31 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"1. Correction": [[7, "correction"]], "2. Warning": [[7, "warning"]], "3. Temporary Ban": [[7, "temporary-ban"]], "4. Permanent Ban": [[7, "permanent-ban"]], "Added": [[6, "added"]], "Added in 0.0.1": [[6, "added-in-0-0-1"]], "Added in 0.2.0": [[6, "added-in-0-2-0"]], "Added in 0.2.1": [[6, "added-in-0-2-1"]], "Added in 0.2.2": [[6, "added-in-0-2-2"]], "Added in 0.3.0": [[6, "added-in-0-3-0"]], "Added in 0.4.0": [[6, "added-in-0-4-0"]], "Added in 0.4.1": [[6, "added-in-0-4-1"]], "Added in 0.5.0": [[6, "added-in-0-5-0"]], "Added in 0.5.1": [[6, "added-in-0-5-1"]], "Added in 0.5.2": [[6, "added-in-0-5-2"]], "Added in 0.5.3": [[6, "added-in-0-5-3"]], "Agent": [[0, "module-pylinkage.collections.agent"]], "Arguments": [[2, "arguments"], [2, "id1"]], "Attribution": [[7, "attribution"]], "Base module for geometric abstractions": [[1, "module-pylinkage.geometry"]], "Changed": [[6, "changed"]], "Changed in 0.2.0": [[6, "changed-in-0-2-0"]], "Changed in 0.2.1": [[6, "changed-in-0-2-1"]], "Changed in 0.3.0": [[6, "changed-in-0-3-0"]], "Changed in 0.4.0": [[6, "changed-in-0-4-0"]], "Changed in 0.4.1": [[6, "changed-in-0-4-1"]], "Changed in 0.5.0": [[6, "changed-in-0-5-0"]], "Changed in 0.5.1": [[6, "changed-in-0-5-1"]], "Changed in 0.5.2": [[6, "changed-in-0-5-2"]], "Changed in 0.5.3": [[6, "changed-in-0-5-3"]], "Changelog": [[6, "changelog"]], "Complete example": [[8, "complete-example"], [9, "complete-example"]], "Contributing": [[8, "contributing"], [9, "contributing"]], "Contributor Covenant Code of Conduct": [[7, "contributor-covenant-code-of-conduct"]], "Deprecated": [[6, "deprecated"]], "Deprecated in 0.5.3": [[6, "deprecated-in-0-5-3"]], "Enforcement": [[7, "enforcement"]], "Enforcement Guidelines": [[7, "enforcement-guidelines"]], "Enforcement Responsibilities": [[7, "enforcement-responsibilities"]], "Exceptions": [[2, "module-pylinkage.interface.exceptions"]], "Fixed": [[6, "fixed"]], "Fixed in 0.2.1": [[6, "fixed-in-0-2-1"]], "Fixed in 0.2.2": [[6, "fixed-in-0-2-2"]], "Fixed in 0.3.0": [[6, "fixed-in-0-3-0"]], "Fixed in 0.4.0": [[6, "fixed-in-0-4-0"]], "Fixed in 0.5.0": [[6, "fixed-in-0-5-0"]], "Fixed in 0.5.3": [[6, "fixed-in-0-5-3"]], "Indices and tables": [[8, "indices-and-tables"]], "Installation": [[8, "installation"], [9, "installation"]], "Introduction": [[8, null]], "Joint definition": [[2, "module-pylinkage.interface.joint"]], "Joints definition": [[8, "joints-definition"], [9, "joints-definition"]], "Linkage definition": [[2, "module-pylinkage.interface.linkage"]], "Linkage definition and simulation": [[8, "linkage-definition-and-simulation"], [9, "linkage-definition-and-simulation"]], "Modules": [[8, null]], "MutableAgent": [[0, "module-pylinkage.collections.mutable_agent"]], "Optimization": [[8, "optimization"], [9, "optimization"]], "Our Pledge": [[7, "our-pledge"]], "Our Standards": [[7, "our-standards"]], "Parameters": [[2, "parameters"]], "Particle Swarm Optimization": [[3, "module-pylinkage.optimization.particle_swarm"]], "Pylinkage": [[8, "pylinkage"], [9, "pylinkage"]], "Quick Links": [[8, null]], "Removed in 0.4.0": [[6, "removed-in-0-4-0"]], "Requirements": [[8, "requirements"], [9, "requirements"]], "Returns": [[2, "returns"]], "Revolute joint definition": [[2, "module-pylinkage.interface.revolute_joint"]], "Scope": [[7, "scope"]], "Setting up Virtual Environment": [[8, "setting-up-virtual-environment"], [9, "setting-up-virtual-environment"]], "Short demo": [[8, "short-demo"], [9, "short-demo"]], "Simple plotter for your linkages": [[5, "module-pylinkage.visualizer"]], "Structure": [[8, "structure"], [9, "structure"]], "Trials and errors (grid search)": [[3, "module-pylinkage.optimization.grid_search"]], "Using pip": [[8, "using-pip"], [9, "using-pip"]], "Utility": [[3, "module-pylinkage.optimization.utils"]], "Various functions to help you handle linkages": [[4, "module-pylinkage.utility"]], "Visualization": [[8, "visualization"], [9, "visualization"]], "Welcome to pylinkage\u2019s documentation!": [[8, "welcome-to-pylinkage-s-documentation"]], "[0.0.1] - 2021-06-12": [[6, "id11"]], "[0.2.0] - 2021-06-14": [[6, "id10"]], "[0.2.1] - 2021-06-16": [[6, "id9"]], "[0.2.2] - 2021-06-22": [[6, "id8"]], "[0.3.0] - 2021-07-05": [[6, "id7"]], "[0.4.0] - 2021-07-06": [[6, "id6"]], "[0.4.1] - 2021-07-11": [[6, "id5"]], "[0.5.0] - 2021-07-12": [[6, "id4"]], "[0.5.1] - 2021-07-14": [[6, "id3"]], "[0.5.2] - 2021-07-21": [[6, "id2"]], "[0.5.3] - 2023-06-23": [[6, "id1"]], "[Unreleased]": [[6, "unreleased"]], "collections": [[0, "collections"]], "geometry": [[1, "geometry"]], "interface": [[2, "interface"]], "optimization": [[3, "optimization"]], "utility": [[4, "utility"]], "visualizer": [[5, "visualizer"]]}, "docnames": ["api/collections", "api/geometry", "api/interface", "api/optimization", "api/utility", "api/visualizer", "changeloglink", "code_of_conductlink", "index", "readmelink"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["api/collections.rst", "api/geometry.rst", "api/interface.rst", "api/optimization.rst", "api/utility.rst", "api/visualizer.rst", "changeloglink.rst", "code_of_conductlink.rst", "index.rst", "readmelink.rst"], "indexentries": {"__init__() (pylinkage.collections.mutable_agent.mutableagent method)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.__init__", false]], "__init__() (pylinkage.interface.exceptions.hypostaticerror method)": [[2, "pylinkage.interface.exceptions.HypostaticError.__init__", false]], "__init__() (pylinkage.interface.exceptions.unbuildableerror method)": [[2, "pylinkage.interface.exceptions.UnbuildableError.__init__", false]], "__init__() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.__init__", false]], "__init__() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.__init__", false]], "__init__() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.__init__", false]], "__init__() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.__init__", false]], "__init__() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.__init__", false]], "__init__() (pylinkage.interface.revolute_joint.pivot method)": [[2, "pylinkage.interface.revolute_joint.Pivot.__init__", false]], "__init__() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.__init__", false]], "_abc_impl (pylinkage.interface.joint.crank attribute)": [[2, "pylinkage.interface.joint.Crank._abc_impl", false]], "_abc_impl (pylinkage.interface.joint.fixed attribute)": [[2, "pylinkage.interface.joint.Fixed._abc_impl", false]], "_abc_impl (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint._abc_impl", false]], "_abc_impl (pylinkage.interface.joint.static attribute)": [[2, "pylinkage.interface.joint.Static._abc_impl", false]], "_abc_impl (pylinkage.interface.revolute_joint.pivot attribute)": [[2, "pylinkage.interface.revolute_joint.Pivot._abc_impl", false]], "_abc_impl (pylinkage.interface.revolute_joint.revolute attribute)": [[2, "pylinkage.interface.revolute_joint.Revolute._abc_impl", false]], "_cranks (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage._cranks", false]], "_get_color() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer._get_color", false]], "_solve_order (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage._solve_order", false]], "agent (class in pylinkage.collections.agent)": [[0, "pylinkage.collections.agent.Agent", false]], "angle (pylinkage.interface.joint.crank attribute)": [[2, "pylinkage.interface.joint.Crank.angle", false]], "angle (pylinkage.interface.joint.fixed attribute)": [[2, "pylinkage.interface.joint.Fixed.angle", false]], "bounding_box() (in module pylinkage.utility)": [[4, "pylinkage.utility.bounding_box", false]], "circle() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.circle", false]], "circle_intersect() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.circle_intersect", false]], "coord() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.coord", false]], "crank (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Crank", false]], "cyl_to_cart() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.cyl_to_cart", false]], "dimensions (pylinkage.collections.mutable_agent.mutableagent attribute)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.dimensions", false]], "dist_builtin() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.dist_builtin", false]], "fast_variator() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.fast_variator", false]], "fixed (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Fixed", false]], "generate_bounds() (in module pylinkage.optimization.utils)": [[3, "pylinkage.optimization.utils.generate_bounds", false]], "get_constraints() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.get_constraints", false]], "get_constraints() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.get_constraints", false]], "get_constraints() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.get_constraints", false]], "get_constraints() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.get_constraints", false]], "get_constraints() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.get_constraints", false]], "get_coords() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.get_coords", false]], "get_num_constraints() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.get_num_constraints", false]], "get_rotation_period() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.get_rotation_period", false]], "hyperstaticity() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.hyperstaticity", false]], "hypostaticerror": [[2, "pylinkage.interface.exceptions.HypostaticError", false]], "init_positions (pylinkage.collections.mutable_agent.mutableagent attribute)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.init_positions", false]], "intersection() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.intersection", false]], "joint (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Joint", false]], "joint0 (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.joint0", false]], "joint1 (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.joint1", false]], "joints (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage.joints", false]], "kinematic_default_test() (in module pylinkage.utility)": [[4, "pylinkage.utility.kinematic_default_test", false]], "kinematic_maximization() (in module pylinkage.utility)": [[4, "pylinkage.utility.kinematic_maximization", false]], "kinematic_minimization() (in module pylinkage.utility)": [[4, "pylinkage.utility.kinematic_minimization", false]], "linkage (class in pylinkage.interface.linkage)": [[2, "pylinkage.interface.linkage.Linkage", false]], "module": [[0, "module-pylinkage.collections.agent", false], [0, "module-pylinkage.collections.mutable_agent", false], [1, "module-pylinkage.geometry", false], [2, "module-pylinkage.interface.exceptions", false], [2, "module-pylinkage.interface.joint", false], [2, "module-pylinkage.interface.linkage", false], [2, "module-pylinkage.interface.revolute_joint", false], [3, "module-pylinkage.optimization.grid_search", false], [3, "module-pylinkage.optimization.particle_swarm", false], [3, "module-pylinkage.optimization.utils", false], [4, "module-pylinkage.utility", false], [5, "module-pylinkage.visualizer", false]], "movement_bounding_bow() (in module pylinkage.utility)": [[4, "pylinkage.utility.movement_bounding_bow", false]], "movement_bounding_box() (in module pylinkage.utility)": [[4, "pylinkage.utility.movement_bounding_box", false]], "mutableagent (class in pylinkage.collections.mutable_agent)": [[0, "pylinkage.collections.mutable_agent.MutableAgent", false]], "name (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.name", false]], "name (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage.name", false]], "norm() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.norm", false]], "particle_swarm_optimization() (in module pylinkage.optimization.particle_swarm)": [[3, "pylinkage.optimization.particle_swarm.particle_swarm_optimization", false]], "pivot (class in pylinkage.interface.revolute_joint)": [[2, "pylinkage.interface.revolute_joint.Pivot", false]], "plot_kinematic_linkage() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.plot_kinematic_linkage", false]], "plot_static_linkage() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.plot_static_linkage", false]], "pylinkage.collections.agent": [[0, "module-pylinkage.collections.agent", false]], "pylinkage.collections.mutable_agent": [[0, "module-pylinkage.collections.mutable_agent", false]], "pylinkage.geometry": [[1, "module-pylinkage.geometry", false]], "pylinkage.interface.exceptions": [[2, "module-pylinkage.interface.exceptions", false]], "pylinkage.interface.joint": [[2, "module-pylinkage.interface.joint", false]], "pylinkage.interface.linkage": [[2, "module-pylinkage.interface.linkage", false]], "pylinkage.interface.revolute_joint": [[2, "module-pylinkage.interface.revolute_joint", false]], "pylinkage.optimization.grid_search": [[3, "module-pylinkage.optimization.grid_search", false]], "pylinkage.optimization.particle_swarm": [[3, "module-pylinkage.optimization.particle_swarm", false]], "pylinkage.optimization.utils": [[3, "module-pylinkage.optimization.utils", false]], "pylinkage.utility": [[4, "module-pylinkage.utility", false]], "pylinkage.visualizer": [[5, "module-pylinkage.visualizer", false]], "r (pylinkage.interface.joint.crank attribute)": [[2, "pylinkage.interface.joint.Crank.r", false]], "r (pylinkage.interface.joint.fixed attribute)": [[2, "pylinkage.interface.joint.Fixed.r", false]], "r0 (pylinkage.interface.revolute_joint.pivot attribute)": [[2, "pylinkage.interface.revolute_joint.Pivot.r0", false]], "r0 (pylinkage.interface.revolute_joint.revolute attribute)": [[2, "pylinkage.interface.revolute_joint.Revolute.r0", false]], "r1 (pylinkage.interface.revolute_joint.pivot attribute)": [[2, "pylinkage.interface.revolute_joint.Pivot.r1", false]], "r1 (pylinkage.interface.revolute_joint.revolute attribute)": [[2, "pylinkage.interface.revolute_joint.Revolute.r1", false]], "rebuild() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.rebuild", false]], "reload() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.reload", false]], "reload() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.reload", false]], "reload() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.reload", false]], "reload() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.reload", false]], "revolute (class in pylinkage.interface.revolute_joint)": [[2, "pylinkage.interface.revolute_joint.Revolute", false]], "score (pylinkage.collections.mutable_agent.mutableagent attribute)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.score", false]], "sequential_variator() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.sequential_variator", false]], "set_anchor0() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.set_anchor0", false]], "set_anchor0() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.set_anchor0", false]], "set_anchor0() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.set_anchor0", false]], "set_anchor0() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.set_anchor0", false]], "set_anchor1() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.set_anchor1", false]], "set_anchor1() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.set_anchor1", false]], "set_anchor1() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.set_anchor1", false]], "set_completely() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.set_completely", false]], "set_constraints() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.set_constraints", false]], "set_constraints() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.set_constraints", false]], "set_constraints() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.set_constraints", false]], "set_constraints() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.set_constraints", false]], "set_constraints() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.set_constraints", false]], "set_coord() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.set_coord", false]], "set_coords() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.set_coords", false]], "set_num_constraints() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.set_num_constraints", false]], "show_linkage() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.show_linkage", false]], "sqr_dist() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.sqr_dist", false]], "static (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Static", false]], "step() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.step", false]], "swarm_tiled_repr() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.swarm_tiled_repr", false]], "tqdm_verbosity() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.tqdm_verbosity", false]], "trials_and_errors_optimization() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.trials_and_errors_optimization", false]], "unbuildableerror": [[2, "pylinkage.interface.exceptions.UnbuildableError", false]], "update_animated_plot() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.update_animated_plot", false]], "x (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.x", false]], "y (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.y", false]]}, "objects": {"pylinkage": [[1, 0, 0, "-", "geometry"], [4, 0, 0, "-", "utility"], [5, 0, 0, "-", "visualizer"]], "pylinkage.collections": [[0, 0, 0, "-", "agent"], [0, 0, 0, "-", "mutable_agent"]], "pylinkage.collections.agent": [[0, 1, 1, "", "Agent"]], "pylinkage.collections.mutable_agent": [[0, 1, 1, "", "MutableAgent"]], "pylinkage.collections.mutable_agent.MutableAgent": [[0, 2, 1, "", "__init__"], [0, 3, 1, "", "dimensions"], [0, 3, 1, "", "init_positions"], [0, 3, 1, "", "score"]], "pylinkage.geometry": [[1, 4, 1, "", "circle_intersect"], [1, 4, 1, "", "cyl_to_cart"], [1, 4, 1, "", "dist_builtin"], [1, 4, 1, "", "intersection"], [1, 4, 1, "", "norm"], [1, 4, 1, "", "sqr_dist"]], "pylinkage.interface": [[2, 0, 0, "-", "exceptions"], [2, 0, 0, "-", "joint"], [2, 0, 0, "-", "linkage"], [2, 0, 0, "-", "revolute_joint"]], "pylinkage.interface.exceptions": [[2, 5, 1, "", "HypostaticError"], [2, 5, 1, "", "UnbuildableError"]], "pylinkage.interface.exceptions.HypostaticError": [[2, 2, 1, "", "__init__"]], "pylinkage.interface.exceptions.UnbuildableError": [[2, 2, 1, "", "__init__"]], "pylinkage.interface.joint": [[2, 1, 1, "", "Crank"], [2, 1, 1, "", "Fixed"], [2, 1, 1, "", "Joint"], [2, 1, 1, "", "Static"]], "pylinkage.interface.joint.Crank": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "angle"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "r"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_constraints"]], "pylinkage.interface.joint.Fixed": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "angle"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "r"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_anchor1"], [2, 2, 1, "", "set_constraints"]], "pylinkage.interface.joint.Joint": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 2, 1, "", "coord"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "joint0"], [2, 3, 1, "", "joint1"], [2, 3, 1, "", "name"], [2, 2, 1, "", "set_constraints"], [2, 2, 1, "", "set_coord"], [2, 3, 1, "", "x"], [2, 3, 1, "", "y"]], "pylinkage.interface.joint.Static": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 2, 1, "", "get_constraints"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_anchor1"], [2, 2, 1, "", "set_constraints"]], "pylinkage.interface.linkage": [[2, 1, 1, "", "Linkage"]], "pylinkage.interface.linkage.Linkage": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_cranks"], [2, 3, 1, "", "_solve_order"], [2, 2, 1, "", "get_coords"], [2, 2, 1, "", "get_num_constraints"], [2, 2, 1, "", "get_rotation_period"], [2, 2, 1, "", "hyperstaticity"], [2, 3, 1, "", "joints"], [2, 3, 1, "", "name"], [2, 2, 1, "", "rebuild"], [2, 2, 1, "", "set_completely"], [2, 2, 1, "", "set_coords"], [2, 2, 1, "", "set_num_constraints"], [2, 2, 1, "", "step"]], "pylinkage.interface.revolute_joint": [[2, 1, 1, "", "Pivot"], [2, 1, 1, "", "Revolute"]], "pylinkage.interface.revolute_joint.Pivot": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "r0"], [2, 3, 1, "", "r1"]], "pylinkage.interface.revolute_joint.Revolute": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 2, 1, "", "circle"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "r0"], [2, 3, 1, "", "r1"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_anchor1"], [2, 2, 1, "", "set_constraints"]], "pylinkage.optimization": [[3, 0, 0, "-", "grid_search"], [3, 0, 0, "-", "particle_swarm"], [3, 0, 0, "-", "utils"]], "pylinkage.optimization.grid_search": [[3, 4, 1, "", "fast_variator"], [3, 4, 1, "", "sequential_variator"], [3, 4, 1, "", "tqdm_verbosity"], [3, 4, 1, "", "trials_and_errors_optimization"]], "pylinkage.optimization.particle_swarm": [[3, 4, 1, "", "particle_swarm_optimization"]], "pylinkage.optimization.utils": [[3, 4, 1, "", "generate_bounds"]], "pylinkage.utility": [[4, 4, 1, "", "bounding_box"], [4, 4, 1, "", "kinematic_default_test"], [4, 4, 1, "", "kinematic_maximization"], [4, 4, 1, "", "kinematic_minimization"], [4, 4, 1, "", "movement_bounding_bow"], [4, 4, 1, "", "movement_bounding_box"]], "pylinkage.visualizer": [[5, 4, 1, "", "_get_color"], [5, 4, 1, "", "plot_kinematic_linkage"], [5, 4, 1, "", "plot_static_linkage"], [5, 4, 1, "", "show_linkage"], [5, 4, 1, "", "swarm_tiled_repr"], [5, 4, 1, "", "update_animated_plot"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "exception", "Python exception"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:exception"}, "terms": {"": [6, 7, 9], "0": [1, 2, 3, 4, 5, 7, 8, 9], "00": 4, "01": 4, "05": [8, 9], "06": [2, 8], "07": 8, "1": [1, 2, 3, 5, 8, 9], "10": [3, 6], "100": [3, 5, 6], "11": 8, "12": [4, 5, 8], "13": [3, 5, 6], "14": [5, 8], "15": 2, "16": [2, 8], "17": [1, 3], "1997": 1, "2": [1, 2, 3, 8, 9], "20": [2, 6], "200": 3, "2019": 3, "2021": [1, 2, 4, 5, 8], "2023": 8, "21": [2, 8], "22": 8, "23": 8, "24": 5, "25": [8, 9], "27": 6, "2d": [1, 2, 6], "3": [0, 1, 3, 5, 8, 9], "31": [8, 9], "34": 1, "39": 2, "4": 8, "40": 5, "45": [1, 3], "5": [1, 3, 5, 8, 9], "51": 3, "58": 5, "6": [2, 3, 4, 6], "7": [2, 3, 4, 6], "8": [1, 3], "9": 6, "90": [8, 9], "A": [0, 2, 3, 4, 5, 6, 7, 8, 9], "And": [8, 9], "As": [8, 9], "Being": 7, "But": [8, 9], "For": [6, 7, 8, 9], "If": [2, 3, 5, 8, 9], "In": [4, 6, 8, 9], "It": [0, 1, 2, 3, 6, 8, 9], "Its": 3, "NOT": 2, "No": [0, 7], "On": [8, 9], "That": [8, 9], "The": [1, 2, 3, 4, 5, 6, 7, 8, 9], "Then": [8, 9], "There": 3, "To": [5, 8, 9], "With": [6, 8, 9], "__find_solving_order__": 6, "__init__": [0, 2, 6], "_abc": 2, "_abc_data": 2, "_abc_impl": 2, "_crank": 2, "_get_color": 5, "_solve_ord": 2, "_subplot": 5, "ab": 3, "abc": 2, "abcsic": 6, "about": 7, "abov": [8, 9], "abscissa": [1, 2], "absolut": [1, 6], "abstract": [2, 8], "abus": 7, "accept": 7, "access": 2, "account": 7, "achiev": [8, 9], "across": 2, "act": 7, "action": 7, "actual": [8, 9], "ad": 3, "adapt": 7, "add": [5, 6, 8, 9], "address": 7, "adher": 6, "advanc": 7, "advis": 6, "affect": [2, 6, 7], "after": 6, "ag": 7, "agent": [3, 5, 6, 8, 9], "aggress": 7, "align": [6, 7], "all": [2, 3, 5, 6, 7, 8, 9], "allow": [2, 6, 7], "almost": 3, "alpha": 6, "also": [2, 7, 8, 9], "alwai": 2, "ambigu": 2, "amount": 2, "amplitud": [8, 9], "an": [2, 3, 5, 6, 7, 8, 9], "anchor": 2, "angl": [1, 2, 6, 8, 9], "ani": [1, 4, 5, 7, 8, 9], "anim": [5, 6], "anoth": 6, "answer": 7, "anymor": 6, "anyth": 3, "anywai": 6, "apolog": 7, "apologi": 7, "appear": 7, "appli": [2, 7], "appoint": 7, "approach": [8, 9], "appropri": 7, "apr": 2, "ar": [1, 2, 3, 5, 6, 7, 8, 9], "arbitrari": [1, 6], "arg": [2, 3], "argument": [3, 6, 8, 9], "around": 7, "arrai": [3, 6], "article_swarm_optim": 6, "artist": 5, "ask": [6, 8, 9], "assign": [0, 2, 3, 6], "attack": 7, "attent": 7, "attribut": 8, "author": [1, 2, 3, 4, 5], "automat": [2, 5, 6, 8, 9], "avail": 7, "averag": 6, "avoid": [6, 7], "ax": [5, 6], "axessubplot": 5, "axi": [1, 2, 5], "b": [8, 9], "back": 6, "backward": 0, "bar": [6, 8, 9], "base": [0, 2, 6, 8, 9], "basi": 6, "basic": 6, "becaus": [3, 6, 8, 9], "bee": [8, 9], "been": [2, 6], "befor": [4, 5, 6], "begin": 6, "behavior": [6, 7], "behaviour": 6, "behind": [8, 9], "best": [2, 3, 6, 7, 8, 9], "beta": [6, 8, 9], "better": 3, "between": [1, 2, 3, 5, 6, 8, 9], "big": 3, "bigger": 6, "bit": [6, 8, 9], "bodi": 7, "bool": [2, 3, 5], "both": [2, 6, 8, 9], "bound": [3, 4, 6, 8, 9], "bounding_box": [4, 6, 8, 9], "bourk": 1, "box": [4, 6, 8, 9], "branch": 6, "break": 6, "build": [8, 9], "buildabl": 6, "builder": [6, 8, 9], "built": [1, 2, 3, 6, 8, 9], "bump2vers": 6, "c": [8, 9], "c1": 3, "c2": 3, "calcul": [6, 8, 9], "call": [2, 3, 8, 9], "callabl": [3, 4, 5], "can": [1, 2, 3, 6, 8, 9], "candid": [3, 8, 9], "cannot": 2, "capabl": [8, 9], "cartesian": [1, 2], "case": [0, 2, 4, 6], "caus": 6, "center": [2, 3], "certain": [8, 9], "certainli": 3, "cfg": 6, "chang": 3, "changelog": 8, "channel": 7, "characterist": [2, 7], "check": 6, "checker": 6, "choos": [6, 8, 9], "circl": [1, 2, 6, 8, 9], "circle1": 1, "circle2": 1, "circle_intersect": 1, "circlespher": 1, "circular": 2, "clarifi": 7, "clariti": 7, "class": [0, 2, 6, 7, 8, 9], "classic": [8, 9], "clear": 6, "clearli": 6, "close": [8, 9], "closer": [8, 9], "code": [6, 8, 9], "code_of_conduct": [6, 7, 8, 9], "coeffici": 3, "collect": [6, 8], "color": [5, 6], "color_switch": [5, 6], "combin": [3, 6], "come": [6, 8, 9], "comment": 7, "commit": 7, "common": [2, 3, 4, 7, 8, 9], "commun": [7, 8, 9], "compar": 3, "compat": [0, 6], "complaint": 7, "complet": [4, 6], "complex": [8, 9], "compress": [3, 6], "comput": [2, 4, 6], "conda": [6, 8, 9], "conduct": 8, "configur": 6, "confus": 6, "consecut": 3, "consequ": [6, 7], "consid": [1, 3, 6, 7, 8, 9], "consist": [2, 6, 8, 9], "consol": 3, "constant": [2, 8, 9], "constrain": [2, 6], "constraint": [2, 3, 8, 9], "construct": 7, "contain": [3, 6], "continu": [6, 7], "contribut": 7, "converg": 6, "convert": 1, "cool": [8, 9], "coord": [2, 8, 9], "coordin": [1, 2, 5, 8, 9], "corner": [8, 9], "correspond": [2, 5], "cost": 6, "could": [6, 7], "crank": [2, 5, 8, 9], "creat": [1, 2, 3, 4, 5, 8, 9], "criterion": [8, 9], "crucial": [8, 9], "curr_bb": [8, 9], "current": [2, 8, 9], "curtain": [8, 9], "custom": [0, 6], "cyl_to_cart": 1, "d": [3, 8, 9], "de": 2, "decis": 7, "decor": [4, 6, 8, 9], "deem": 7, "def": [8, 9], "default": [1, 2, 3, 5, 6], "defin": [2, 6, 8, 9], "definit": 6, "deform": [8, 9], "degre": 2, "delai": 5, "delta_dim": [3, 6], "demo": 6, "demonstr": [7, 8, 9], "denomin": 2, "deprec": [2, 3, 4], "derogatori": 7, "describ": [3, 8, 9], "descript": 5, "determin": 7, "develop": 6, "dict": 3, "dictionari": 0, "differ": [2, 7, 8, 9], "digit": 2, "dilat": [3, 6], "dim": 6, "dimens": [0, 2, 3, 5, 6, 8, 9], "dimension": [2, 8, 9], "dimension_func": 5, "disabl": [3, 6, 7], "disparag": 7, "displai": [5, 6], "dist": 1, "dist_builtin": 1, "distanc": [1, 2, 8, 9], "distance0": [2, 8, 9], "distance1": [2, 8, 9], "divers": 7, "divis": [3, 6, 8, 9], "do": [2, 6, 8, 9], "doc": 6, "docstr": 6, "document": 6, "doesn": [8, 9], "don": [8, 9], "done": 6, "download": [8, 9], "draw": [5, 8, 9], "dt": [2, 8, 9], "due": [6, 8, 9], "durat": 5, "dure": 7, "e": 7, "each": [1, 2, 3, 5, 6, 8, 9], "easi": 5, "easier": 6, "econom": 7, "edg": [8, 9], "edit": 7, "educ": 7, "effici": [6, 8, 9], "either": [2, 8, 9], "element": [0, 2, 3, 5], "els": 3, "email": 7, "empathi": 7, "emphas": [8, 9], "empti": 2, "end": 6, "enforc": 8, "engin": 2, "enough": [6, 8, 9], "env": [8, 9], "environ": [6, 7], "equal": 1, "equival": [1, 6], "error": [4, 6, 8, 9], "error_penalti": 4, "ethnic": 7, "euclidian": 1, "eval_func": [3, 6, 8, 9], "evalu": [3, 4, 8, 9], "even": [6, 8, 9], "event": 7, "everyon": 7, "everyth": [6, 8, 9], "exactli": [8, 9], "exampl": [3, 6, 7], "except": [6, 8], "execut": 6, "exhaust": [6, 8, 9], "exhaustive_optim": [6, 8, 9], "exist": [2, 6], "expand": 6, "experi": 7, "experiment": [2, 6], "explan": [7, 8, 9], "explicit": 7, "express": [2, 7], "extend": [8, 9], "extens": [1, 6], "extern": 7, "extra": 3, "extrem": [8, 9], "factor": [3, 6], "fail": 6, "fair": 7, "fairli": 7, "fals": [2, 5, 6], "faq": 7, "fast_vari": 3, "faster": [1, 5, 6], "favor": [2, 6], "featur": [8, 9], "feedback": 7, "few": [8, 9], "field": 0, "fig": 5, "figur": 5, "file": [6, 8, 9], "find": [8, 9], "finish": [2, 6, 8, 9], "finit": 6, "first": [1, 2, 6, 8, 9], "fit": [2, 4, 6, 8, 9], "fitness_func": [8, 9], "fix": [2, 8, 9], "flake8": 6, "flat": [2, 6], "flexibl": 6, "float": [0, 1, 2, 3, 4, 5, 8, 9], "fly": [8, 9], "focus": 7, "folder": 6, "follow": [3, 6, 7, 8, 9], "forc": 2, "form": [3, 8, 9], "formal": 2, "format": [3, 5, 6], "former": 6, "found": 1, "four": [8, 9], "fourbar_linkag": 6, "fp": 5, "fraction": 2, "frame": [2, 5, 6], "free": 7, "fri": [2, 3], "friendli": [2, 8, 9], "from": [1, 2, 3, 5, 6, 7, 8, 9], "full": 6, "fulli": 2, "func": 4, "function": [1, 3, 6, 8, 9], "gender": 7, "gener": [1, 2, 3, 6], "generate_bound": [3, 6, 8, 9], "geometr": [2, 3, 8, 9], "geometri": [6, 8], "get": [1, 6, 8, 9], "get_constraint": [2, 6], "get_coord": [2, 6, 8, 9], "get_num_constraint": [2, 3, 6, 8, 9], "get_po": 6, "get_rotation_period": [2, 6], "git": 6, "github": [6, 7], "gitignor": 6, "give": [2, 3, 7, 8, 9], "given": 2, "global": 6, "go": 6, "goe": 6, "good": [8, 9], "gracefulli": 7, "graph": 5, "graphic": [8, 9], "greatli": 6, "greedi": [8, 9], "grid": [8, 9], "grid_search": [3, 6], "group": 4, "guaranti": 0, "guidelin": [8, 9], "ha": [2, 3, 6], "had": 6, "handl": [6, 8, 9], "happen": [8, 9], "harass": 7, "harm": 7, "have": [3, 6, 7, 8, 9], "head": [8, 9], "header": 6, "healthi": 7, "help": 8, "here": [3, 6, 8, 9], "hesit": [8, 9], "hi": [6, 8, 9], "high": 6, "highest": 3, "highli": [1, 8, 9], "highlight": 5, "hing": 2, "histori": 6, "horizont": 2, "hour": 6, "how": [3, 8, 9], "howev": [8, 9], "html": 7, "http": [1, 7], "huge": 3, "hugofara": [1, 2, 3, 4, 5], "human": [2, 6, 8, 9], "hyperstat": [2, 6], "hypo": 2, "hypostaticerror": 2, "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "id": 2, "ident": 7, "illustr": [8, 9], "im": 5, "imag": [5, 6], "imageri": 7, "imagin": [8, 9], "immut": 6, "impact": 7, "implement": 3, "implicitli": 6, "import": [3, 6, 8, 9], "improv": 6, "inappropri": 7, "incid": 7, "includ": [4, 6, 7], "inclus": 7, "incompat": [8, 9], "index": [0, 5, 6, 8], "individu": 7, "inertia": 3, "inf": [4, 8, 9], "infin": 6, "inform": 7, "inherit": [2, 6], "ini": 6, "init_po": [8, 9], "init_posit": 0, "initi": [2, 3, 5, 6, 8, 9], "initial_coordin": 3, "input": [1, 3, 6], "insert": 6, "inspir": 7, "instanc": [6, 7, 8, 9], "instead": [5, 6], "insult": 7, "int": [1, 2, 3, 5], "integr": 6, "intend": 6, "interact": 7, "interest": [8, 9], "interfac": [6, 8], "intersect": [1, 8, 9], "interv": 5, "intial": [8, 9], "introduc": 6, "investig": 7, "invis": 7, "involv": 7, "isn": [8, 9], "issu": [6, 7, 8, 9], "issue_templ": 6, "ite": 3, "iter": [2, 3, 4, 5, 6, 8, 9], "iteration_factor": 5, "its": [2, 6, 8, 9], "joint": [5, 6], "joint0": [2, 8, 9], "joint1": [2, 8, 9], "jul": 4, "jun": [2, 5], "just": [7, 8, 9], "keep": [2, 6, 8, 9], "keyword": 3, "kind": [2, 6, 7], "kinemat": [2, 4, 6, 8, 9], "kinematic_default_test": 4, "kinematic_maxim": 4, "kinematic_minim": [4, 6], "kinematic_minimizast": [8, 9], "kinematic_optimizatino": 6, "know": [2, 8, 9], "known": 6, "kwarg": [3, 8, 9], "ladder": 7, "languag": [7, 8, 9], "larg": [8, 9], "last": [6, 8, 9], "launch": 6, "lead": 7, "leader": [3, 7], "learn": [3, 7], "least": [8, 9], "legaci": [1, 6, 8, 9], "legend": [5, 6], "leggedsnak": 6, "len": [3, 5], "less": 6, "let": [3, 6, 8, 9], "level": 7, "lib": 6, "librari": [8, 9], "licens": 6, "life": 6, "like": [7, 8, 9], "line": [8, 9], "link": [2, 6, 9], "linkag": [0, 3, 6], "lint": 6, "list": [2, 3, 4, 5], "ljvmiranda921": [8, 9], "local": [2, 3], "localbestpso": 3, "locat": 2, "loci": [4, 5, 6, 8, 9], "locu": [4, 8, 9], "locus_highlight": [5, 6], "longer": 6, "look": [3, 8, 9], "loop": [8, 9], "lot": 6, "lower": [8, 9], "lower_bound": 3, "made": [8, 9], "magic": [8, 9], "mai": [1, 2, 6, 7, 8, 9], "mail": 7, "main": [6, 8, 9], "mainli": 3, "make": [2, 3, 4, 5, 6, 7, 8, 9], "mandatori": 6, "mani": [6, 8, 9], "manifest": 6, "manual": 2, "mar": 3, "mast": [8, 9], "master": 6, "math": 1, "mathemat": [6, 8, 9], "matplotlib": [5, 6, 8, 9], "matt": 1, "max": 3, "max_dim": 3, "max_factor": 3, "max_i": [8, 9], "max_x": [8, 9], "maxim": [3, 6], "md": [6, 8, 9], "mechan": [8, 9], "media": 7, "member": 7, "mention": 6, "mere": 6, "messag": [2, 6], "method": [1, 2, 6, 8, 9], "middl": 3, "millisecond": 5, "min": [3, 8, 9], "min_dim": 3, "min_i": [8, 9], "min_ratio": 3, "min_x": [8, 9], "minim": [3, 6, 8, 9], "minimum": [8, 9], "minor": 6, "misbehav": 6, "miss": 6, "mistak": 7, "mit": 6, "mode": [2, 5], "moder": 7, "modifi": [3, 5, 6], "modul": [2, 4, 5, 6, 9], "mon": [4, 5], "more": [6, 8, 9], "most": 6, "mostli": 2, "motor": [2, 6, 8, 9], "move": [2, 6, 8, 9], "movement": [5, 8, 9], "movement_bounding_bow": [4, 6], "movement_bounding_box": [4, 6], "mozilla": 7, "much": [6, 8, 9], "multipl": [2, 6], "mutabl": [0, 6], "mutable_ag": 0, "mutableag": [3, 6, 8], "my": [8, 9], "my_linkag": [8, 9], "n": [8, 9], "n_particl": 3, "n_result": [3, 8, 9], "name": [2, 6, 8, 9], "namedtupl": [0, 6], "nation": 7, "natur": 7, "navig": 6, "need": [2, 6, 8, 9], "neg": 6, "neighbor": [3, 8, 9], "net": 1, "new": 6, "none": [0, 1, 2, 3, 5], "norm": 1, "notabl": 6, "note": [8, 9], "noth": 2, "notic": [8, 9], "now": [6, 8, 9], "num_constraint": 3, "number": [2, 3, 5, 6, 8, 9], "numer": 2, "numpi": [8, 9], "numpydoc": 6, "o": 2, "obj_1": 1, "obj_2": 1, "object": [0, 1, 2, 6, 8, 9], "oblig": 7, "offens": 7, "offer": [8, 9], "offici": [6, 7], "offlin": 7, "often": [3, 6, 8, 9], "onc": [8, 9], "one": [1, 2, 6, 8, 9], "onli": [0, 2, 3, 6, 8, 9], "onlin": 7, "open": [7, 8, 9], "opinion": 7, "optim": [0, 1, 6], "option": [2, 5, 6, 8, 9], "order": [2, 3, 6, 8, 9], "order_rel": [3, 6, 8, 9], "ordin": [2, 6], "org": 7, "organ": 6, "ori": 1, "orient": [2, 7], "origin": [1, 2, 5], "ot": 6, "other": [0, 2, 7], "otherwis": [7, 8, 9], "our": [8, 9], "output": [3, 5, 6], "over": [2, 6], "overal": 7, "own": [2, 6], "packag": [6, 8, 9], "pad": 6, "page": [6, 8], "paramet": [1, 3, 4, 5, 6, 8, 9], "parent": [2, 8, 9], "part": [2, 8, 9], "particip": 7, "particl": [6, 8, 9], "particle_swarm": [3, 6], "particle_swarm_optim": [3, 6, 8, 9], "particularli": [8, 9], "pass": [2, 3, 4, 5, 8, 9], "path": [6, 8, 9], "pattern": 7, "paul": 1, "paulbourk": 1, "penalti": [4, 8, 9], "peopl": 7, "per": 5, "perfect": 6, "period": [2, 7], "permiss": 7, "person": 7, "perspect": 6, "physic": 7, "pin": [2, 8, 9], "pivot": [2, 6, 8, 9], "pl": [8, 9], "plai": [8, 9], "planar": [8, 9], "pleas": [8, 9], "pledg": 8, "plot": [5, 6], "plot_kinematic_linkag": [5, 6], "plot_static_linkag": [5, 6], "plotter": 8, "po": [2, 6, 8, 9], "point": [1, 2, 4, 5, 6, 8, 9], "point1": 1, "point2": 1, "polar": 1, "polit": 7, "poorli": 6, "posit": [2, 3, 5, 6, 7, 8, 9], "possibl": [2, 3, 6, 8, 9], "post": [7, 8, 9], "preassign": 0, "precis": 2, "preserv": 2, "prev": 5, "previou": [2, 5, 6, 8, 9], "principl": [8, 9], "print": [3, 6], "privaci": 7, "privat": 7, "problem": [3, 6, 8, 9], "profession": 7, "program": 1, "progress": [6, 8, 9], "project": [2, 6], "promptli": 7, "properli": 6, "propos": [8, 9], "provid": [1, 4, 6, 7, 8, 9], "pso": [3, 6, 8, 9], "public": 7, "publish": [6, 7], "pull": [8, 9], "purpos": [8, 9], "put": [8, 9], "py": [6, 8, 9], "pycharm": 6, "pylinkag": [0, 1, 2, 3, 4, 5, 6], "pypi": [6, 8, 9], "pyproject": 6, "pyswarm": [3, 6, 8, 9], "python": [1, 6, 8, 9], "quadrant": [8, 9], "quarter": [8, 9], "question": 7, "quick": 2, "quicker": 6, "r": 2, "r0": 2, "r1": 2, "race": 7, "radian": [2, 8, 9], "radiu": [1, 2], "rais": [2, 6], "randomli": 3, "rare": [8, 9], "rate": 6, "ratio": 3, "readabl": 2, "readm": [6, 8], "real": 5, "rearrang": [8, 9], "reason": [7, 8, 9], "rebuild": 2, "recap": [8, 9], "recat": 2, "receiv": [6, 8, 9], "recommend": [6, 8, 9], "recreat": 5, "redefin": 2, "ref_bb": [8, 9], "ref_po": [8, 9], "refer": [2, 3, 8, 9], "regardless": 7, "regener": 6, "reject": 7, "rel": [2, 6], "relat": 6, "relev": [8, 9], "religion": 7, "reload": [2, 6, 8, 9], "rememb": [8, 9], "remov": [2, 3, 4, 7], "renam": 6, "reorgan": 6, "replac": [4, 6], "report": 7, "repr_polar_swarm": 6, "repres": 7, "represent": [2, 6], "request": [7, 8, 9], "requir": 6, "reset": [8, 9], "resolut": 2, "resourc": [8, 9], "respect": [7, 8, 9], "respons": 8, "rest": 6, "result": [3, 5, 6, 8, 9], "return": [1, 3, 4, 5, 6, 8, 9], "revamp": 6, "review": 7, "revolut": [5, 6, 8], "revolute_joint": [2, 6], "right": [7, 8, 9], "risk": 6, "robust": [6, 8, 9], "rocker": [8, 9], "role": [8, 9], "rotat": [2, 6, 8, 9], "roughli": 0, "run": [2, 4, 5, 6, 8, 9], "sai": [8, 9], "same": [4, 6], "satisfactori": 6, "satisfi": 2, "save": [5, 6, 8, 9], "scalar": 2, "scope": 8, "score": [0, 3, 5, 6, 8, 9], "script": 6, "search": [5, 8, 9], "second": [1, 2, 5, 6, 8, 9], "secur": 7, "see": [5, 6, 7, 8, 9], "seem": [6, 8, 9], "seen": 6, "segment": [8, 9], "self": 2, "semant": 6, "sens": [8, 9], "separ": [6, 8, 9], "sequenc": [2, 3, 5], "sequenci": [8, 9], "sequenti": 3, "sequential_vari": 3, "seri": 7, "serial": [8, 9], "seriou": 7, "set": [2, 3, 5, 6, 7], "set_anchor0": 2, "set_anchor1": 2, "set_complet": [2, 6], "set_constraint": [2, 6], "set_coord": [2, 6, 8, 9], "set_num_constraint": [2, 6, 8, 9], "setup": 6, "sex": 7, "sexual": 7, "shape": 3, "shorter": [8, 9], "should": [0, 1, 2, 3, 5, 6, 8, 9], "show": [5, 6, 8, 9], "show_legend": 5, "show_linkag": [5, 8, 9], "sidebar": 6, "signatur": 6, "similar": 6, "simpl": [2, 3, 6, 8, 9], "simplif": 6, "simplifi": [6, 8, 9], "simul": 4, "sinc": [2, 3, 4], "singl": [3, 7, 8, 9], "size": [3, 7], "small": 3, "so": [1, 2, 3, 6, 8, 9], "social": [3, 7], "socio": 7, "solut": [2, 6, 8, 9], "solv": [2, 8, 9], "some": [6, 8, 9], "someth": [8, 9], "sometim": 6, "sort": 7, "sourc": [6, 8], "space": [2, 3, 7, 8, 9], "special": [2, 5], "specif": 6, "specifi": [3, 6, 7, 8, 9], "sphinx": 6, "split": 6, "sqr_dist": 1, "squar": [1, 8, 9], "stai": [8, 9], "standard": [2, 4, 6, 8, 9], "start": [1, 8, 9], "state": [2, 3], "static": [2, 6], "statu": 7, "step": [2, 3, 5, 6, 8, 9], "still": [8, 9], "stop": [6, 8, 9], "str": [2, 5], "strider": 6, "structur": [2, 4], "style": 6, "subdivid": 5, "subdivis": [3, 6, 8, 9], "subplot": 5, "subscript": 0, "subset": 2, "sugar": 6, "sum": [8, 9], "support": [0, 5, 8, 9], "sure": 3, "sustain": 7, "swarm": [5, 6, 8, 9], "swarm_tiled_repr": [5, 6], "switch": [8, 9], "syntact": 6, "system": 2, "t": [2, 6, 8, 9], "tadaaa": [8, 9], "tag": 6, "tail": [8, 9], "take": [2, 3, 6, 7, 8, 9], "target": 6, "techniqu": [8, 9], "templat": 6, "term": [2, 7], "test": [6, 8, 9], "test_converg": 6, "test_geometri": 6, "test_linkag": 6, "test_optim": 6, "testpso": 6, "than": [1, 3, 8, 9], "thank": 6, "thei": [2, 5, 6, 7, 8, 9], "them": [2, 5, 8, 9], "theoret": [8, 9], "thereaft": 2, "theta": 1, "thi": [2, 3, 4, 6, 7, 8, 9], "thing": [8, 9], "think": [8, 9], "those": 7, "threaten": 7, "three": [8, 9], "through": 7, "tile": 5, "time": [6, 7, 8, 9], "tip_locu": [8, 9], "titl": 5, "todai": [8, 9], "togeth": [8, 9], "tol": 1, "toler": [1, 3], "toml": 6, "too": 3, "top": [8, 9], "toward": 7, "tox": 6, "tqdm": [3, 6], "tqdm_verbos": [3, 6], "transcript": 1, "transit": 6, "translat": 7, "trial": [6, 8, 9], "trials_and_error": 6, "trials_and_error_optim": 6, "trials_and_errors_optim": [3, 6, 8, 9], "trials_and_errors_optimizatt": 6, "triangl": [8, 9], "trick": [8, 9], "trigonometr": 2, "troll": 7, "true": [2, 3, 6], "try": [8, 9], "tupl": [0, 1, 2, 3, 4, 8, 9], "turn": [2, 8, 9], "two": [1, 2, 3, 6, 8, 9], "txt": 6, "type": [1, 2, 3, 4, 5, 6], "typo": 6, "u": [2, 7], "ugli": 6, "unabl": 2, "unaccept": 7, "unbuild": 4, "unbuildableerror": 2, "under": [1, 2], "uniform": 0, "union": 2, "unittest": 6, "unoptim": 1, "unprofession": 7, "unreleas": 8, "unsolicit": 7, "unus": 2, "unwelcom": 7, "updat": [5, 6, 8, 9], "update_animated_plot": 5, "upl": 3, "uplet": [3, 8, 9], "upper": 3, "upper_bound": 3, "us": [0, 1, 2, 3, 4, 5, 6, 7], "useless": 5, "user": [2, 6], "util": [6, 8], "valid": 6, "valu": [1, 2, 3, 4, 5, 6], "vari": [3, 8, 9], "variabl": 6, "variat": [3, 6], "variou": [6, 8], "vec": 1, "vectori": [8, 9], "verbos": [3, 6], "veri": [3, 6], "verifi": [8, 9], "version": [2, 3, 4, 5, 6, 7], "vertic": 2, "via": 7, "video": 5, "view": [2, 6, 8, 9], "viewpoint": 7, "violat": 7, "violent": 3, "visibl": 7, "visual": 6, "vizual": 6, "vulner": 6, "w": 3, "wa": [4, 6, 7], "wai": [2, 5, 6, 7, 8, 9], "wait": [8, 9], "walkthrough": 6, "want": [2, 3, 5, 8, 9], "warn": 6, "wasn": 6, "we": [2, 3, 5, 6, 7, 8, 9], "websit": 6, "wed": [1, 2], "welcom": 7, "well": [6, 7], "were": [6, 7], "what": [7, 8, 9], "when": [1, 2, 5, 6, 7, 8, 9], "whether": 2, "which": [1, 2, 3, 7, 8, 9], "whole": 2, "why": [7, 8, 9], "wiki": 7, "windshield": [8, 9], "wiper": [8, 9], "within": 7, "without": [5, 6, 7, 8, 9], "won": 2, "wonder": [8, 9], "woodhead": 1, "work": [6, 8, 9], "workflow": 6, "would": [6, 8, 9], "wrapper": [3, 6, 8, 9], "write": [8, 9], "written": 7, "wrongli": 6, "www": 7, "x": [2, 3, 6, 8, 9], "x_max": 4, "x_min": 4, "y": [2, 6, 8, 9], "y_max": 4, "y_min": 4, "yet": 6, "yml": [6, 8, 9], "you": [0, 2, 3, 5, 6, 8, 9], "your": [6, 8, 9], "yourself": [8, 9], "zip": [8, 9]}, "titles": ["collections", "geometry", "interface", "optimization", "utility", "visualizer", "Changelog", "Contributor Covenant Code of Conduct", "Welcome to pylinkage\u2019s documentation!", "Pylinkage"], "titleterms": {"": 8, "0": 6, "05": 6, "06": 6, "07": 6, "1": [6, 7], "11": 6, "12": 6, "14": 6, "16": 6, "2": [6, 7], "2021": 6, "2023": 6, "21": 6, "22": 6, "23": 6, "3": [6, 7], "4": [6, 7], "5": 6, "abstract": 1, "ad": 6, "agent": 0, "argument": 2, "attribut": 7, "ban": 7, "base": 1, "chang": 6, "changelog": 6, "code": 7, "collect": 0, "complet": [8, 9], "conduct": 7, "contribut": [8, 9], "contributor": 7, "correct": 7, "coven": 7, "definit": [2, 8, 9], "demo": [8, 9], "deprec": 6, "document": 8, "enforc": 7, "environ": [8, 9], "error": 3, "exampl": [8, 9], "except": 2, "fix": 6, "function": 4, "geometr": 1, "geometri": 1, "grid": 3, "guidelin": 7, "handl": 4, "help": 4, "indic": 8, "instal": [8, 9], "interfac": 2, "introduct": 8, "joint": [2, 8, 9], "link": 8, "linkag": [2, 4, 5, 8, 9], "modul": [1, 8], "mutableag": 0, "optim": [3, 8, 9], "our": 7, "paramet": 2, "particl": 3, "perman": 7, "pip": [8, 9], "pledg": 7, "plotter": 5, "pylinkag": [8, 9], "quick": 8, "remov": 6, "requir": [8, 9], "respons": 7, "return": 2, "revolut": 2, "scope": 7, "search": 3, "set": [8, 9], "short": [8, 9], "simpl": 5, "simul": [8, 9], "standard": 7, "structur": [8, 9], "swarm": 3, "tabl": 8, "temporari": 7, "trial": 3, "unreleas": 6, "up": [8, 9], "us": [8, 9], "util": [3, 4], "variou": 4, "virtual": [8, 9], "visual": [5, 8, 9], "warn": 7, "welcom": 8, "you": 4, "your": 5}}) \ No newline at end of file +Search.setIndex({"alltitles": {"1. Correction": [[7, "correction"]], "2. Warning": [[7, "warning"]], "3. Temporary Ban": [[7, "temporary-ban"]], "4. Permanent Ban": [[7, "permanent-ban"]], "Added": [[6, "added"]], "Added in 0.0.1": [[6, "added-in-0-0-1"]], "Added in 0.2.0": [[6, "added-in-0-2-0"]], "Added in 0.2.1": [[6, "added-in-0-2-1"]], "Added in 0.2.2": [[6, "added-in-0-2-2"]], "Added in 0.3.0": [[6, "added-in-0-3-0"]], "Added in 0.4.0": [[6, "added-in-0-4-0"]], "Added in 0.4.1": [[6, "added-in-0-4-1"]], "Added in 0.5.0": [[6, "added-in-0-5-0"]], "Added in 0.5.1": [[6, "added-in-0-5-1"]], "Added in 0.5.2": [[6, "added-in-0-5-2"]], "Added in 0.5.3": [[6, "added-in-0-5-3"]], "Agent": [[0, "module-pylinkage.collections.agent"]], "Arguments": [[2, "arguments"], [2, "id1"]], "Attribution": [[7, "attribution"]], "Base module for geometric abstractions": [[1, "module-pylinkage.geometry"]], "Changed": [[6, "changed"]], "Changed in 0.2.0": [[6, "changed-in-0-2-0"]], "Changed in 0.2.1": [[6, "changed-in-0-2-1"]], "Changed in 0.3.0": [[6, "changed-in-0-3-0"]], "Changed in 0.4.0": [[6, "changed-in-0-4-0"]], "Changed in 0.4.1": [[6, "changed-in-0-4-1"]], "Changed in 0.5.0": [[6, "changed-in-0-5-0"]], "Changed in 0.5.1": [[6, "changed-in-0-5-1"]], "Changed in 0.5.2": [[6, "changed-in-0-5-2"]], "Changed in 0.5.3": [[6, "changed-in-0-5-3"]], "Changelog": [[6, null]], "Complete example": [[8, "complete-example"], [9, "complete-example"]], "Contributing": [[8, "contributing"], [9, "contributing"]], "Contributor Covenant Code of Conduct": [[7, null]], "Deprecated": [[6, "deprecated"]], "Deprecated in 0.5.3": [[6, "deprecated-in-0-5-3"]], "Enforcement": [[7, "enforcement"]], "Enforcement Guidelines": [[7, "enforcement-guidelines"]], "Enforcement Responsibilities": [[7, "enforcement-responsibilities"]], "Exceptions": [[2, "module-pylinkage.interface.exceptions"]], "Fixed": [[6, "fixed"]], "Fixed in 0.2.1": [[6, "fixed-in-0-2-1"]], "Fixed in 0.2.2": [[6, "fixed-in-0-2-2"]], "Fixed in 0.3.0": [[6, "fixed-in-0-3-0"]], "Fixed in 0.4.0": [[6, "fixed-in-0-4-0"]], "Fixed in 0.5.0": [[6, "fixed-in-0-5-0"]], "Fixed in 0.5.3": [[6, "fixed-in-0-5-3"]], "Indices and tables": [[8, "indices-and-tables"]], "Installation": [[8, "installation"], [9, "installation"]], "Introduction": [[8, null]], "Joint definition": [[2, "module-pylinkage.interface.joint"]], "Joints definition": [[8, "joints-definition"], [9, "joints-definition"]], "Linkage definition": [[2, "module-pylinkage.interface.linkage"]], "Linkage definition and simulation": [[8, "linkage-definition-and-simulation"], [9, "linkage-definition-and-simulation"]], "Modules": [[8, null]], "MutableAgent": [[0, "module-pylinkage.collections.mutable_agent"]], "Optimization": [[8, "optimization"], [9, "optimization"]], "Our Pledge": [[7, "our-pledge"]], "Our Standards": [[7, "our-standards"]], "Parameters": [[2, "parameters"]], "Particle Swarm Optimization": [[3, "module-pylinkage.optimization.particle_swarm"]], "Pylinkage": [[8, "pylinkage"], [9, null]], "Quick Links": [[8, null]], "Removed in 0.4.0": [[6, "removed-in-0-4-0"]], "Requirements": [[8, "requirements"], [9, "requirements"]], "Returns": [[2, "returns"]], "Revolute joint definition": [[2, "module-pylinkage.interface.revolute_joint"]], "Scope": [[7, "scope"]], "Setting up Virtual Environment": [[8, "setting-up-virtual-environment"], [9, "setting-up-virtual-environment"]], "Short demo": [[8, "short-demo"], [9, "short-demo"]], "Simple plotter for your linkages": [[5, "module-pylinkage.visualizer"]], "Structure": [[8, "structure"], [9, "structure"]], "Trials and errors (grid search)": [[3, "module-pylinkage.optimization.grid_search"]], "Using pip": [[8, "using-pip"], [9, "using-pip"]], "Utility": [[3, "module-pylinkage.optimization.utils"]], "Various functions to help you handle linkages": [[4, "module-pylinkage.utility"]], "Visualization": [[8, "visualization"], [9, "visualization"]], "Welcome to pylinkage\u2019s documentation!": [[8, null]], "[0.0.1] - 2021-06-12": [[6, "id11"]], "[0.2.0] - 2021-06-14": [[6, "id10"]], "[0.2.1] - 2021-06-16": [[6, "id9"]], "[0.2.2] - 2021-06-22": [[6, "id8"]], "[0.3.0] - 2021-07-05": [[6, "id7"]], "[0.4.0] - 2021-07-06": [[6, "id6"]], "[0.4.1] - 2021-07-11": [[6, "id5"]], "[0.5.0] - 2021-07-12": [[6, "id4"]], "[0.5.1] - 2021-07-14": [[6, "id3"]], "[0.5.2] - 2021-07-21": [[6, "id2"]], "[0.5.3] - 2023-06-23": [[6, "id1"]], "[Unreleased]": [[6, "unreleased"]], "collections": [[0, null]], "geometry": [[1, null]], "interface": [[2, null]], "optimization": [[3, null]], "utility": [[4, null]], "visualizer": [[5, null]]}, "docnames": ["api/collections", "api/geometry", "api/interface", "api/optimization", "api/utility", "api/visualizer", "changeloglink", "code_of_conductlink", "index", "readmelink"], "envversion": {"sphinx": 63, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["api/collections.rst", "api/geometry.rst", "api/interface.rst", "api/optimization.rst", "api/utility.rst", "api/visualizer.rst", "changeloglink.rst", "code_of_conductlink.rst", "index.rst", "readmelink.rst"], "indexentries": {"__init__() (pylinkage.collections.mutable_agent.mutableagent method)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.__init__", false]], "__init__() (pylinkage.interface.exceptions.hypostaticerror method)": [[2, "pylinkage.interface.exceptions.HypostaticError.__init__", false]], "__init__() (pylinkage.interface.exceptions.unbuildableerror method)": [[2, "pylinkage.interface.exceptions.UnbuildableError.__init__", false]], "__init__() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.__init__", false]], "__init__() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.__init__", false]], "__init__() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.__init__", false]], "__init__() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.__init__", false]], "__init__() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.__init__", false]], "__init__() (pylinkage.interface.revolute_joint.pivot method)": [[2, "pylinkage.interface.revolute_joint.Pivot.__init__", false]], "__init__() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.__init__", false]], "_abc_impl (pylinkage.interface.joint.crank attribute)": [[2, "pylinkage.interface.joint.Crank._abc_impl", false]], "_abc_impl (pylinkage.interface.joint.fixed attribute)": [[2, "pylinkage.interface.joint.Fixed._abc_impl", false]], "_abc_impl (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint._abc_impl", false]], "_abc_impl (pylinkage.interface.joint.static attribute)": [[2, "pylinkage.interface.joint.Static._abc_impl", false]], "_abc_impl (pylinkage.interface.revolute_joint.pivot attribute)": [[2, "pylinkage.interface.revolute_joint.Pivot._abc_impl", false]], "_abc_impl (pylinkage.interface.revolute_joint.revolute attribute)": [[2, "pylinkage.interface.revolute_joint.Revolute._abc_impl", false]], "_cranks (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage._cranks", false]], "_get_color() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer._get_color", false]], "_solve_order (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage._solve_order", false]], "agent (class in pylinkage.collections.agent)": [[0, "pylinkage.collections.agent.Agent", false]], "angle (pylinkage.interface.joint.crank attribute)": [[2, "pylinkage.interface.joint.Crank.angle", false]], "angle (pylinkage.interface.joint.fixed attribute)": [[2, "pylinkage.interface.joint.Fixed.angle", false]], "bounding_box() (in module pylinkage.utility)": [[4, "pylinkage.utility.bounding_box", false]], "circle() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.circle", false]], "circle_intersect() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.circle_intersect", false]], "coord() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.coord", false]], "crank (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Crank", false]], "cyl_to_cart() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.cyl_to_cart", false]], "dimensions (pylinkage.collections.mutable_agent.mutableagent attribute)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.dimensions", false]], "dist_builtin() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.dist_builtin", false]], "fast_variator() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.fast_variator", false]], "fixed (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Fixed", false]], "generate_bounds() (in module pylinkage.optimization.utils)": [[3, "pylinkage.optimization.utils.generate_bounds", false]], "get_constraints() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.get_constraints", false]], "get_constraints() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.get_constraints", false]], "get_constraints() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.get_constraints", false]], "get_constraints() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.get_constraints", false]], "get_constraints() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.get_constraints", false]], "get_coords() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.get_coords", false]], "get_num_constraints() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.get_num_constraints", false]], "get_rotation_period() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.get_rotation_period", false]], "hyperstaticity() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.hyperstaticity", false]], "hypostaticerror": [[2, "pylinkage.interface.exceptions.HypostaticError", false]], "init_positions (pylinkage.collections.mutable_agent.mutableagent attribute)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.init_positions", false]], "intersection() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.intersection", false]], "joint (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Joint", false]], "joint0 (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.joint0", false]], "joint1 (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.joint1", false]], "joints (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage.joints", false]], "kinematic_default_test() (in module pylinkage.utility)": [[4, "pylinkage.utility.kinematic_default_test", false]], "kinematic_maximization() (in module pylinkage.utility)": [[4, "pylinkage.utility.kinematic_maximization", false]], "kinematic_minimization() (in module pylinkage.utility)": [[4, "pylinkage.utility.kinematic_minimization", false]], "linkage (class in pylinkage.interface.linkage)": [[2, "pylinkage.interface.linkage.Linkage", false]], "module": [[0, "module-pylinkage.collections.agent", false], [0, "module-pylinkage.collections.mutable_agent", false], [1, "module-pylinkage.geometry", false], [2, "module-pylinkage.interface.exceptions", false], [2, "module-pylinkage.interface.joint", false], [2, "module-pylinkage.interface.linkage", false], [2, "module-pylinkage.interface.revolute_joint", false], [3, "module-pylinkage.optimization.grid_search", false], [3, "module-pylinkage.optimization.particle_swarm", false], [3, "module-pylinkage.optimization.utils", false], [4, "module-pylinkage.utility", false], [5, "module-pylinkage.visualizer", false]], "movement_bounding_bow() (in module pylinkage.utility)": [[4, "pylinkage.utility.movement_bounding_bow", false]], "movement_bounding_box() (in module pylinkage.utility)": [[4, "pylinkage.utility.movement_bounding_box", false]], "mutableagent (class in pylinkage.collections.mutable_agent)": [[0, "pylinkage.collections.mutable_agent.MutableAgent", false]], "name (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.name", false]], "name (pylinkage.interface.linkage.linkage attribute)": [[2, "pylinkage.interface.linkage.Linkage.name", false]], "norm() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.norm", false]], "particle_swarm_optimization() (in module pylinkage.optimization.particle_swarm)": [[3, "pylinkage.optimization.particle_swarm.particle_swarm_optimization", false]], "pivot (class in pylinkage.interface.revolute_joint)": [[2, "pylinkage.interface.revolute_joint.Pivot", false]], "plot_kinematic_linkage() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.plot_kinematic_linkage", false]], "plot_static_linkage() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.plot_static_linkage", false]], "pylinkage.collections.agent": [[0, "module-pylinkage.collections.agent", false]], "pylinkage.collections.mutable_agent": [[0, "module-pylinkage.collections.mutable_agent", false]], "pylinkage.geometry": [[1, "module-pylinkage.geometry", false]], "pylinkage.interface.exceptions": [[2, "module-pylinkage.interface.exceptions", false]], "pylinkage.interface.joint": [[2, "module-pylinkage.interface.joint", false]], "pylinkage.interface.linkage": [[2, "module-pylinkage.interface.linkage", false]], "pylinkage.interface.revolute_joint": [[2, "module-pylinkage.interface.revolute_joint", false]], "pylinkage.optimization.grid_search": [[3, "module-pylinkage.optimization.grid_search", false]], "pylinkage.optimization.particle_swarm": [[3, "module-pylinkage.optimization.particle_swarm", false]], "pylinkage.optimization.utils": [[3, "module-pylinkage.optimization.utils", false]], "pylinkage.utility": [[4, "module-pylinkage.utility", false]], "pylinkage.visualizer": [[5, "module-pylinkage.visualizer", false]], "r (pylinkage.interface.joint.crank attribute)": [[2, "pylinkage.interface.joint.Crank.r", false]], "r (pylinkage.interface.joint.fixed attribute)": [[2, "pylinkage.interface.joint.Fixed.r", false]], "r0 (pylinkage.interface.revolute_joint.pivot attribute)": [[2, "pylinkage.interface.revolute_joint.Pivot.r0", false]], "r0 (pylinkage.interface.revolute_joint.revolute attribute)": [[2, "pylinkage.interface.revolute_joint.Revolute.r0", false]], "r1 (pylinkage.interface.revolute_joint.pivot attribute)": [[2, "pylinkage.interface.revolute_joint.Pivot.r1", false]], "r1 (pylinkage.interface.revolute_joint.revolute attribute)": [[2, "pylinkage.interface.revolute_joint.Revolute.r1", false]], "rebuild() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.rebuild", false]], "reload() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.reload", false]], "reload() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.reload", false]], "reload() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.reload", false]], "reload() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.reload", false]], "revolute (class in pylinkage.interface.revolute_joint)": [[2, "pylinkage.interface.revolute_joint.Revolute", false]], "score (pylinkage.collections.mutable_agent.mutableagent attribute)": [[0, "pylinkage.collections.mutable_agent.MutableAgent.score", false]], "sequential_variator() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.sequential_variator", false]], "set_anchor0() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.set_anchor0", false]], "set_anchor0() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.set_anchor0", false]], "set_anchor0() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.set_anchor0", false]], "set_anchor0() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.set_anchor0", false]], "set_anchor1() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.set_anchor1", false]], "set_anchor1() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.set_anchor1", false]], "set_anchor1() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.set_anchor1", false]], "set_completely() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.set_completely", false]], "set_constraints() (pylinkage.interface.joint.crank method)": [[2, "pylinkage.interface.joint.Crank.set_constraints", false]], "set_constraints() (pylinkage.interface.joint.fixed method)": [[2, "pylinkage.interface.joint.Fixed.set_constraints", false]], "set_constraints() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.set_constraints", false]], "set_constraints() (pylinkage.interface.joint.static method)": [[2, "pylinkage.interface.joint.Static.set_constraints", false]], "set_constraints() (pylinkage.interface.revolute_joint.revolute method)": [[2, "pylinkage.interface.revolute_joint.Revolute.set_constraints", false]], "set_coord() (pylinkage.interface.joint.joint method)": [[2, "pylinkage.interface.joint.Joint.set_coord", false]], "set_coords() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.set_coords", false]], "set_num_constraints() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.set_num_constraints", false]], "show_linkage() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.show_linkage", false]], "sqr_dist() (in module pylinkage.geometry)": [[1, "pylinkage.geometry.sqr_dist", false]], "static (class in pylinkage.interface.joint)": [[2, "pylinkage.interface.joint.Static", false]], "step() (pylinkage.interface.linkage.linkage method)": [[2, "pylinkage.interface.linkage.Linkage.step", false]], "swarm_tiled_repr() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.swarm_tiled_repr", false]], "tqdm_verbosity() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.tqdm_verbosity", false]], "trials_and_errors_optimization() (in module pylinkage.optimization.grid_search)": [[3, "pylinkage.optimization.grid_search.trials_and_errors_optimization", false]], "unbuildableerror": [[2, "pylinkage.interface.exceptions.UnbuildableError", false]], "update_animated_plot() (in module pylinkage.visualizer)": [[5, "pylinkage.visualizer.update_animated_plot", false]], "x (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.x", false]], "y (pylinkage.interface.joint.joint attribute)": [[2, "pylinkage.interface.joint.Joint.y", false]]}, "objects": {"pylinkage": [[1, 0, 0, "-", "geometry"], [4, 0, 0, "-", "utility"], [5, 0, 0, "-", "visualizer"]], "pylinkage.collections": [[0, 0, 0, "-", "agent"], [0, 0, 0, "-", "mutable_agent"]], "pylinkage.collections.agent": [[0, 1, 1, "", "Agent"]], "pylinkage.collections.mutable_agent": [[0, 1, 1, "", "MutableAgent"]], "pylinkage.collections.mutable_agent.MutableAgent": [[0, 2, 1, "", "__init__"], [0, 3, 1, "", "dimensions"], [0, 3, 1, "", "init_positions"], [0, 3, 1, "", "score"]], "pylinkage.geometry": [[1, 4, 1, "", "circle_intersect"], [1, 4, 1, "", "cyl_to_cart"], [1, 4, 1, "", "dist_builtin"], [1, 4, 1, "", "intersection"], [1, 4, 1, "", "norm"], [1, 4, 1, "", "sqr_dist"]], "pylinkage.interface": [[2, 0, 0, "-", "exceptions"], [2, 0, 0, "-", "joint"], [2, 0, 0, "-", "linkage"], [2, 0, 0, "-", "revolute_joint"]], "pylinkage.interface.exceptions": [[2, 5, 1, "", "HypostaticError"], [2, 5, 1, "", "UnbuildableError"]], "pylinkage.interface.exceptions.HypostaticError": [[2, 2, 1, "", "__init__"]], "pylinkage.interface.exceptions.UnbuildableError": [[2, 2, 1, "", "__init__"]], "pylinkage.interface.joint": [[2, 1, 1, "", "Crank"], [2, 1, 1, "", "Fixed"], [2, 1, 1, "", "Joint"], [2, 1, 1, "", "Static"]], "pylinkage.interface.joint.Crank": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "angle"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "r"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_constraints"]], "pylinkage.interface.joint.Fixed": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "angle"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "r"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_anchor1"], [2, 2, 1, "", "set_constraints"]], "pylinkage.interface.joint.Joint": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 2, 1, "", "coord"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "joint0"], [2, 3, 1, "", "joint1"], [2, 3, 1, "", "name"], [2, 2, 1, "", "set_constraints"], [2, 2, 1, "", "set_coord"], [2, 3, 1, "", "x"], [2, 3, 1, "", "y"]], "pylinkage.interface.joint.Static": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 2, 1, "", "get_constraints"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_anchor1"], [2, 2, 1, "", "set_constraints"]], "pylinkage.interface.linkage": [[2, 1, 1, "", "Linkage"]], "pylinkage.interface.linkage.Linkage": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_cranks"], [2, 3, 1, "", "_solve_order"], [2, 2, 1, "", "get_coords"], [2, 2, 1, "", "get_num_constraints"], [2, 2, 1, "", "get_rotation_period"], [2, 2, 1, "", "hyperstaticity"], [2, 3, 1, "", "joints"], [2, 3, 1, "", "name"], [2, 2, 1, "", "rebuild"], [2, 2, 1, "", "set_completely"], [2, 2, 1, "", "set_coords"], [2, 2, 1, "", "set_num_constraints"], [2, 2, 1, "", "step"]], "pylinkage.interface.revolute_joint": [[2, 1, 1, "", "Pivot"], [2, 1, 1, "", "Revolute"]], "pylinkage.interface.revolute_joint.Pivot": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 3, 1, "", "r0"], [2, 3, 1, "", "r1"]], "pylinkage.interface.revolute_joint.Revolute": [[2, 2, 1, "", "__init__"], [2, 3, 1, "", "_abc_impl"], [2, 2, 1, "", "circle"], [2, 2, 1, "", "get_constraints"], [2, 3, 1, "", "r0"], [2, 3, 1, "", "r1"], [2, 2, 1, "", "reload"], [2, 2, 1, "", "set_anchor0"], [2, 2, 1, "", "set_anchor1"], [2, 2, 1, "", "set_constraints"]], "pylinkage.optimization": [[3, 0, 0, "-", "grid_search"], [3, 0, 0, "-", "particle_swarm"], [3, 0, 0, "-", "utils"]], "pylinkage.optimization.grid_search": [[3, 4, 1, "", "fast_variator"], [3, 4, 1, "", "sequential_variator"], [3, 4, 1, "", "tqdm_verbosity"], [3, 4, 1, "", "trials_and_errors_optimization"]], "pylinkage.optimization.particle_swarm": [[3, 4, 1, "", "particle_swarm_optimization"]], "pylinkage.optimization.utils": [[3, 4, 1, "", "generate_bounds"]], "pylinkage.utility": [[4, 4, 1, "", "bounding_box"], [4, 4, 1, "", "kinematic_default_test"], [4, 4, 1, "", "kinematic_maximization"], [4, 4, 1, "", "kinematic_minimization"], [4, 4, 1, "", "movement_bounding_bow"], [4, 4, 1, "", "movement_bounding_box"]], "pylinkage.visualizer": [[5, 4, 1, "", "_get_color"], [5, 4, 1, "", "plot_kinematic_linkage"], [5, 4, 1, "", "plot_static_linkage"], [5, 4, 1, "", "show_linkage"], [5, 4, 1, "", "swarm_tiled_repr"], [5, 4, 1, "", "update_animated_plot"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "exception", "Python exception"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:exception"}, "terms": {"": [6, 7, 9], "0": [1, 2, 3, 4, 5, 7, 8, 9], "00": 4, "01": 4, "05": [8, 9], "06": [2, 8], "07": 8, "1": [1, 2, 3, 5, 8, 9], "10": [3, 6], "100": [3, 5, 6], "11": 8, "12": [4, 5, 8], "13": [3, 5, 6], "14": [5, 8], "15": 2, "16": [2, 8], "17": [1, 3], "1997": 1, "2": [1, 2, 3, 8, 9], "20": [2, 6], "200": 3, "2019": 3, "2021": [1, 2, 4, 5, 8], "2023": 8, "21": [2, 8], "22": 8, "23": 8, "24": 5, "25": [8, 9], "27": 6, "2d": [1, 2, 6], "3": [0, 1, 3, 5, 8, 9], "31": [8, 9], "34": 1, "39": 2, "4": 8, "40": 5, "45": [1, 3], "5": [1, 3, 5, 8, 9], "51": 3, "58": 5, "6": [2, 3, 4, 6], "7": [2, 3, 4, 6], "8": [1, 3], "9": 6, "90": [8, 9], "A": [0, 2, 3, 4, 5, 6, 7, 8, 9], "And": [8, 9], "As": [8, 9], "Being": 7, "But": [8, 9], "For": [6, 7, 8, 9], "If": [2, 3, 5, 8, 9], "In": [4, 6, 8, 9], "It": [0, 1, 2, 3, 6, 8, 9], "Its": 3, "NOT": 2, "No": [0, 7], "On": [8, 9], "That": [8, 9], "The": [1, 2, 3, 4, 5, 6, 7, 8, 9], "Then": [8, 9], "There": 3, "To": [5, 8, 9], "With": [6, 8, 9], "__find_solving_order__": 6, "__init__": [0, 2, 6], "_abc": 2, "_abc_data": 2, "_abc_impl": 2, "_crank": 2, "_get_color": 5, "_kwarg": [8, 9], "_solve_ord": 2, "_subplot": 5, "ab": 3, "abc": 2, "abcsic": 6, "about": 7, "abov": [8, 9], "abscissa": [1, 2], "absolut": [1, 6], "abstract": [2, 8], "abus": 7, "accept": 7, "access": 2, "account": 7, "achiev": [8, 9], "across": 2, "act": 7, "action": 7, "actual": [8, 9], "ad": 3, "adapt": 7, "add": [5, 6, 8, 9], "address": 7, "adher": 6, "advanc": 7, "advis": 6, "affect": [2, 6, 7], "after": 6, "ag": 7, "agent": [3, 5, 6, 8, 9], "aggress": 7, "align": [6, 7], "all": [2, 3, 5, 6, 7, 8, 9], "allow": [2, 6, 7], "almost": 3, "alpha": 6, "also": [2, 7, 8, 9], "alwai": 2, "ambigu": 2, "amount": 2, "amplitud": [8, 9], "an": [2, 3, 5, 6, 7, 8, 9], "anchor": 2, "angl": [1, 2, 6, 8, 9], "ani": [1, 4, 5, 7, 8, 9], "anim": [5, 6], "anoth": 6, "answer": 7, "anymor": 6, "anyth": 3, "anywai": 6, "apolog": 7, "apologi": 7, "appear": 7, "appli": [2, 7], "appoint": 7, "approach": [8, 9], "appropri": 7, "apr": 2, "ar": [1, 2, 3, 5, 6, 7, 8, 9], "arbitrari": [1, 6], "arg": [2, 3], "argument": [3, 6, 8, 9], "around": 7, "arrai": [3, 6], "article_swarm_optim": 6, "artist": 5, "ask": [6, 8, 9], "assign": [0, 2, 3, 6], "attack": 7, "attent": 7, "attribut": 8, "author": [1, 2, 3, 4, 5], "automat": [2, 5, 6, 8, 9], "avail": 7, "averag": 6, "avoid": [6, 7], "ax": [5, 6], "axessubplot": 5, "axi": [1, 2, 5], "b": [8, 9], "back": 6, "backward": 0, "bar": [6, 8, 9], "base": [0, 2, 6, 8, 9], "basi": 6, "basic": 6, "becaus": [3, 6, 8, 9], "bee": [8, 9], "been": [2, 6], "befor": [4, 5, 6], "begin": 6, "behavior": [6, 7], "behaviour": 6, "behind": [8, 9], "best": [2, 3, 6, 7, 8, 9], "beta": [6, 8, 9], "better": 3, "between": [1, 2, 3, 5, 6, 8, 9], "big": 3, "bigger": 6, "bit": [6, 8, 9], "bodi": 7, "bool": [2, 3, 5], "both": [2, 6, 8, 9], "bound": [3, 4, 6, 8, 9], "bounding_box": [4, 6, 8, 9], "bourk": 1, "box": [4, 6, 8, 9], "branch": 6, "break": 6, "build": [8, 9], "buildabl": 6, "builder": [6, 8, 9], "built": [1, 2, 3, 6, 8, 9], "bump2vers": 6, "c": [8, 9], "c1": 3, "c2": 3, "calcul": [6, 8, 9], "call": [2, 3, 8, 9], "callabl": [3, 4, 5], "can": [1, 2, 3, 6, 8, 9], "candid": [3, 8, 9], "cannot": 2, "capabl": [8, 9], "cartesian": [1, 2], "case": [0, 2, 4, 6], "caus": 6, "center": [2, 3], "certain": [8, 9], "certainli": 3, "cfg": 6, "chang": 3, "changelog": 8, "channel": 7, "characterist": [2, 7], "check": 6, "checker": 6, "choos": [6, 8, 9], "circl": [1, 2, 6, 8, 9], "circle1": 1, "circle2": 1, "circle_intersect": 1, "circlespher": 1, "circular": 2, "clarifi": 7, "clariti": 7, "class": [0, 2, 6, 7, 8, 9], "classic": [8, 9], "clear": 6, "clearli": 6, "close": [8, 9], "closer": [8, 9], "code": [6, 8, 9], "code_of_conduct": [6, 7, 8, 9], "coeffici": 3, "collect": [6, 8], "color": [5, 6], "color_switch": [5, 6], "combin": [3, 6], "come": [6, 8, 9], "comment": 7, "commit": 7, "common": [2, 3, 4, 7, 8, 9], "commun": [7, 8, 9], "compar": 3, "compat": [0, 6], "complaint": 7, "complet": [4, 6], "complex": [8, 9], "compress": [3, 6], "comput": [2, 4, 6], "conda": [6, 8, 9], "conduct": 8, "configur": 6, "confus": 6, "consecut": 3, "consequ": [6, 7], "consid": [1, 3, 6, 7, 8, 9], "consist": [2, 6, 8, 9], "consol": 3, "constant": [2, 8, 9], "constrain": [2, 6], "constraint": [2, 3, 8, 9], "construct": 7, "contain": [3, 6], "continu": [6, 7], "contribut": 7, "converg": 6, "convert": 1, "cool": [8, 9], "coord": [2, 8, 9], "coordin": [1, 2, 5, 8, 9], "corner": [8, 9], "correspond": [2, 5], "cost": 6, "could": [6, 7], "crank": [2, 5, 8, 9], "creat": [1, 2, 3, 4, 5, 8, 9], "criterion": [8, 9], "crucial": [8, 9], "curr_bb": [8, 9], "current": [2, 8, 9], "curtain": [8, 9], "custom": [0, 6], "cyl_to_cart": 1, "d": [3, 8, 9], "de": 2, "decis": 7, "decor": [4, 6, 8, 9], "deem": 7, "def": [8, 9], "default": [1, 2, 3, 5, 6], "defin": [2, 6, 8, 9], "definit": 6, "deform": [8, 9], "degre": 2, "delai": 5, "delta_dim": [3, 6], "demo": 6, "demonstr": [7, 8, 9], "denomin": 2, "deprec": [2, 3, 4], "derogatori": 7, "describ": [3, 8, 9], "descript": 5, "determin": 7, "develop": 6, "dict": 3, "dictionari": 0, "differ": [2, 7, 8, 9], "digit": 2, "dilat": [3, 6], "dim": 6, "dimens": [0, 2, 3, 5, 6, 8, 9], "dimension": [2, 8, 9], "dimension_func": 5, "disabl": [3, 6, 7], "disparag": 7, "displai": [5, 6], "dist": 1, "dist_builtin": 1, "distanc": [1, 2, 8, 9], "distance0": [2, 8, 9], "distance1": [2, 8, 9], "divers": 7, "divis": [3, 6, 8, 9], "do": [2, 6, 8, 9], "doc": 6, "docstr": 6, "document": 6, "doesn": [8, 9], "don": [8, 9], "done": 6, "download": [8, 9], "draw": [5, 8, 9], "dt": [2, 8, 9], "due": [6, 8, 9], "durat": 5, "dure": 7, "e": 7, "each": [1, 2, 3, 5, 6, 8, 9], "easi": 5, "easier": 6, "econom": 7, "edg": [8, 9], "edit": 7, "educ": 7, "effici": [6, 8, 9], "either": [2, 8, 9], "element": [0, 2, 3, 5], "els": 3, "email": 7, "empathi": 7, "emphas": [8, 9], "empti": 2, "end": 6, "enforc": 8, "engin": 2, "enough": [6, 8, 9], "env": [8, 9], "environ": [6, 7], "equal": 1, "equival": [1, 6], "error": [4, 6, 8, 9], "error_penalti": 4, "ethnic": 7, "euclidian": 1, "eval_func": [3, 6, 8, 9], "evalu": [3, 4, 8, 9], "even": [6, 8, 9], "event": 7, "everyon": 7, "everyth": [6, 8, 9], "exactli": [8, 9], "exampl": [3, 6, 7], "except": [6, 8], "execut": 6, "exhaust": [6, 8, 9], "exhaustive_optim": [6, 8, 9], "exist": [2, 6], "expand": 6, "experi": 7, "experiment": [2, 6], "explan": [7, 8, 9], "explicit": 7, "express": [2, 7], "extend": [8, 9], "extens": [1, 6], "extern": 7, "extra": 3, "extrem": [8, 9], "factor": [3, 6], "fail": 6, "fair": 7, "fairli": 7, "fals": [2, 5, 6], "faq": 7, "fast_vari": 3, "faster": [1, 5, 6], "favor": [2, 6], "featur": [8, 9], "feedback": 7, "few": [8, 9], "field": 0, "fig": 5, "figur": 5, "file": [6, 8, 9], "find": [8, 9], "finish": [2, 6, 8, 9], "finit": 6, "first": [1, 2, 6, 8, 9], "fit": [2, 4, 6, 8, 9], "fitness_func": [8, 9], "fix": [2, 8, 9], "flake8": 6, "flat": [2, 6], "flexibl": 6, "float": [0, 1, 2, 3, 4, 5, 8, 9], "fly": [8, 9], "focus": 7, "folder": 6, "follow": [3, 6, 7, 8, 9], "forc": 2, "form": [3, 8, 9], "formal": 2, "format": [3, 5, 6], "former": 6, "found": 1, "four": [8, 9], "fourbar_linkag": 6, "fp": 5, "fraction": 2, "frame": [2, 5, 6], "free": 7, "fri": [2, 3], "friendli": [2, 8, 9], "from": [1, 2, 3, 5, 6, 7, 8, 9], "full": 6, "fulli": 2, "func": 4, "function": [1, 3, 6, 8, 9], "gender": 7, "gener": [1, 2, 3, 6], "generate_bound": [3, 6, 8, 9], "geometr": [2, 3, 8, 9], "geometri": [6, 8], "get": [1, 6, 8, 9], "get_constraint": [2, 6], "get_coord": [2, 6, 8, 9], "get_num_constraint": [2, 3, 6, 8, 9], "get_po": 6, "get_rotation_period": [2, 6], "git": 6, "github": [6, 7], "gitignor": 6, "give": [2, 3, 7, 8, 9], "given": 2, "global": 6, "go": 6, "goe": 6, "good": [8, 9], "gracefulli": 7, "graph": 5, "graphic": [8, 9], "greatli": 6, "greedi": [8, 9], "grid": [8, 9], "grid_search": [3, 6], "group": 4, "guaranti": 0, "guidelin": [8, 9], "ha": [2, 3, 6], "had": 6, "handl": [6, 8, 9], "happen": [8, 9], "harass": 7, "harm": 7, "have": [3, 6, 7, 8, 9], "head": [8, 9], "header": 6, "healthi": 7, "help": 8, "here": [3, 6, 8, 9], "hesit": [8, 9], "hi": [6, 8, 9], "high": 6, "highest": 3, "highli": [1, 8, 9], "highlight": 5, "hing": 2, "histori": 6, "horizont": 2, "hour": 6, "how": [3, 8, 9], "howev": [8, 9], "html": 7, "http": [1, 7], "huge": 3, "hugofara": [1, 2, 3, 4, 5], "human": [2, 6, 8, 9], "hyperstat": [2, 6], "hypo": 2, "hypostaticerror": 2, "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "id": 2, "ident": 7, "illustr": [8, 9], "im": 5, "imag": [5, 6], "imageri": 7, "imagin": [8, 9], "immut": 6, "impact": 7, "implement": 3, "implicitli": 6, "import": [3, 6, 8, 9], "improv": 6, "inappropri": 7, "incid": 7, "includ": [4, 6, 7], "inclus": 7, "incompat": [8, 9], "index": [0, 5, 6, 8], "individu": 7, "inertia": 3, "inf": [4, 8, 9], "infin": 6, "inform": 7, "inherit": [2, 6], "ini": 6, "init_po": [8, 9], "init_posit": 0, "initi": [2, 3, 5, 6, 8, 9], "initial_coordin": 3, "input": [1, 3, 6], "insert": 6, "inspir": 7, "instanc": [6, 7, 8, 9], "instead": [5, 6], "insult": 7, "int": [1, 2, 3, 5], "integr": 6, "intend": 6, "interact": 7, "interest": [8, 9], "interfac": [6, 8], "intersect": [1, 8, 9], "interv": 5, "introduc": 6, "investig": 7, "invis": 7, "involv": 7, "isn": [8, 9], "issu": [6, 7, 8, 9], "issue_templ": 6, "ite": 3, "iter": [2, 3, 4, 5, 6, 8, 9], "iteration_factor": 5, "its": [2, 6, 8, 9], "joint": [5, 6], "joint0": [2, 8, 9], "joint1": [2, 8, 9], "jul": 4, "jun": [2, 5], "just": [7, 8, 9], "keep": [2, 6, 8, 9], "keyword": 3, "kind": [2, 6, 7], "kinemat": [2, 4, 6, 8, 9], "kinematic_default_test": 4, "kinematic_maxim": 4, "kinematic_minim": [4, 6], "kinematic_minimizast": [8, 9], "kinematic_optimizatino": 6, "know": [2, 8, 9], "known": 6, "kwarg": 3, "ladder": 7, "languag": [7, 8, 9], "larg": [8, 9], "last": [6, 8, 9], "launch": 6, "lead": 7, "leader": [3, 7], "learn": [3, 7], "least": [8, 9], "legaci": [1, 6, 8, 9], "legend": [5, 6], "leggedsnak": 6, "len": [3, 5], "less": 6, "let": [3, 6, 8, 9], "level": 7, "lib": 6, "librari": [8, 9], "licens": 6, "life": 6, "like": [7, 8, 9], "line": [8, 9], "link": [2, 6, 9], "linkag": [0, 3, 6], "lint": 6, "list": [2, 3, 4, 5], "ljvmiranda921": [8, 9], "local": [2, 3], "localbestpso": 3, "locat": 2, "loci": [4, 5, 6, 8, 9], "locu": [4, 8, 9], "locus_highlight": [5, 6], "longer": 6, "look": [3, 8, 9], "loop": [8, 9], "lot": 6, "lower": [8, 9], "lower_bound": 3, "made": [8, 9], "magic": [8, 9], "mai": [1, 2, 6, 7, 8, 9], "mail": 7, "main": [6, 8, 9], "mainli": 3, "make": [2, 3, 4, 5, 6, 7, 8, 9], "mandatori": 6, "mani": [6, 8, 9], "manifest": 6, "manual": 2, "mar": 3, "mast": [8, 9], "master": 6, "math": 1, "mathemat": [6, 8, 9], "matplotlib": [5, 6, 8, 9], "matt": 1, "max": 3, "max_dim": 3, "max_factor": 3, "max_i": [8, 9], "max_x": [8, 9], "maxim": [3, 6], "md": [6, 8, 9], "mechan": [8, 9], "media": 7, "member": 7, "mention": 6, "mere": 6, "messag": [2, 6], "method": [1, 2, 6, 8, 9], "middl": 3, "millisecond": 5, "min": [3, 8, 9], "min_dim": 3, "min_i": [8, 9], "min_ratio": 3, "min_x": [8, 9], "minim": [3, 6, 8, 9], "minimum": [8, 9], "minor": 6, "misbehav": 6, "miss": 6, "mistak": 7, "mit": 6, "mode": [2, 5], "moder": 7, "modifi": [3, 5, 6], "modul": [2, 4, 5, 6, 9], "mon": [4, 5], "more": [6, 8, 9], "most": 6, "mostli": 2, "motor": [2, 6, 8, 9], "move": [2, 6, 8, 9], "movement": [5, 8, 9], "movement_bounding_bow": [4, 6], "movement_bounding_box": [4, 6], "mozilla": 7, "much": [6, 8, 9], "multipl": [2, 6], "mutabl": [0, 6], "mutable_ag": 0, "mutableag": [3, 6, 8], "my": [8, 9], "my_linkag": [8, 9], "n": [8, 9], "n_particl": 3, "n_result": [3, 8, 9], "name": [2, 6, 8, 9], "namedtupl": [0, 6], "nation": 7, "natur": 7, "navig": 6, "need": [2, 6, 8, 9], "neg": 6, "neighbor": [3, 8, 9], "net": 1, "new": 6, "none": [0, 1, 2, 3, 5], "norm": 1, "notabl": 6, "note": [8, 9], "noth": 2, "notic": [8, 9], "now": [6, 8, 9], "num_constraint": 3, "number": [2, 3, 5, 6, 8, 9], "numer": 2, "numpi": [8, 9], "numpydoc": 6, "o": 2, "obj_1": 1, "obj_2": 1, "object": [0, 1, 2, 6, 8, 9], "oblig": 7, "offens": 7, "offer": [8, 9], "offici": [6, 7], "offlin": 7, "often": [3, 6, 8, 9], "onc": [8, 9], "one": [1, 2, 6, 8, 9], "onli": [0, 2, 3, 6, 8, 9], "onlin": 7, "open": [7, 8, 9], "opinion": 7, "optim": [0, 1, 6], "option": [2, 5, 6, 8, 9], "order": [2, 3, 6, 8, 9], "order_rel": [3, 6, 8, 9], "ordin": [2, 6], "org": 7, "organ": 6, "ori": 1, "orient": [2, 7], "origin": [1, 2, 5], "ot": 6, "other": [0, 2, 7], "otherwis": [7, 8, 9], "our": [8, 9], "output": [3, 5, 6], "over": [2, 6], "overal": 7, "own": [2, 6], "packag": [6, 8, 9], "pad": 6, "page": [6, 8], "paramet": [1, 3, 4, 5, 6, 8, 9], "parent": [2, 8, 9], "part": [2, 8, 9], "particip": 7, "particl": [6, 8, 9], "particle_swarm": [3, 6], "particle_swarm_optim": [3, 6, 8, 9], "particularli": [8, 9], "pass": [2, 3, 4, 5, 8, 9], "path": [6, 8, 9], "pattern": 7, "paul": 1, "paulbourk": 1, "penalti": [4, 8, 9], "peopl": 7, "per": 5, "perfect": 6, "period": [2, 7], "permiss": 7, "person": 7, "perspect": 6, "physic": 7, "pin": [2, 8, 9], "pivot": [2, 6, 8, 9], "pl": [8, 9], "plai": [8, 9], "planar": [8, 9], "pleas": [8, 9], "pledg": 8, "plot": [5, 6], "plot_kinematic_linkag": [5, 6], "plot_static_linkag": [5, 6], "plotter": 8, "po": [2, 6, 8, 9], "point": [1, 2, 4, 5, 6, 8, 9], "point1": 1, "point2": 1, "polar": 1, "polit": 7, "poorli": 6, "posit": [2, 3, 5, 6, 7, 8, 9], "possibl": [2, 3, 6, 8, 9], "post": [7, 8, 9], "preassign": 0, "precis": 2, "preserv": 2, "prev": 5, "previou": [2, 5, 6, 8, 9], "principl": [8, 9], "print": [3, 6], "privaci": 7, "privat": 7, "problem": [3, 6, 8, 9], "profession": 7, "program": 1, "progress": [6, 8, 9], "project": [2, 6], "promptli": 7, "properli": 6, "propos": [8, 9], "provid": [1, 4, 6, 7, 8, 9], "pso": [3, 6, 8, 9], "public": 7, "publish": [6, 7], "pull": [8, 9], "purpos": [8, 9], "put": [8, 9], "py": [6, 8, 9], "pycharm": 6, "pylinkag": [0, 1, 2, 3, 4, 5, 6], "pypi": [6, 8, 9], "pyproject": 6, "pyswarm": [3, 6, 8, 9], "python": [1, 6, 8, 9], "quadrant": [8, 9], "quarter": [8, 9], "question": 7, "quick": 2, "quicker": 6, "r": 2, "r0": 2, "r1": 2, "race": 7, "radian": [2, 8, 9], "radiu": [1, 2], "rais": [2, 6], "randomli": 3, "rare": [8, 9], "rate": 6, "ratio": 3, "readabl": 2, "readm": [6, 8], "real": 5, "rearrang": [8, 9], "reason": [7, 8, 9], "rebuild": 2, "recap": [8, 9], "recat": 2, "receiv": [6, 8, 9], "recommend": [6, 8, 9], "recreat": 5, "redefin": 2, "ref_bb": [8, 9], "ref_po": [8, 9], "refer": [2, 3, 8, 9], "regardless": 7, "regener": 6, "reject": 7, "rel": [2, 6], "relat": 6, "relev": [8, 9], "religion": 7, "reload": [2, 6, 8, 9], "rememb": [8, 9], "remov": [2, 3, 4, 7], "renam": 6, "reorgan": 6, "replac": [4, 6], "report": 7, "repr_polar_swarm": 6, "repres": 7, "represent": [2, 6], "request": [7, 8, 9], "requir": 6, "reset": [8, 9], "resolut": 2, "resourc": [8, 9], "respect": [7, 8, 9], "respons": 8, "rest": 6, "result": [3, 5, 6, 8, 9], "return": [1, 3, 4, 5, 6, 8, 9], "revamp": 6, "review": 7, "revolut": [5, 6, 8], "revolute_joint": [2, 6], "right": [7, 8, 9], "risk": 6, "robust": [6, 8, 9], "rocker": [8, 9], "role": [8, 9], "rotat": [2, 6, 8, 9], "roughli": 0, "run": [2, 4, 5, 6, 8, 9], "sai": [8, 9], "same": [4, 6], "satisfactori": 6, "satisfi": 2, "save": [5, 6, 8, 9], "scalar": 2, "scope": 8, "score": [0, 3, 5, 6, 8, 9], "script": 6, "search": [5, 8, 9], "second": [1, 2, 5, 6, 8, 9], "secur": 7, "see": [5, 6, 7, 8, 9], "seem": [6, 8, 9], "seen": 6, "segment": [8, 9], "self": 2, "semant": 6, "sens": [8, 9], "separ": [6, 8, 9], "sequenc": [2, 3, 5], "sequenti": [3, 8, 9], "sequential_vari": 3, "seri": 7, "serial": [8, 9], "seriou": 7, "set": [2, 3, 5, 6, 7], "set_anchor0": 2, "set_anchor1": 2, "set_complet": [2, 6], "set_constraint": [2, 6], "set_coord": [2, 6, 8, 9], "set_num_constraint": [2, 6, 8, 9], "setup": 6, "sex": 7, "sexual": 7, "shape": 3, "shorter": [8, 9], "should": [0, 1, 2, 3, 5, 6, 8, 9], "show": [5, 6, 8, 9], "show_legend": 5, "show_linkag": [5, 8, 9], "sidebar": 6, "signatur": 6, "similar": 6, "simpl": [2, 3, 6, 8, 9], "simplif": 6, "simplifi": [6, 8, 9], "simul": 4, "sinc": [2, 3, 4], "singl": [3, 7, 8, 9], "size": [3, 7], "small": 3, "so": [1, 2, 3, 6, 8, 9], "social": [3, 7], "socio": 7, "solut": [2, 6, 8, 9], "solv": [2, 8, 9], "some": [6, 8, 9], "someth": [8, 9], "sometim": 6, "sort": 7, "sourc": [6, 8], "space": [2, 3, 7, 8, 9], "special": [2, 5], "specif": 6, "specifi": [3, 6, 7, 8, 9], "sphinx": 6, "split": 6, "sqr_dist": 1, "squar": [1, 8, 9], "stai": [8, 9], "standard": [2, 4, 6, 8, 9], "start": [1, 8, 9], "state": [2, 3], "static": [2, 6], "statu": 7, "step": [2, 3, 5, 6, 8, 9], "still": [8, 9], "stop": [6, 8, 9], "str": [2, 5], "strider": 6, "structur": [2, 4], "style": 6, "subdivid": 5, "subdivis": [3, 6, 8, 9], "subplot": 5, "subscript": 0, "subset": 2, "sugar": 6, "sum": [8, 9], "support": [0, 5, 8, 9], "sure": 3, "sustain": 7, "swarm": [5, 6, 8, 9], "swarm_tiled_repr": [5, 6], "switch": [8, 9], "syntact": 6, "system": 2, "t": [2, 6, 8, 9], "tadaaa": [8, 9], "tag": 6, "tail": [8, 9], "take": [2, 3, 6, 7, 8, 9], "target": 6, "techniqu": [8, 9], "templat": 6, "term": [2, 7], "test": [6, 8, 9], "test_converg": 6, "test_geometri": 6, "test_linkag": 6, "test_optim": 6, "testpso": 6, "than": [1, 3, 8, 9], "thank": 6, "thei": [2, 5, 6, 7, 8, 9], "them": [2, 5, 8, 9], "theoret": [8, 9], "thereaft": 2, "theta": 1, "thi": [2, 3, 4, 6, 7, 8, 9], "thing": [8, 9], "think": [8, 9], "those": 7, "threaten": 7, "three": [8, 9], "through": 7, "tile": 5, "time": [6, 7, 8, 9], "tip_locu": [8, 9], "titl": 5, "todai": [8, 9], "togeth": [8, 9], "tol": 1, "toler": [1, 3], "toml": 6, "too": 3, "top": [8, 9], "toward": 7, "tox": 6, "tqdm": [3, 6], "tqdm_verbos": [3, 6], "transcript": 1, "transit": 6, "translat": 7, "trial": [6, 8, 9], "trials_and_error": 6, "trials_and_error_optim": 6, "trials_and_errors_optim": [3, 6, 8, 9], "trials_and_errors_optimizatt": 6, "triangl": [8, 9], "trick": [8, 9], "trigonometr": 2, "troll": 7, "true": [2, 3, 6], "try": [8, 9], "tupl": [0, 1, 2, 3, 4, 8, 9], "turn": [2, 8, 9], "two": [1, 2, 3, 6, 8, 9], "txt": 6, "type": [1, 2, 3, 4, 5, 6], "typo": 6, "u": [2, 7], "ugli": 6, "unabl": 2, "unaccept": 7, "unbuild": 4, "unbuildableerror": 2, "under": [1, 2], "uniform": 0, "union": 2, "unittest": 6, "unoptim": 1, "unprofession": 7, "unreleas": 8, "unsolicit": 7, "unus": 2, "unwelcom": 7, "updat": [5, 6, 8, 9], "update_animated_plot": 5, "upl": 3, "uplet": [3, 8, 9], "upper": 3, "upper_bound": 3, "us": [0, 1, 2, 3, 4, 5, 6, 7], "useless": 5, "user": [2, 6], "util": [6, 8], "valid": 6, "valu": [1, 2, 3, 4, 5, 6], "vari": [3, 8, 9], "variabl": 6, "variat": [3, 6], "variou": [6, 8], "vec": 1, "vectori": [8, 9], "verbos": [3, 6], "veri": [3, 6], "verifi": [8, 9], "version": [2, 3, 4, 5, 6, 7], "vertic": 2, "via": 7, "video": 5, "view": [2, 6, 8, 9], "viewpoint": 7, "violat": 7, "violent": 3, "visibl": 7, "visual": 6, "vizual": 6, "vulner": 6, "w": 3, "wa": [4, 6, 7], "wai": [2, 5, 6, 7, 8, 9], "wait": [8, 9], "walkthrough": 6, "want": [2, 3, 5, 8, 9], "warn": 6, "wasn": 6, "we": [2, 3, 5, 6, 7, 8, 9], "websit": 6, "wed": [1, 2], "welcom": 7, "well": [6, 7], "were": [6, 7], "what": [7, 8, 9], "when": [1, 2, 5, 6, 7, 8, 9], "whether": 2, "which": [1, 2, 3, 7, 8, 9], "whole": 2, "why": [7, 8, 9], "wiki": 7, "windshield": [8, 9], "wiper": [8, 9], "within": 7, "without": [5, 6, 7, 8, 9], "won": 2, "wonder": [8, 9], "woodhead": 1, "work": [6, 8, 9], "workflow": 6, "would": [6, 8, 9], "wrapper": [3, 6, 8, 9], "write": [8, 9], "written": 7, "wrongli": 6, "www": 7, "x": [2, 3, 6, 8, 9], "x_max": 4, "x_min": 4, "y": [2, 6, 8, 9], "y_max": 4, "y_min": 4, "yet": 6, "yml": [6, 8, 9], "you": [0, 2, 3, 5, 6, 8, 9], "your": [6, 8, 9], "yourself": [8, 9], "zip": [8, 9]}, "titles": ["collections", "geometry", "interface", "optimization", "utility", "visualizer", "Changelog", "Contributor Covenant Code of Conduct", "Welcome to pylinkage\u2019s documentation!", "Pylinkage"], "titleterms": {"": 8, "0": 6, "05": 6, "06": 6, "07": 6, "1": [6, 7], "11": 6, "12": 6, "14": 6, "16": 6, "2": [6, 7], "2021": 6, "2023": 6, "21": 6, "22": 6, "23": 6, "3": [6, 7], "4": [6, 7], "5": 6, "abstract": 1, "ad": 6, "agent": 0, "argument": 2, "attribut": 7, "ban": 7, "base": 1, "chang": 6, "changelog": 6, "code": 7, "collect": 0, "complet": [8, 9], "conduct": 7, "contribut": [8, 9], "contributor": 7, "correct": 7, "coven": 7, "definit": [2, 8, 9], "demo": [8, 9], "deprec": 6, "document": 8, "enforc": 7, "environ": [8, 9], "error": 3, "exampl": [8, 9], "except": 2, "fix": 6, "function": 4, "geometr": 1, "geometri": 1, "grid": 3, "guidelin": 7, "handl": 4, "help": 4, "indic": 8, "instal": [8, 9], "interfac": 2, "introduct": 8, "joint": [2, 8, 9], "link": 8, "linkag": [2, 4, 5, 8, 9], "modul": [1, 8], "mutableag": 0, "optim": [3, 8, 9], "our": 7, "paramet": 2, "particl": 3, "perman": 7, "pip": [8, 9], "pledg": 7, "plotter": 5, "pylinkag": [8, 9], "quick": 8, "remov": 6, "requir": [8, 9], "respons": 7, "return": 2, "revolut": 2, "scope": 7, "search": 3, "set": [8, 9], "short": [8, 9], "simpl": 5, "simul": [8, 9], "standard": 7, "structur": [8, 9], "swarm": 3, "tabl": 8, "temporari": 7, "trial": 3, "unreleas": 6, "up": [8, 9], "us": [8, 9], "util": [3, 4], "variou": 4, "virtual": [8, 9], "visual": [5, 8, 9], "warn": 7, "welcom": 8, "you": 4, "your": 5}}) \ No newline at end of file