From 767f5e59ce80960e015c1755ea2fe93da7a6abca Mon Sep 17 00:00:00 2001 From: ljvmiranda921 Date: Tue, 12 Jun 2018 11:07:20 +0900 Subject: [PATCH 01/12] Add DeprecationWarning to PlotEnvironment module In this commit, we add a DeprecationWarning for the PlotEnvironment module. Although useful, I realized that it might be a hassle when the environment still optimizes the optimizer if we just want to plot it. What if a swarm iteration takes a long time? Will plotting take the same amount of time? We want to decouple the optimization part from the visualization. It is better to just have the user supply the position and cost histories and we just have the module do what it knows. Signed-off-by: Lester James V. Miranda --- pyswarms/utils/environments/plot_environment.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyswarms/utils/environments/plot_environment.py b/pyswarms/utils/environments/plot_environment.py index c256b2f6..9606d91d 100644 --- a/pyswarms/utils/environments/plot_environment.py +++ b/pyswarms/utils/environments/plot_environment.py @@ -57,6 +57,7 @@ # Import modules import logging +import warnings import numpy as np import matplotlib.pyplot as plt from past.builtins import xrange @@ -64,6 +65,8 @@ from collections import namedtuple from mpl_toolkits.mplot3d import Axes3D +warnings.simplefilter('default') +warnings.warn("The pyswarms.environments module is deprecated and will be removed in v.0.2.5. For visualization, please use pyswarms.plotters", DeprecationWarning, stacklevel=2) class PlotEnvironment(object): From 7caded43fabedf3ce63a4fb9185abcce061734da Mon Sep 17 00:00:00 2001 From: ljvmiranda921 Date: Tue, 12 Jun 2018 22:25:46 +0900 Subject: [PATCH 02/12] Remove @property in history In this commit, we decided to remove the @property in storing the dependency. I found this very redundant and violates Python's rule of having only one way of doing things. Instead, we just access the histories from the class/instance attributes Signed-off-by: Lester James V. Miranda --- docs/assets/inheritance.aux | 2 + docs/assets/inheritance.fdb_latexmk | 155 ++++++++++++++ docs/assets/inheritance.fls | 250 ++++++++++++++++++++++ docs/assets/optimization_loop.aux | 2 + docs/assets/optimization_loop.fdb_latexmk | 156 ++++++++++++++ docs/assets/optimization_loop.fls | 248 +++++++++++++++++++++ docs/assets/pyswarms_api.aux | 2 + docs/assets/pyswarms_api.fdb_latexmk | 128 +++++++++++ docs/assets/pyswarms_api.fls | 204 ++++++++++++++++++ pyswarms/base/base_discrete.py | 56 +---- pyswarms/base/base_single.py | 25 --- 11 files changed, 1155 insertions(+), 73 deletions(-) create mode 100644 docs/assets/inheritance.aux create mode 100644 docs/assets/inheritance.fdb_latexmk create mode 100644 docs/assets/inheritance.fls create mode 100644 docs/assets/optimization_loop.aux create mode 100644 docs/assets/optimization_loop.fdb_latexmk create mode 100644 docs/assets/optimization_loop.fls create mode 100644 docs/assets/pyswarms_api.aux create mode 100644 docs/assets/pyswarms_api.fdb_latexmk create mode 100644 docs/assets/pyswarms_api.fls diff --git a/docs/assets/inheritance.aux b/docs/assets/inheritance.aux new file mode 100644 index 00000000..7c14129a --- /dev/null +++ b/docs/assets/inheritance.aux @@ -0,0 +1,2 @@ +\relax +\gdef \sa@multi@numpages {0} diff --git a/docs/assets/inheritance.fdb_latexmk b/docs/assets/inheritance.fdb_latexmk new file mode 100644 index 00000000..1b01ed13 --- /dev/null +++ b/docs/assets/inheritance.fdb_latexmk @@ -0,0 +1,155 @@ +# Fdb version 3 +["pdflatex"] 1528613815 "inheritance.tex" "inheritance.pdf" "inheritance" 1528613816 + "/dev/null" 1528595442 0 d41d8cd98f00b204e9800998ecf8427e "" + "/etc/texmf/web2c/texmf.cnf" 1515379388 475 c0e671620eb5563b2130f56340a5fde8 "" + "/home/ljvm/.texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1515762570 182396 f7dec8867b39ce26f1cba3e9650c3aa6 "" + "/home/ljvm/texmf/tex/generic/oberdiek/etexcmds.sty" 1335995445 7612 c47308d923ec19888707b0f1792b326a "" + "/home/ljvm/texmf/tex/generic/oberdiek/ifpdf.sty" 1303254447 7140 ece2cc23d9f20e1f53975ac167f42d3e "" + "/home/ljvm/texmf/tex/generic/oberdiek/infwarerr.sty" 1335995445 8253 3bdedc8409aa5d290a2339be6f09af03 "" + "/home/ljvm/texmf/tex/generic/oberdiek/kvdefinekeys.sty" 1335995445 5152 387d9200f396b498d5fd679ae44ed898 "" + "/home/ljvm/texmf/tex/generic/oberdiek/kvsetkeys.sty" 1335995445 14040 8de9f47fabc4ca3bd69b6d795e32751c "" + "/home/ljvm/texmf/tex/generic/oberdiek/ltxcmds.sty" 1335995445 18425 775b341047ce304520cc7c11ca41392e "" + "/home/ljvm/texmf/tex/generic/oberdiek/pdftexcmds.sty" 1335995445 19987 01cb2f3c1d21e5f05711b7fd50b17f2a "" + "/home/ljvm/texmf/tex/generic/xstring/xstring.sty" 1269905706 144 0ca8d67b000b795a4d9ec000e0fd09c7 "" + "/home/ljvm/texmf/tex/generic/xstring/xstring.tex" 1381789620 54373 fd4487ae3e45d4074bc89aea1d2b6807 "" + "/home/ljvm/texmf/tex/latex/graphics/dvipsnam.def" 1454284088 4945 3b3a8face751255856839a3489e83341 "" + "/home/ljvm/texmf/tex/latex/graphics/graphics.sty" 1454284088 14337 b66dff1d80f6c21e70858a2b3c2d327d "" + "/home/ljvm/texmf/tex/latex/graphics/graphicx.sty" 1428932888 8125 557ab9f1bfa80d369fb45a914aa8a3b4 "" + "/home/ljvm/texmf/tex/latex/graphics/trig.sty" 1454284088 3980 0a268fbfda01e381fa95821ab13b6aee "" + "/home/ljvm/texmf/tex/latex/oberdiek/epstopdf-base.sty" 1303254447 12029 04d7fdf76e0464c23b5aa3a727952d7c "" + "/home/ljvm/texmf/tex/latex/oberdiek/grfext.sty" 1335995445 7075 bd0c34fbf1ae8fd1debd2a554e41b2d5 "" + "/home/ljvm/texmf/tex/latex/oberdiek/kvoptions.sty" 1335995445 22417 c74ff4af6a1aa2b65d1924020edbbe11 "" + "/home/ljvm/texmf/tex/latex/preview/preview.sty" 1447630789 13687 0cb5888b46d12f19ed3b85a16d43470e "" + "/home/ljvm/texmf/tex/latex/preview/prtightpage.def" 1266794019 4841 763a1efd128d3821c07232f7b2638b7b "" + "/home/ljvm/texmf/tex/latex/standalone/standalone.cfg" 1437172902 902 f9a15737aea33182ec1f3542ca20dbfe "" + "/home/ljvm/texmf/tex/latex/standalone/standalone.cls" 1437172902 27291 b798d344bcba4430e7f7dc7561c517d5 "" + "/home/ljvm/texmf/tex/latex/tools/calc.sty" 1454284088 10214 d03d065f799d54f6b7e9b175f8d84279 "" + "/home/ljvm/texmf/tex/latex/xcolor/xcolor.sty" 1169481954 55224 a43bab84e0ac5e6efcaf9a98bde73a94 "" + "/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1272929888 3287 e6b82fe08f5336d4d5ebc73fb1152e87 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1136768653 1512 f21f83efb36853c0b70002322c1ab3ad "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi9.tfm" 1136768653 1524 d89e2d087a9828407a196f428428ef4a "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1136768653 1300 b62933e007d01cfd073f79b963c01526 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr9.tfm" 1136768653 1292 6b21b9c2c7bebb38aa2273f7ca0fb3af "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmss10.tfm" 1136768653 1316 b636689f1933f24d1294acdf6041daaa "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmss9.tfm" 1136768653 1320 49357c421c0d469f88b867dd0c3d10e8 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmssbx10.tfm" 1136768653 1272 e2d13f0df30bf3ad990bb9d028e37f34 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1136768653 1116 933a60c408fc0a863a92debe84b2d294 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy9.tfm" 1136768653 1116 25a7bf822c58caf309a702ef79f4afbb "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmss9.pfb" 1248133631 24373 a91d375736817a75026663adcb2190c1 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmssbx10.pfb" 1248133631 28902 2f5c04fd2884d1878057baa5aad22765 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy9.pfb" 1248133631 32442 c975af247b6702f7ca0c299af3616b80 "" + "/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii" 1337017135 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty" 1284331290 1458 43ab4710dc82f3edeabecd0d099626b2 "" + "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty" 1303254447 7324 11d14f318d865f420e692d4e6c9c18c3 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex" 1288312291 1006 b103be0bfc8c1682ff1fa9760697a329 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex" 1439074469 43226 167a99346bfe2676e3efcdde2d81fe45 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex" 1439074469 19302 4f089dc590e71f7331e6d5b5ea85273b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex" 1439074469 6068 edae1e768a7d8d8f0f00e953d2b0153e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex" 1393459310 7041 a891ad72049e17c4e366c40ca37b0ccb "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex" 1393459310 4625 40c07e9f6f2f7c674704b3f2055560ce "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex" 1203877327 2631 7eefa6cdbefd8d4e2bad7262cf1094cd "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex" 1393459310 43477 81143b33d9ebafdeead07ede13372427 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex" 1393459310 17436 8d99d4113be311daf23deff86991ee7d "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex" 1439074469 20772 c57e34db4aa7b1da013169d04b743eac "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex" 1393459310 9641 711f0edc22c180a5caf168b6e8970057 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex" 1393459310 34516 658a71478d21df554bce9d9cd436203a "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex" 1288312291 3052 e5672c657232fd63b0a9853b0746297c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex" 1439074469 16669 4ec6e40088fc6de6334b443fe2dc59f0 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex" 1393459310 21541 4cd19f8ff7dd74d5aa7d803a6397af84 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex" 1439074469 19998 d77fef95c7369827753d17fd11be19c4 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex" 1393459310 8943 2e2495b057f8f0035b5568394d489963 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex" 1203727794 437 cf40f841f40822be6cb995f8b47112fd "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex" 1393459310 4611 b858a4e5bd5442802c91a13027dc25bb "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex" 1393459310 15934 b941bd3ae7b33179029513707d1f0ff6 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex" 1393459310 5484 4bb4a5cbbd05d6f17a261b59dbd014f1 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.markings.code.tex" 1203727794 782 2479083eef1ef47450770d40ad81f937 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex" 1288312291 1298 83d7449064b0f0f089f1898a244b6d16 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex" 1393459310 3725 36db4c06798413d051778705f3255eea "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex" 1288312291 4034 0a8cd33cf30d262ec971380666acb2d0 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex" 1203727794 3001 d54bab2f783098ed890fabbeb437b04f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex" 1203727794 527 a8d3e34fbab3dc317cf9b06aa5cdc2e4 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex" 1203727794 1158 d6338189706f4587fbc6175c0fb41f17 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex" 1203727794 607 40dc15d3efcf10f095866a94bd544bc1 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex" 1203727794 457 ffe9f8b9d108b5f729fd86c78c63589a "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex" 1203727794 447 e87a0add254801e837fa6c18f61f340f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex" 1203727794 1004 86af66805a9d0b62bd41ea0796a64d50 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex" 1203727794 590 7e11000a24bbee9ae2a4cd0e5d88e58c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex" 1288312291 11599 d694704a88e2f9007c996d3a6a4d629c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex" 1439074469 176652 1c2926908e2b356d454795c35385d580 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.markings.code.tex" 1393459310 5181 c2b736d254ec36204f8fffd5a45bbd41 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex" 1393459310 31927 7acd27f90dd95ce67ad32166cd0b95ec "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex" 1203727794 2647 defb4a59c2a1d36127a1ac6eebb4a5c1 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex" 1393459310 32969 dbcfd5a7de6a0f7255c333ef60287d59 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex" 1288312291 69900 cbd9fafb795a493fb2a3b73713994b78 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex" 1393459310 28333 0189c4cfb5044e700e6ba65a32295f01 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex" 1288312291 132566 291d42c3b23fdb5c47e51b36a5fea0c4 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex" 1393459310 37737 ea6cb0b4e615f6048f20ee7153b3cc78 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex" 1288312291 49891 e74f8181c57d9359c941b6bee48fccc2 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex" 1393459310 90791 0f3e73cae9286c96d9fcb2161cc223bc "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex" 1393459310 454 9e9e7c99f4da4f41698be21eaef4938e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex" 1393459310 13416 940ea6971d7a65dc440d3479939c66ae "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex" 1439074469 94097 62ac62cda46eb715560dc27f9ed6e8b1 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex" 1393459310 9375 5adc70f722abd29fc250d59e0694b548 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex" 1439074469 22069 7c21c42b15718ce922f36235be360490 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex" 1439074469 8210 a7be5b52ef3d2c087b7dc3d52898b67e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex" 1288312291 3534 c7f28fbac13616513e513efe93b8569b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex" 1393459310 3167 7c9394e79aac27db96a92f9b2792b858 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex" 1439074469 9289 261407875b9dbb0194691c3eb893610f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex" 1439074469 7078 946ddf4a7e57219b6afdbad98eb6731b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex" 1288312291 2688 139c6abc86761a6190c2f4bef5d752be "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex" 1439074469 92284 dcf023dbaa84e6c50e11c2f79fe8cfa6 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex" 1439074469 35430 046e15fbb65e74d8f0e7945f99741fdb "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex" 1393459310 7099 f44d505bae6c7c2b933cdd63441db4b9 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex" 1393459310 71902 658cc1e13f73daec4225b8fc1c27600b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex" 1393459310 20934 2328bd2e04520e1ab077ac4ee13b8935 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex" 1439074469 16203 83cbe1220e389eeee283a6168f9a567b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex" 1439074469 42906 d54376d96df1a2ae2d33fb722236d8e9 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg" 1288312291 978 15af626ebd3d4d790aac19170dac04f2 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def" 1393459310 5437 d91f93ed61ecdc57e119849b2d784a0b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def" 1439074469 13507 809d848d9262638e1b1705a68a73c566 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex" 1439074469 35113 2ccc50c1c9573e4bac9230d030f9c67c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex" 1203877327 1983 b5994ebbcee17f1ba3d29bb1bd696fcf "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex" 1393459310 7881 d459d6057e13d10ce7a227ae44b7295e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex" 1393459310 22211 d696ef78c12269178882d218b2cf191d "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex" 1393459310 36194 e194ef4e0b396b531a3891feb4b1cc22 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex" 1393459310 33377 af391d6ad1bfcbe2278e191f48e43ba8 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex" 1440888734 2536 a3b0529d815a2759ba157b56610a6377 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex" 1393459310 6833 114eda2cf1d348e0e7e477a1a4dc1941 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex" 1439074469 16501 ab0135765e27b6b8dae047831fe84818 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def" 1439074469 5544 294baac9629ba59f675b1f2027ad7136 "" + "/usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex" 1403829539 2725 fc34ef3ccb37ba15a640e8fca6190bca "" + "/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex" 1417732693 19231 26434a5656c684f5ffb1f26f98006baa "" + "/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex" 1403829539 7677 6f5ce7c1124cad7ec57d05b2562bd8fe "" + "/usr/share/texlive/texmf-dist/tex/latex/base/article.cls" 1454284088 20708 39fdf9e2fb65617012fa7382a351f485 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty" 1454284088 5159 a08c9bbd48fc492f15b22e458bef961f "" + "/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo" 1454284088 9179 4cd3c5f593e63512893b8ac0123f1bd7 "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg" 1254097189 802 7b8c8d72c24d795ed7720e4dfd29bff3 "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg" 1278958963 3563 d35e897cae3b8c6848f6677b73370b54 "" + "/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty" 1177890616 3878 6aa7c08ff2621006e0603349e40a30a8 "" + "/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def" 1306616590 55368 3c8a0d99822330f2dfabc0dfb09ce897 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf-blur/tikzlibraryshadows.blur.code.tex" 1335333685 7525 063a37c856ae2c38332d93e3d457a299 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty" 1439074469 1197 8a80cdde14696a9198f1793a55dcf332 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty" 1288312291 410 5bf12ea7330e5f12c445332a4fe9a263 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty" 1203877327 21115 facf03b7dbe5ea2f5f1dce1ac84b5d05 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty" 1203727794 1091 d9163d29def82ee90370c8a63667742c "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty" 1203877327 339 592cf35cba3d400082b8a9a5d0199d70 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty" 1393459310 306 0796eafca5e159e6ec2167a6d22d81b1 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty" 1393459310 443 0b2e781830192df35c0fd357cf13e26e "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty" 1393459310 348 8927fde343487e003b01a4c2ca34073b "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty" 1203727794 274 4cad6e665cc93ac2ac979039a94fa1e1 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty" 1203877327 325 2bcd023400636339210573e2b3ee298b "" + "/usr/share/texlive/texmf-dist/tex/latex/pgfopts/pgfopts.sty" 1405118212 5540 d5c60cf09c59da351aa4023ed084e4eb "" + "/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty" 1417732693 4962 9c1069474ff71dbc47d5006555e352d3 "" + "/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1503343927 31343 93828589fb0cea665e553ee5a17ad2d4 "" + "/usr/share/texmf/web2c/texmf.cnf" 1503343927 31343 93828589fb0cea665e553ee5a17ad2d4 "" + "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1528507587 718486 55e051f478d994e1e3e5b41625d996af "" + "inheritance.aux" 1528613815 8 a94a2480d3289e625eea47cd1b285758 "" + "inheritance.pdf" 1528613815 33726 755c6ba1b7e08ba25d4c4bf070e74723 "pdflatex" + "inheritance.png" 1528606148 15031 54872dfbf68cfa63dcdcc9264b34daae "" + "inheritance.tex" 1528613800 2092 8e81f1f5803589f754bd70c58b0c6450 "" + "tikz-uml.sty" 1526185697 302703 ed2f9b5dd419a64f254ecbf6a6653c7f "" + (generated) + "inheritance.pdf" + "inheritance.log" + "inheritance.aux" diff --git a/docs/assets/inheritance.fls b/docs/assets/inheritance.fls new file mode 100644 index 00000000..8e82d2d4 --- /dev/null +++ b/docs/assets/inheritance.fls @@ -0,0 +1,250 @@ +PWD /home/ljvm/Documents/Dev/pyswarms/docs/assets +INPUT /etc/texmf/web2c/texmf.cnf +INPUT /usr/share/texmf/web2c/texmf.cnf +INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf +INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt +INPUT inheritance.tex +OUTPUT inheritance.log +INPUT /home/ljvm/texmf/tex/latex/standalone/standalone.cls +INPUT /home/ljvm/texmf/tex/latex/standalone/standalone.cls +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ifpdf.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ifpdf.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ifpdf.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex +INPUT /dev/null +INPUT /home/ljvm/texmf/tex/latex/standalone/standalone.cfg +INPUT /home/ljvm/texmf/tex/latex/standalone/standalone.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /home/ljvm/texmf/tex/latex/preview/preview.sty +INPUT /home/ljvm/texmf/tex/latex/preview/preview.sty +INPUT /home/ljvm/texmf/tex/latex/preview/prtightpage.def +INPUT /home/ljvm/texmf/tex/latex/preview/prtightpage.def +INPUT inheritance.png +INPUT ./inheritance.png +INPUT ./inheritance.pdf +INPUT inheritance.aux +INPUT inheritance.aux +INPUT ./inheritance.pdf +INPUT inheritance.png +INPUT ./inheritance.png +INPUT /home/ljvm/texmf/tex/latex/xcolor/xcolor.sty +INPUT /home/ljvm/texmf/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def +INPUT /home/ljvm/texmf/tex/generic/oberdiek/infwarerr.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/infwarerr.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ltxcmds.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ltxcmds.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/dvipsnam.def +INPUT /home/ljvm/texmf/tex/latex/graphics/dvipsnam.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/graphicx.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/graphicx.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/graphics.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/graphics.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/trig.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +INPUT tikz-uml.sty +INPUT tikz-uml.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +INPUT /home/ljvm/texmf/tex/generic/xstring/xstring.sty +INPUT /home/ljvm/texmf/tex/generic/xstring/xstring.sty +INPUT /home/ljvm/texmf/tex/generic/xstring/xstring.tex +INPUT /home/ljvm/texmf/tex/latex/tools/calc.sty +INPUT /home/ljvm/texmf/tex/latex/tools/calc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgfopts/pgfopts.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgfopts/pgfopts.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex +OUTPUT inheritance.pdf +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.markings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.markings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.markings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.markings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf-blur/tikzlibraryshadows.blur.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf-blur/tikzlibraryshadows.blur.code.tex +INPUT inheritance.aux +INPUT inheritance.aux +OUTPUT inheritance.aux +INPUT /usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmss10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii +INPUT /home/ljvm/texmf/tex/generic/oberdiek/pdftexcmds.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/pdftexcmds.sty +INPUT /home/ljvm/texmf/tex/latex/oberdiek/epstopdf-base.sty +INPUT /home/ljvm/texmf/tex/latex/oberdiek/epstopdf-base.sty +INPUT /home/ljvm/texmf/tex/latex/oberdiek/grfext.sty +INPUT /home/ljvm/texmf/tex/latex/oberdiek/grfext.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/kvdefinekeys.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/kvdefinekeys.sty +INPUT /home/ljvm/texmf/tex/latex/oberdiek/kvoptions.sty +INPUT /home/ljvm/texmf/tex/latex/oberdiek/kvoptions.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/kvsetkeys.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/kvsetkeys.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/etexcmds.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/etexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmss9.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr9.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi9.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy9.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmssbx10.tfm +INPUT /home/ljvm/.texmf-var/fonts/map/pdftex/updmap/pdftex.map +INPUT inheritance.aux +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmss9.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmssbx10.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy9.pfb diff --git a/docs/assets/optimization_loop.aux b/docs/assets/optimization_loop.aux new file mode 100644 index 00000000..7c14129a --- /dev/null +++ b/docs/assets/optimization_loop.aux @@ -0,0 +1,2 @@ +\relax +\gdef \sa@multi@numpages {0} diff --git a/docs/assets/optimization_loop.fdb_latexmk b/docs/assets/optimization_loop.fdb_latexmk new file mode 100644 index 00000000..77e1eb7d --- /dev/null +++ b/docs/assets/optimization_loop.fdb_latexmk @@ -0,0 +1,156 @@ +# Fdb version 3 +["pdflatex"] 1528617882 "optimization_loop.tex" "optimization_loop.pdf" "optimization_loop" 1528617883 + "/dev/null" 1528595442 0 d41d8cd98f00b204e9800998ecf8427e "" + "/etc/texmf/web2c/texmf.cnf" 1515379388 475 c0e671620eb5563b2130f56340a5fde8 "" + "/home/ljvm/.texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1515762570 182396 f7dec8867b39ce26f1cba3e9650c3aa6 "" + "/home/ljvm/texmf/tex/generic/oberdiek/etexcmds.sty" 1335995445 7612 c47308d923ec19888707b0f1792b326a "" + "/home/ljvm/texmf/tex/generic/oberdiek/ifpdf.sty" 1303254447 7140 ece2cc23d9f20e1f53975ac167f42d3e "" + "/home/ljvm/texmf/tex/generic/oberdiek/infwarerr.sty" 1335995445 8253 3bdedc8409aa5d290a2339be6f09af03 "" + "/home/ljvm/texmf/tex/generic/oberdiek/kvdefinekeys.sty" 1335995445 5152 387d9200f396b498d5fd679ae44ed898 "" + "/home/ljvm/texmf/tex/generic/oberdiek/kvsetkeys.sty" 1335995445 14040 8de9f47fabc4ca3bd69b6d795e32751c "" + "/home/ljvm/texmf/tex/generic/oberdiek/ltxcmds.sty" 1335995445 18425 775b341047ce304520cc7c11ca41392e "" + "/home/ljvm/texmf/tex/generic/oberdiek/pdftexcmds.sty" 1335995445 19987 01cb2f3c1d21e5f05711b7fd50b17f2a "" + "/home/ljvm/texmf/tex/generic/xstring/xstring.sty" 1269905706 144 0ca8d67b000b795a4d9ec000e0fd09c7 "" + "/home/ljvm/texmf/tex/generic/xstring/xstring.tex" 1381789620 54373 fd4487ae3e45d4074bc89aea1d2b6807 "" + "/home/ljvm/texmf/tex/latex/graphics/dvipsnam.def" 1454284088 4945 3b3a8face751255856839a3489e83341 "" + "/home/ljvm/texmf/tex/latex/graphics/graphics.sty" 1454284088 14337 b66dff1d80f6c21e70858a2b3c2d327d "" + "/home/ljvm/texmf/tex/latex/graphics/graphicx.sty" 1428932888 8125 557ab9f1bfa80d369fb45a914aa8a3b4 "" + "/home/ljvm/texmf/tex/latex/graphics/trig.sty" 1454284088 3980 0a268fbfda01e381fa95821ab13b6aee "" + "/home/ljvm/texmf/tex/latex/oberdiek/epstopdf-base.sty" 1303254447 12029 04d7fdf76e0464c23b5aa3a727952d7c "" + "/home/ljvm/texmf/tex/latex/oberdiek/grfext.sty" 1335995445 7075 bd0c34fbf1ae8fd1debd2a554e41b2d5 "" + "/home/ljvm/texmf/tex/latex/oberdiek/kvoptions.sty" 1335995445 22417 c74ff4af6a1aa2b65d1924020edbbe11 "" + "/home/ljvm/texmf/tex/latex/preview/preview.sty" 1447630789 13687 0cb5888b46d12f19ed3b85a16d43470e "" + "/home/ljvm/texmf/tex/latex/preview/prtightpage.def" 1266794019 4841 763a1efd128d3821c07232f7b2638b7b "" + "/home/ljvm/texmf/tex/latex/standalone/standalone.cfg" 1437172902 902 f9a15737aea33182ec1f3542ca20dbfe "" + "/home/ljvm/texmf/tex/latex/standalone/standalone.cls" 1437172902 27291 b798d344bcba4430e7f7dc7561c517d5 "" + "/home/ljvm/texmf/tex/latex/tools/calc.sty" 1454284088 10214 d03d065f799d54f6b7e9b175f8d84279 "" + "/home/ljvm/texmf/tex/latex/xcolor/xcolor.sty" 1169481954 55224 a43bab84e0ac5e6efcaf9a98bde73a94 "" + "/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1272929888 3287 e6b82fe08f5336d4d5ebc73fb1152e87 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1136768653 1512 f21f83efb36853c0b70002322c1ab3ad "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi9.tfm" 1136768653 1524 d89e2d087a9828407a196f428428ef4a "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1136768653 1300 b62933e007d01cfd073f79b963c01526 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr9.tfm" 1136768653 1292 6b21b9c2c7bebb38aa2273f7ca0fb3af "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmss10.tfm" 1136768653 1316 b636689f1933f24d1294acdf6041daaa "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmss9.tfm" 1136768653 1320 49357c421c0d469f88b867dd0c3d10e8 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmssbx10.tfm" 1136768653 1272 e2d13f0df30bf3ad990bb9d028e37f34 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1136768653 1116 933a60c408fc0a863a92debe84b2d294 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy9.tfm" 1136768653 1116 25a7bf822c58caf309a702ef79f4afbb "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmtt10.tfm" 1136768653 768 1321e9409b4137d6fb428ac9dc956269 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmss10.pfb" 1248133631 24457 5cbb7bdf209d5d1ce9892a9b80a307cc "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmss9.pfb" 1248133631 24373 a91d375736817a75026663adcb2190c1 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmssbx10.pfb" 1248133631 28902 2f5c04fd2884d1878057baa5aad22765 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb" 1248133631 31099 c85edf1dd5b9e826d67c9c7293b6786c "" + "/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii" 1337017135 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty" 1284331290 1458 43ab4710dc82f3edeabecd0d099626b2 "" + "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty" 1303254447 7324 11d14f318d865f420e692d4e6c9c18c3 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex" 1288312291 1006 b103be0bfc8c1682ff1fa9760697a329 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex" 1439074469 43226 167a99346bfe2676e3efcdde2d81fe45 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex" 1439074469 19302 4f089dc590e71f7331e6d5b5ea85273b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex" 1439074469 6068 edae1e768a7d8d8f0f00e953d2b0153e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex" 1393459310 7041 a891ad72049e17c4e366c40ca37b0ccb "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex" 1393459310 4625 40c07e9f6f2f7c674704b3f2055560ce "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex" 1203877327 2631 7eefa6cdbefd8d4e2bad7262cf1094cd "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex" 1393459310 43477 81143b33d9ebafdeead07ede13372427 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex" 1393459310 17436 8d99d4113be311daf23deff86991ee7d "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex" 1439074469 20772 c57e34db4aa7b1da013169d04b743eac "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex" 1393459310 9641 711f0edc22c180a5caf168b6e8970057 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex" 1393459310 34516 658a71478d21df554bce9d9cd436203a "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex" 1288312291 3052 e5672c657232fd63b0a9853b0746297c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex" 1439074469 16669 4ec6e40088fc6de6334b443fe2dc59f0 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex" 1393459310 21541 4cd19f8ff7dd74d5aa7d803a6397af84 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex" 1439074469 19998 d77fef95c7369827753d17fd11be19c4 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex" 1393459310 8943 2e2495b057f8f0035b5568394d489963 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex" 1203727794 437 cf40f841f40822be6cb995f8b47112fd "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex" 1393459310 4611 b858a4e5bd5442802c91a13027dc25bb "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex" 1393459310 15934 b941bd3ae7b33179029513707d1f0ff6 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex" 1393459310 5484 4bb4a5cbbd05d6f17a261b59dbd014f1 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.markings.code.tex" 1203727794 782 2479083eef1ef47450770d40ad81f937 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex" 1288312291 1298 83d7449064b0f0f089f1898a244b6d16 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex" 1393459310 3725 36db4c06798413d051778705f3255eea "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex" 1288312291 4034 0a8cd33cf30d262ec971380666acb2d0 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex" 1203727794 3001 d54bab2f783098ed890fabbeb437b04f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex" 1203727794 527 a8d3e34fbab3dc317cf9b06aa5cdc2e4 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex" 1203727794 1158 d6338189706f4587fbc6175c0fb41f17 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex" 1203727794 607 40dc15d3efcf10f095866a94bd544bc1 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex" 1203727794 457 ffe9f8b9d108b5f729fd86c78c63589a "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex" 1203727794 447 e87a0add254801e837fa6c18f61f340f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex" 1203727794 1004 86af66805a9d0b62bd41ea0796a64d50 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex" 1203727794 590 7e11000a24bbee9ae2a4cd0e5d88e58c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex" 1288312291 11599 d694704a88e2f9007c996d3a6a4d629c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex" 1439074469 176652 1c2926908e2b356d454795c35385d580 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.markings.code.tex" 1393459310 5181 c2b736d254ec36204f8fffd5a45bbd41 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex" 1393459310 31927 7acd27f90dd95ce67ad32166cd0b95ec "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex" 1203727794 2647 defb4a59c2a1d36127a1ac6eebb4a5c1 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex" 1393459310 32969 dbcfd5a7de6a0f7255c333ef60287d59 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex" 1288312291 69900 cbd9fafb795a493fb2a3b73713994b78 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex" 1393459310 28333 0189c4cfb5044e700e6ba65a32295f01 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex" 1288312291 132566 291d42c3b23fdb5c47e51b36a5fea0c4 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex" 1393459310 37737 ea6cb0b4e615f6048f20ee7153b3cc78 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex" 1288312291 49891 e74f8181c57d9359c941b6bee48fccc2 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex" 1393459310 90791 0f3e73cae9286c96d9fcb2161cc223bc "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex" 1393459310 454 9e9e7c99f4da4f41698be21eaef4938e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex" 1393459310 13416 940ea6971d7a65dc440d3479939c66ae "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex" 1439074469 94097 62ac62cda46eb715560dc27f9ed6e8b1 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex" 1393459310 9375 5adc70f722abd29fc250d59e0694b548 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex" 1439074469 22069 7c21c42b15718ce922f36235be360490 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex" 1439074469 8210 a7be5b52ef3d2c087b7dc3d52898b67e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex" 1288312291 3534 c7f28fbac13616513e513efe93b8569b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex" 1393459310 3167 7c9394e79aac27db96a92f9b2792b858 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex" 1439074469 9289 261407875b9dbb0194691c3eb893610f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex" 1439074469 7078 946ddf4a7e57219b6afdbad98eb6731b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex" 1288312291 2688 139c6abc86761a6190c2f4bef5d752be "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex" 1439074469 92284 dcf023dbaa84e6c50e11c2f79fe8cfa6 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex" 1439074469 35430 046e15fbb65e74d8f0e7945f99741fdb "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex" 1393459310 7099 f44d505bae6c7c2b933cdd63441db4b9 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex" 1393459310 71902 658cc1e13f73daec4225b8fc1c27600b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex" 1393459310 20934 2328bd2e04520e1ab077ac4ee13b8935 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex" 1439074469 16203 83cbe1220e389eeee283a6168f9a567b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex" 1439074469 42906 d54376d96df1a2ae2d33fb722236d8e9 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg" 1288312291 978 15af626ebd3d4d790aac19170dac04f2 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def" 1393459310 5437 d91f93ed61ecdc57e119849b2d784a0b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def" 1439074469 13507 809d848d9262638e1b1705a68a73c566 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex" 1439074469 35113 2ccc50c1c9573e4bac9230d030f9c67c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex" 1203877327 1983 b5994ebbcee17f1ba3d29bb1bd696fcf "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex" 1393459310 7881 d459d6057e13d10ce7a227ae44b7295e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex" 1393459310 22211 d696ef78c12269178882d218b2cf191d "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex" 1393459310 36194 e194ef4e0b396b531a3891feb4b1cc22 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex" 1393459310 33377 af391d6ad1bfcbe2278e191f48e43ba8 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex" 1440888734 2536 a3b0529d815a2759ba157b56610a6377 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex" 1393459310 6833 114eda2cf1d348e0e7e477a1a4dc1941 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex" 1439074469 16501 ab0135765e27b6b8dae047831fe84818 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def" 1439074469 5544 294baac9629ba59f675b1f2027ad7136 "" + "/usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex" 1403829539 2725 fc34ef3ccb37ba15a640e8fca6190bca "" + "/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex" 1417732693 19231 26434a5656c684f5ffb1f26f98006baa "" + "/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex" 1403829539 7677 6f5ce7c1124cad7ec57d05b2562bd8fe "" + "/usr/share/texlive/texmf-dist/tex/latex/base/article.cls" 1454284088 20708 39fdf9e2fb65617012fa7382a351f485 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty" 1454284088 5159 a08c9bbd48fc492f15b22e458bef961f "" + "/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo" 1454284088 9179 4cd3c5f593e63512893b8ac0123f1bd7 "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg" 1254097189 802 7b8c8d72c24d795ed7720e4dfd29bff3 "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg" 1278958963 3563 d35e897cae3b8c6848f6677b73370b54 "" + "/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty" 1177890616 3878 6aa7c08ff2621006e0603349e40a30a8 "" + "/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def" 1306616590 55368 3c8a0d99822330f2dfabc0dfb09ce897 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf-blur/tikzlibraryshadows.blur.code.tex" 1335333685 7525 063a37c856ae2c38332d93e3d457a299 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty" 1439074469 1197 8a80cdde14696a9198f1793a55dcf332 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty" 1288312291 410 5bf12ea7330e5f12c445332a4fe9a263 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty" 1203877327 21115 facf03b7dbe5ea2f5f1dce1ac84b5d05 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty" 1203727794 1091 d9163d29def82ee90370c8a63667742c "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty" 1203877327 339 592cf35cba3d400082b8a9a5d0199d70 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty" 1393459310 306 0796eafca5e159e6ec2167a6d22d81b1 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty" 1393459310 443 0b2e781830192df35c0fd357cf13e26e "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty" 1393459310 348 8927fde343487e003b01a4c2ca34073b "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty" 1203727794 274 4cad6e665cc93ac2ac979039a94fa1e1 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty" 1203877327 325 2bcd023400636339210573e2b3ee298b "" + "/usr/share/texlive/texmf-dist/tex/latex/pgfopts/pgfopts.sty" 1405118212 5540 d5c60cf09c59da351aa4023ed084e4eb "" + "/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty" 1417732693 4962 9c1069474ff71dbc47d5006555e352d3 "" + "/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1503343927 31343 93828589fb0cea665e553ee5a17ad2d4 "" + "/usr/share/texmf/web2c/texmf.cnf" 1503343927 31343 93828589fb0cea665e553ee5a17ad2d4 "" + "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1528507587 718486 55e051f478d994e1e3e5b41625d996af "" + "optimization_loop.aux" 1528617882 8 a94a2480d3289e625eea47cd1b285758 "" + "optimization_loop.pdf" 1528617882 47217 3dc1b25bb3d586f2b98197f14580d0eb "pdflatex" + "optimization_loop.tex" 1528617876 3644 72cc6263136c7d13e98a24348e978a53 "" + "tikz-uml.sty" 1526185697 302703 ed2f9b5dd419a64f254ecbf6a6653c7f "" + (generated) + "optimization_loop.pdf" + "optimization_loop.log" + "optimization_loop.aux" diff --git a/docs/assets/optimization_loop.fls b/docs/assets/optimization_loop.fls new file mode 100644 index 00000000..6f8c18ec --- /dev/null +++ b/docs/assets/optimization_loop.fls @@ -0,0 +1,248 @@ +PWD /home/ljvm/Documents/Dev/pyswarms/docs/assets +INPUT /etc/texmf/web2c/texmf.cnf +INPUT /usr/share/texmf/web2c/texmf.cnf +INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf +INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt +INPUT optimization_loop.tex +OUTPUT optimization_loop.log +INPUT /home/ljvm/texmf/tex/latex/standalone/standalone.cls +INPUT /home/ljvm/texmf/tex/latex/standalone/standalone.cls +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ifpdf.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ifpdf.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ifpdf.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex +INPUT /dev/null +INPUT /home/ljvm/texmf/tex/latex/standalone/standalone.cfg +INPUT /home/ljvm/texmf/tex/latex/standalone/standalone.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /home/ljvm/texmf/tex/latex/preview/preview.sty +INPUT /home/ljvm/texmf/tex/latex/preview/preview.sty +INPUT /home/ljvm/texmf/tex/latex/preview/prtightpage.def +INPUT /home/ljvm/texmf/tex/latex/preview/prtightpage.def +INPUT ./optimization_loop.pdf +INPUT optimization_loop.aux +INPUT optimization_loop.aux +INPUT ./optimization_loop.pdf +INPUT /home/ljvm/texmf/tex/latex/xcolor/xcolor.sty +INPUT /home/ljvm/texmf/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def +INPUT /home/ljvm/texmf/tex/generic/oberdiek/infwarerr.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/infwarerr.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ltxcmds.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ltxcmds.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/dvipsnam.def +INPUT /home/ljvm/texmf/tex/latex/graphics/dvipsnam.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/graphicx.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/graphicx.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/graphics.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/graphics.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/trig.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +INPUT tikz-uml.sty +INPUT tikz-uml.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +INPUT /home/ljvm/texmf/tex/generic/xstring/xstring.sty +INPUT /home/ljvm/texmf/tex/generic/xstring/xstring.sty +INPUT /home/ljvm/texmf/tex/generic/xstring/xstring.tex +INPUT /home/ljvm/texmf/tex/latex/tools/calc.sty +INPUT /home/ljvm/texmf/tex/latex/tools/calc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgfopts/pgfopts.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgfopts/pgfopts.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex +OUTPUT optimization_loop.pdf +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.markings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.markings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.markings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.markings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf-blur/tikzlibraryshadows.blur.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf-blur/tikzlibraryshadows.blur.code.tex +INPUT optimization_loop.aux +INPUT optimization_loop.aux +OUTPUT optimization_loop.aux +INPUT /usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmss10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii +INPUT /home/ljvm/texmf/tex/generic/oberdiek/pdftexcmds.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/pdftexcmds.sty +INPUT /home/ljvm/texmf/tex/latex/oberdiek/epstopdf-base.sty +INPUT /home/ljvm/texmf/tex/latex/oberdiek/epstopdf-base.sty +INPUT /home/ljvm/texmf/tex/latex/oberdiek/grfext.sty +INPUT /home/ljvm/texmf/tex/latex/oberdiek/grfext.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/kvdefinekeys.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/kvdefinekeys.sty +INPUT /home/ljvm/texmf/tex/latex/oberdiek/kvoptions.sty +INPUT /home/ljvm/texmf/tex/latex/oberdiek/kvoptions.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/kvsetkeys.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/kvsetkeys.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/etexcmds.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/etexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmtt10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmss9.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr9.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi9.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy9.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmssbx10.tfm +INPUT /home/ljvm/.texmf-var/fonts/map/pdftex/updmap/pdftex.map +INPUT optimization_loop.aux +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmss10.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmss9.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmssbx10.pfb +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb diff --git a/docs/assets/pyswarms_api.aux b/docs/assets/pyswarms_api.aux new file mode 100644 index 00000000..7c14129a --- /dev/null +++ b/docs/assets/pyswarms_api.aux @@ -0,0 +1,2 @@ +\relax +\gdef \sa@multi@numpages {0} diff --git a/docs/assets/pyswarms_api.fdb_latexmk b/docs/assets/pyswarms_api.fdb_latexmk new file mode 100644 index 00000000..447b804c --- /dev/null +++ b/docs/assets/pyswarms_api.fdb_latexmk @@ -0,0 +1,128 @@ +# Fdb version 3 +["pdflatex"] 1528611763 "pyswarms_api.tex" "pyswarms_api.pdf" "pyswarms_api" 1528611763 + "/dev/null" 1528595442 0 d41d8cd98f00b204e9800998ecf8427e "" + "/etc/texmf/web2c/texmf.cnf" 1515379388 475 c0e671620eb5563b2130f56340a5fde8 "" + "/home/ljvm/texmf/tex/generic/oberdiek/ifpdf.sty" 1303254447 7140 ece2cc23d9f20e1f53975ac167f42d3e "" + "/home/ljvm/texmf/tex/generic/oberdiek/infwarerr.sty" 1335995445 8253 3bdedc8409aa5d290a2339be6f09af03 "" + "/home/ljvm/texmf/tex/generic/oberdiek/ltxcmds.sty" 1335995445 18425 775b341047ce304520cc7c11ca41392e "" + "/home/ljvm/texmf/tex/generic/xstring/xstring.sty" 1269905706 144 0ca8d67b000b795a4d9ec000e0fd09c7 "" + "/home/ljvm/texmf/tex/generic/xstring/xstring.tex" 1381789620 54373 fd4487ae3e45d4074bc89aea1d2b6807 "" + "/home/ljvm/texmf/tex/latex/graphics/dvipsnam.def" 1454284088 4945 3b3a8face751255856839a3489e83341 "" + "/home/ljvm/texmf/tex/latex/graphics/graphics.sty" 1454284088 14337 b66dff1d80f6c21e70858a2b3c2d327d "" + "/home/ljvm/texmf/tex/latex/graphics/graphicx.sty" 1428932888 8125 557ab9f1bfa80d369fb45a914aa8a3b4 "" + "/home/ljvm/texmf/tex/latex/graphics/trig.sty" 1454284088 3980 0a268fbfda01e381fa95821ab13b6aee "" + "/home/ljvm/texmf/tex/latex/preview/preview.sty" 1447630789 13687 0cb5888b46d12f19ed3b85a16d43470e "" + "/home/ljvm/texmf/tex/latex/preview/prtightpage.def" 1266794019 4841 763a1efd128d3821c07232f7b2638b7b "" + "/home/ljvm/texmf/tex/latex/standalone/standalone.cfg" 1437172902 902 f9a15737aea33182ec1f3542ca20dbfe "" + "/home/ljvm/texmf/tex/latex/standalone/standalone.cls" 1437172902 27291 b798d344bcba4430e7f7dc7561c517d5 "" + "/home/ljvm/texmf/tex/latex/tools/calc.sty" 1454284088 10214 d03d065f799d54f6b7e9b175f8d84279 "" + "/home/ljvm/texmf/tex/latex/xcolor/xcolor.sty" 1169481954 55224 a43bab84e0ac5e6efcaf9a98bde73a94 "" + "/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty" 1284331290 1458 43ab4710dc82f3edeabecd0d099626b2 "" + "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty" 1303254447 7324 11d14f318d865f420e692d4e6c9c18c3 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex" 1288312291 1006 b103be0bfc8c1682ff1fa9760697a329 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex" 1439074469 43226 167a99346bfe2676e3efcdde2d81fe45 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex" 1439074469 19302 4f089dc590e71f7331e6d5b5ea85273b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex" 1439074469 6068 edae1e768a7d8d8f0f00e953d2b0153e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex" 1393459310 7041 a891ad72049e17c4e366c40ca37b0ccb "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex" 1393459310 4625 40c07e9f6f2f7c674704b3f2055560ce "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex" 1203877327 2631 7eefa6cdbefd8d4e2bad7262cf1094cd "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex" 1393459310 43477 81143b33d9ebafdeead07ede13372427 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex" 1393459310 17436 8d99d4113be311daf23deff86991ee7d "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex" 1439074469 20772 c57e34db4aa7b1da013169d04b743eac "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex" 1393459310 9641 711f0edc22c180a5caf168b6e8970057 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex" 1393459310 34516 658a71478d21df554bce9d9cd436203a "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex" 1288312291 3052 e5672c657232fd63b0a9853b0746297c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex" 1439074469 16669 4ec6e40088fc6de6334b443fe2dc59f0 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex" 1393459310 21541 4cd19f8ff7dd74d5aa7d803a6397af84 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex" 1439074469 19998 d77fef95c7369827753d17fd11be19c4 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex" 1393459310 8943 2e2495b057f8f0035b5568394d489963 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex" 1203727794 437 cf40f841f40822be6cb995f8b47112fd "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex" 1393459310 4611 b858a4e5bd5442802c91a13027dc25bb "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex" 1393459310 5484 4bb4a5cbbd05d6f17a261b59dbd014f1 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.markings.code.tex" 1203727794 782 2479083eef1ef47450770d40ad81f937 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex" 1288312291 1298 83d7449064b0f0f089f1898a244b6d16 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex" 1393459310 3725 36db4c06798413d051778705f3255eea "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex" 1203727794 3001 d54bab2f783098ed890fabbeb437b04f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex" 1203727794 527 a8d3e34fbab3dc317cf9b06aa5cdc2e4 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex" 1203727794 1158 d6338189706f4587fbc6175c0fb41f17 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex" 1203727794 607 40dc15d3efcf10f095866a94bd544bc1 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex" 1203727794 457 ffe9f8b9d108b5f729fd86c78c63589a "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex" 1203727794 447 e87a0add254801e837fa6c18f61f340f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex" 1203727794 1004 86af66805a9d0b62bd41ea0796a64d50 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex" 1203727794 590 7e11000a24bbee9ae2a4cd0e5d88e58c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex" 1288312291 11599 d694704a88e2f9007c996d3a6a4d629c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex" 1439074469 176652 1c2926908e2b356d454795c35385d580 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.markings.code.tex" 1393459310 5181 c2b736d254ec36204f8fffd5a45bbd41 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex" 1393459310 31927 7acd27f90dd95ce67ad32166cd0b95ec "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex" 1203727794 2647 defb4a59c2a1d36127a1ac6eebb4a5c1 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex" 1393459310 32969 dbcfd5a7de6a0f7255c333ef60287d59 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex" 1288312291 69900 cbd9fafb795a493fb2a3b73713994b78 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex" 1393459310 28333 0189c4cfb5044e700e6ba65a32295f01 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex" 1288312291 132566 291d42c3b23fdb5c47e51b36a5fea0c4 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex" 1393459310 37737 ea6cb0b4e615f6048f20ee7153b3cc78 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex" 1288312291 49891 e74f8181c57d9359c941b6bee48fccc2 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex" 1393459310 90791 0f3e73cae9286c96d9fcb2161cc223bc "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex" 1393459310 454 9e9e7c99f4da4f41698be21eaef4938e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex" 1393459310 13416 940ea6971d7a65dc440d3479939c66ae "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex" 1439074469 94097 62ac62cda46eb715560dc27f9ed6e8b1 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex" 1393459310 9375 5adc70f722abd29fc250d59e0694b548 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex" 1439074469 22069 7c21c42b15718ce922f36235be360490 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex" 1439074469 8210 a7be5b52ef3d2c087b7dc3d52898b67e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex" 1288312291 3534 c7f28fbac13616513e513efe93b8569b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex" 1393459310 3167 7c9394e79aac27db96a92f9b2792b858 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex" 1439074469 9289 261407875b9dbb0194691c3eb893610f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex" 1439074469 7078 946ddf4a7e57219b6afdbad98eb6731b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex" 1288312291 2688 139c6abc86761a6190c2f4bef5d752be "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex" 1439074469 92284 dcf023dbaa84e6c50e11c2f79fe8cfa6 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex" 1439074469 35430 046e15fbb65e74d8f0e7945f99741fdb "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex" 1393459310 7099 f44d505bae6c7c2b933cdd63441db4b9 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex" 1393459310 71902 658cc1e13f73daec4225b8fc1c27600b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex" 1393459310 20934 2328bd2e04520e1ab077ac4ee13b8935 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex" 1439074469 16203 83cbe1220e389eeee283a6168f9a567b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex" 1439074469 42906 d54376d96df1a2ae2d33fb722236d8e9 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg" 1288312291 978 15af626ebd3d4d790aac19170dac04f2 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def" 1393459310 5437 d91f93ed61ecdc57e119849b2d784a0b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def" 1439074469 13507 809d848d9262638e1b1705a68a73c566 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex" 1439074469 35113 2ccc50c1c9573e4bac9230d030f9c67c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex" 1203877327 1983 b5994ebbcee17f1ba3d29bb1bd696fcf "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex" 1393459310 7881 d459d6057e13d10ce7a227ae44b7295e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex" 1393459310 22211 d696ef78c12269178882d218b2cf191d "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex" 1393459310 36194 e194ef4e0b396b531a3891feb4b1cc22 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex" 1393459310 33377 af391d6ad1bfcbe2278e191f48e43ba8 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex" 1440888734 2536 a3b0529d815a2759ba157b56610a6377 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex" 1393459310 6833 114eda2cf1d348e0e7e477a1a4dc1941 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex" 1439074469 16501 ab0135765e27b6b8dae047831fe84818 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def" 1439074469 5544 294baac9629ba59f675b1f2027ad7136 "" + "/usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex" 1403829539 2725 fc34ef3ccb37ba15a640e8fca6190bca "" + "/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex" 1417732693 19231 26434a5656c684f5ffb1f26f98006baa "" + "/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex" 1403829539 7677 6f5ce7c1124cad7ec57d05b2562bd8fe "" + "/usr/share/texlive/texmf-dist/tex/latex/base/article.cls" 1454284088 20708 39fdf9e2fb65617012fa7382a351f485 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty" 1454284088 5159 a08c9bbd48fc492f15b22e458bef961f "" + "/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo" 1454284088 9179 4cd3c5f593e63512893b8ac0123f1bd7 "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg" 1254097189 802 7b8c8d72c24d795ed7720e4dfd29bff3 "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg" 1278958963 3563 d35e897cae3b8c6848f6677b73370b54 "" + "/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty" 1177890616 3878 6aa7c08ff2621006e0603349e40a30a8 "" + "/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def" 1306616590 55368 3c8a0d99822330f2dfabc0dfb09ce897 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty" 1439074469 1197 8a80cdde14696a9198f1793a55dcf332 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty" 1288312291 410 5bf12ea7330e5f12c445332a4fe9a263 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty" 1203877327 21115 facf03b7dbe5ea2f5f1dce1ac84b5d05 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty" 1203727794 1091 d9163d29def82ee90370c8a63667742c "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty" 1203877327 339 592cf35cba3d400082b8a9a5d0199d70 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty" 1393459310 306 0796eafca5e159e6ec2167a6d22d81b1 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty" 1393459310 443 0b2e781830192df35c0fd357cf13e26e "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty" 1393459310 348 8927fde343487e003b01a4c2ca34073b "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty" 1203727794 274 4cad6e665cc93ac2ac979039a94fa1e1 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty" 1203877327 325 2bcd023400636339210573e2b3ee298b "" + "/usr/share/texlive/texmf-dist/tex/latex/pgfopts/pgfopts.sty" 1405118212 5540 d5c60cf09c59da351aa4023ed084e4eb "" + "/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty" 1417732693 4962 9c1069474ff71dbc47d5006555e352d3 "" + "/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1503343927 31343 93828589fb0cea665e553ee5a17ad2d4 "" + "/usr/share/texmf/web2c/texmf.cnf" 1503343927 31343 93828589fb0cea665e553ee5a17ad2d4 "" + "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1528507587 718486 55e051f478d994e1e3e5b41625d996af "" + "pyswarms_api.aux" 1528611763 8 a94a2480d3289e625eea47cd1b285758 "" + "pyswarms_api.pdf" 1528611763 28449 bf8aa2f620d27c4141ae07f6a16f679b "pdflatex" + "pyswarms_api.tex" 1528611725 3224 d99518edfd37f8be7c602d2ec9643998 "" + "tikz-uml.sty" 1526185697 302703 ed2f9b5dd419a64f254ecbf6a6653c7f "" + (generated) + "pyswarms_api.log" + "pyswarms_api.pdf" + "pyswarms_api.aux" diff --git a/docs/assets/pyswarms_api.fls b/docs/assets/pyswarms_api.fls new file mode 100644 index 00000000..8b96c082 --- /dev/null +++ b/docs/assets/pyswarms_api.fls @@ -0,0 +1,204 @@ +PWD /home/ljvm/Documents/Dev/pyswarms/docs/assets +INPUT /etc/texmf/web2c/texmf.cnf +INPUT /usr/share/texmf/web2c/texmf.cnf +INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf +INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt +INPUT pyswarms_api.tex +OUTPUT pyswarms_api.log +INPUT /home/ljvm/texmf/tex/latex/standalone/standalone.cls +INPUT /home/ljvm/texmf/tex/latex/standalone/standalone.cls +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ifpdf.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ifpdf.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ifpdf.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex +INPUT /dev/null +INPUT /home/ljvm/texmf/tex/latex/standalone/standalone.cfg +INPUT /home/ljvm/texmf/tex/latex/standalone/standalone.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +INPUT /home/ljvm/texmf/tex/latex/preview/preview.sty +INPUT /home/ljvm/texmf/tex/latex/preview/preview.sty +INPUT /home/ljvm/texmf/tex/latex/preview/prtightpage.def +INPUT /home/ljvm/texmf/tex/latex/preview/prtightpage.def +INPUT ./pyswarms_api.pdf +INPUT pyswarms_api.aux +INPUT pyswarms_api.aux +INPUT ./pyswarms_api.pdf +INPUT /home/ljvm/texmf/tex/latex/xcolor/xcolor.sty +INPUT /home/ljvm/texmf/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def +INPUT /home/ljvm/texmf/tex/generic/oberdiek/infwarerr.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/infwarerr.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ltxcmds.sty +INPUT /home/ljvm/texmf/tex/generic/oberdiek/ltxcmds.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/dvipsnam.def +INPUT /home/ljvm/texmf/tex/latex/graphics/dvipsnam.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/graphicx.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/graphicx.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/graphics.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/graphics.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/trig.sty +INPUT /home/ljvm/texmf/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +INPUT tikz-uml.sty +INPUT tikz-uml.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +INPUT /home/ljvm/texmf/tex/generic/xstring/xstring.sty +INPUT /home/ljvm/texmf/tex/generic/xstring/xstring.sty +INPUT /home/ljvm/texmf/tex/generic/xstring/xstring.tex +INPUT /home/ljvm/texmf/tex/latex/tools/calc.sty +INPUT /home/ljvm/texmf/tex/latex/tools/calc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgfopts/pgfopts.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgfopts/pgfopts.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex +OUTPUT pyswarms_api.pdf +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.markings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.markings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.markings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.markings.code.tex diff --git a/pyswarms/base/base_discrete.py b/pyswarms/base/base_discrete.py index 31697d02..fe0853f0 100644 --- a/pyswarms/base/base_discrete.py +++ b/pyswarms/base/base_discrete.py @@ -113,7 +113,7 @@ def __init__(self, n_particles, dimensions, binary, options, initial positions. When passed with a :code:`False` value, random integers from 0 to :code:`dimensions` are generated. options : dict with keys :code:`{'c1', 'c2', 'w'}` - a dictionary containing the parameters for the specific + a dictionary containing the parameters for the specific optimization technique * c1 : float cognitive parameter @@ -168,31 +168,6 @@ def _populate_history(self, hist): self.pos_history.append(hist.position) self.velocity_history.append(hist.velocity) - @property - def get_cost_history(self): - """Get cost history""" - return np.array(self.cost_history) - - @property - def get_mean_pbest_history(self): - """Get mean personal best history""" - return np.array(self.mean_pbest_history) - - @property - def get_mean_neighbor_history(self): - """Get mean neighborhood cost history""" - return np.array(self.mean_neighbor_history) - - @property - def get_pos_history(self): - """Get position history""" - return np.array(self.pos_history) - - @property - def get_velocity_history(self): - """Get velocity history""" - return np.array(self.velocity_history) - def optimize(self, objective_func, iters, print_step=1, verbose=1): """Optimizes the swarm for a number of iterations. @@ -267,25 +242,10 @@ def reset(self): self.pos_history = [] self.velocity_history = [] - # Generate initial position - self.pos = np.random.random_sample(size=self.swarm_size).\ - argsort(axis=1) - if self.binary: - self.pos = np.random.randint(2, size=self.swarm_size) - - # Initialize velocity vectors - if self.velocity_clamp is not None: - min_velocity, max_velocity = self.velocity_clamp[0],\ - self.velocity_clamp[1] - self.velocity = ((max_velocity - min_velocity) - * np.random.random_sample(size=self.swarm_size) - + min_velocity) - else: - self.velocity = np.random.random_sample(size=self.swarm_size) - - # Initialize the best cost of the swarm - self.best_cost = np.inf - self.best_pos = None - - # Initialize the personal best of each particle - self.personal_best_pos = self.pos + # Initialize the swarm + self.swarm = create_swarm(n_particles=self.n_particles, + dimensions=self.dimensions, + discrete=True, + init_pos=self.init_pos, + binary=self.binary, + clamp=self.velocity_clamp, options=self.options) diff --git a/pyswarms/base/base_single.py b/pyswarms/base/base_single.py index 16def2e1..c2535457 100644 --- a/pyswarms/base/base_single.py +++ b/pyswarms/base/base_single.py @@ -193,31 +193,6 @@ def _populate_history(self, hist): self.pos_history.append(hist.position) self.velocity_history.append(hist.velocity) - @property - def get_cost_history(self): - """Get cost history""" - return np.array(self.cost_history) - - @property - def get_mean_pbest_history(self): - """Get mean personal best history""" - return np.array(self.mean_pbest_history) - - @property - def get_mean_neighbor_history(self): - """Get mean neighborhood cost history""" - return np.array(self.mean_neighbor_history) - - @property - def get_pos_history(self): - """Get position history""" - return np.array(self.pos_history) - - @property - def get_velocity_history(self): - """Get velocity history""" - return np.array(self.velocity_history) - def optimize(self, objective_func, iters, print_step=1, verbose=1): """Optimizes the swarm for a number of iterations. From 5343a1c38166cc60a5b2925b702e37822b3d71c0 Mon Sep 17 00:00:00 2001 From: ljvmiranda921 Date: Tue, 12 Jun 2018 22:27:14 +0900 Subject: [PATCH 03/12] Update test on optimizers In this commit, we updated the tests on the optimizers to reflect the changes on using @property. It's much better now because our tests are parameterized than having multiple asserts. Signed-off-by: Lester James V. Miranda --- tests/optimizers/test_binary.py | 16 +++++++++------- tests/optimizers/test_global_best.py | 17 ++++++++++------- tests/optimizers/test_local_best.py | 17 ++++++++++------- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/tests/optimizers/test_binary.py b/tests/optimizers/test_binary.py index 618a3b42..243986e7 100644 --- a/tests/optimizers/test_binary.py +++ b/tests/optimizers/test_binary.py @@ -7,7 +7,6 @@ # Import from package from pyswarms.discrete import BinaryPSO -from pyswarms.utils.functions.single_obj import sphere_func @pytest.mark.parametrize('options', [ {'c2':0.7, 'w':0.5, 'k': 2, 'p': 2}, @@ -59,10 +58,13 @@ def test_reset_default_values(binary_reset): assert binary_reset.best_cost == np.inf assert binary_reset.best_pos == None -def test_training_history_shape(binary_history): +@pytest.mark.parametrize('history, expected_shape', [ + ('cost_history', (1000,)), + ('mean_pbest_history', (1000,)), + ('mean_neighbor_history',(1000,)), + ('pos_history',(1000, 10, 2)), + ('velocity_history',(1000, 10, 2))]) +def test_training_history_shape(binary_history, history, expected_shape): """Test if training histories are of expected shape""" - assert binary_history.get_cost_history.shape == (1000,) - assert binary_history.get_mean_pbest_history.shape == (1000,) - assert binary_history.get_mean_neighbor_history.shape == (1000,) - assert binary_history.get_pos_history.shape == (1000, 10, 2) - assert binary_history.get_velocity_history.shape == (1000, 10, 2) + pso = vars(binary_history) + assert np.array(pso[history]).shape == expected_shape diff --git a/tests/optimizers/test_global_best.py b/tests/optimizers/test_global_best.py index 42611ea4..aa6cea44 100644 --- a/tests/optimizers/test_global_best.py +++ b/tests/optimizers/test_global_best.py @@ -74,16 +74,19 @@ def test_reset_default_values(gbest_reset): assert gbest_reset.swarm.best_cost == np.inf assert set(gbest_reset.swarm.best_pos) == set(np.array([])) -def test_training_history_shape(gbest_history): +@pytest.mark.parametrize('history, expected_shape', [ + ('cost_history', (1000,)), + ('mean_pbest_history', (1000,)), + ('mean_neighbor_history',(1000,)), + ('pos_history',(1000, 10, 2)), + ('velocity_history',(1000, 10, 2))]) +def test_training_history_shape(gbest_history, history, expected_shape): """Test if training histories are of expected shape""" - assert gbest_history.get_cost_history.shape == (1000,) - assert gbest_history.get_mean_pbest_history.shape == (1000,) - assert gbest_history.get_mean_neighbor_history.shape == (1000,) - assert gbest_history.get_pos_history.shape == (1000, 10, 2) - assert gbest_history.get_velocity_history.shape == (1000, 10, 2) + pso = vars(gbest_history) + assert np.array(pso[history]).shape == expected_shape def test_ftol_effect(options): """Test if setting the ftol breaks the optimization process accodingly""" pso = GlobalBestPSO(10, 2, options=options, ftol=1e-1) pso.optimize(sphere_func, 2000, verbose=0) - assert pso.get_cost_history.shape != (2000,) \ No newline at end of file + assert np.array(pso.cost_history).shape != (2000,) diff --git a/tests/optimizers/test_local_best.py b/tests/optimizers/test_local_best.py index ab745924..14544ec7 100644 --- a/tests/optimizers/test_local_best.py +++ b/tests/optimizers/test_local_best.py @@ -87,16 +87,19 @@ def test_reset_default_values(lbest_reset): assert lbest_reset.swarm.best_cost == np.inf assert set(lbest_reset.swarm.best_pos) == set(np.array([])) -def test_training_history_shape(lbest_history): +@pytest.mark.parametrize('history, expected_shape', [ + ('cost_history', (1000,)), + ('mean_pbest_history', (1000,)), + ('mean_neighbor_history',(1000,)), + ('pos_history',(1000, 10, 2)), + ('velocity_history',(1000, 10, 2))]) +def test_training_history_shape(lbest_history, history, expected_shape): """Test if training histories are of expected shape""" - assert lbest_history.get_cost_history.shape == (1000,) - assert lbest_history.get_mean_pbest_history.shape == (1000,) - assert lbest_history.get_mean_neighbor_history.shape == (1000,) - assert lbest_history.get_pos_history.shape == (1000, 10, 2) - assert lbest_history.get_velocity_history.shape == (1000, 10, 2) + pso = vars(lbest_history) + assert np.array(pso[history]).shape == expected_shape def test_ftol_effect(options): """Test if setting the ftol breaks the optimization process accodingly""" pso = LocalBestPSO(10, 2, options=options, ftol=1e-1) pso.optimize(sphere_func, 2000, verbose=0) - assert pso.get_cost_history.shape != (2000,) + assert np.array(pso.cost_history).shape != (2000,) From b128fa2f3ca689e457e6035a72effb1d4a7f3289 Mon Sep 17 00:00:00 2001 From: ljvmiranda921 Date: Tue, 12 Jun 2018 22:28:16 +0900 Subject: [PATCH 04/12] Mark environment tests as expected failures This coincides with the decision to deprecate the PlotEnvironment. The whole environments module is now unsupported, and users will now be required to use the plotters module instead. Signed-off-by: Lester James V. Miranda --- tests/utils/environments/conftest.py | 9 ++++----- tests/utils/environments/test_plot_environment.py | 12 +++++++----- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/tests/utils/environments/conftest.py b/tests/utils/environments/conftest.py index 55eb42f4..022d5674 100644 --- a/tests/utils/environments/conftest.py +++ b/tests/utils/environments/conftest.py @@ -6,7 +6,6 @@ # Import modules import os import pytest -import numpy as np from mock import Mock import matplotlib as mpl @@ -23,9 +22,9 @@ def mock_pso(): """Returns a function that mocks a PSO class with missing attributes""" def _mock_pso(index): class_methods = [ - 'get_cost_history', - 'get_pos_history', - 'get_velocity_history', + 'cost_history', + 'pos_history', + 'velocity_history', 'optimize', 'reset' ] @@ -37,4 +36,4 @@ def _mock_pso(index): def plot_environment(): """Returns a PlotEnvironment instance""" optimizer = GlobalBestPSO(10, 3, options={'c1': 0.5, 'c2': 0.3, 'w': 0.9}) - return PlotEnvironment(optimizer, sphere_func, 1000) \ No newline at end of file + return PlotEnvironment(optimizer, sphere_func, 1000) diff --git a/tests/utils/environments/test_plot_environment.py b/tests/utils/environments/test_plot_environment.py index 1318ab92..aeaaec1e 100644 --- a/tests/utils/environments/test_plot_environment.py +++ b/tests/utils/environments/test_plot_environment.py @@ -4,7 +4,6 @@ # Import modules import os import pytest -import numpy as np import matplotlib as mpl if os.environ.get('DISPLAY','') == '': @@ -18,9 +17,9 @@ from pyswarms.utils.functions.single_obj import sphere_func class_methods = [ - 'get_cost_history', - 'get_pos_history', - 'get_velocity_history', + 'cost_history', + 'pos_history', + 'velocity_history', 'optimize', 'reset' ] @@ -33,14 +32,17 @@ def test_getters_pso(mock_pso, attributes): m = mock_pso(idx) PlotEnvironment(m, sphere_func, 100) +@pytest.mark.xfail def test_plot_cost_return_type(plot_environment): """Tests if plot_cost() returns a SubplotBase instance""" assert isinstance(plot_environment.plot_cost(),SubplotBase) +@pytest.mark.xfail def test_plot2D_return_type(plot_environment): """Test if plot_particles2D() returns a FuncAnimation instance""" assert isinstance(plot_environment.plot_particles2D(), FuncAnimation) +@pytest.mark.xfail def test_plot3D_return_type(plot_environment): """Test if plot_particles3D() returns a FuncAnimation instance""" - assert isinstance(plot_environment.plot_particles3D(), FuncAnimation) \ No newline at end of file + assert isinstance(plot_environment.plot_particles3D(), FuncAnimation) From 78aaa124ed25a8600683c9e2f0bde8a610513674 Mon Sep 17 00:00:00 2001 From: ljvmiranda921 Date: Tue, 12 Jun 2018 21:59:14 +0900 Subject: [PATCH 05/12] Add plotters.py module Reference: #130 This commit adds a plotters.py module to replace the environments module. We hope that we can actually decouple the optimization and visualization part, without having the environment to do another rollout of your PSO. Signed-off-by: Lester James V. Miranda --- pyswarms/utils/plotters/__init__.py | 8 + pyswarms/utils/plotters/plotters.py | 373 ++++++++++++++++++++++++++++ 2 files changed, 381 insertions(+) create mode 100644 pyswarms/utils/plotters/__init__.py create mode 100644 pyswarms/utils/plotters/plotters.py diff --git a/pyswarms/utils/plotters/__init__.py b/pyswarms/utils/plotters/__init__.py new file mode 100644 index 00000000..2ad916e9 --- /dev/null +++ b/pyswarms/utils/plotters/__init__.py @@ -0,0 +1,8 @@ +""" +The mod:`pyswarms.utils.plotters` module implements various +visualization capabilities to interact with your swarm. Here, +ou can plot cost history and animate your swarm in both 2D or +3D spaces. +""" + +from .plotters import * \ No newline at end of file diff --git a/pyswarms/utils/plotters/plotters.py b/pyswarms/utils/plotters/plotters.py new file mode 100644 index 00000000..184c085b --- /dev/null +++ b/pyswarms/utils/plotters/plotters.py @@ -0,0 +1,373 @@ +# -*- coding: utf-8 -*- + +r""" +Plotting tool for Optimizer Analysis + +This module is built on top of :code:`matplotlib` to render quick and easy +plots for your optimizer. It can plot the best cost for each iteration, and +show animations of the particles in 2-D and 3-D space. Furthermore, because +it has :code:`matplotlib` running under the hood, the plots are easily +customizable. + +For example, if we want to plot the cost, simply run the optimizer, get the +cost history from the optimizer instance, and pass it to the +:code:`plot_cost_history()` method + +.. code-block:: python + + import pyswarms as ps + from pyswarms.utils.functions.single_obj import sphere_func + from pyswarms.utils.plotters import plot_cost_history + + # Set up optimizer + options = {'c1':0.5, 'c2':0.3, 'w':0.9} + optimizer = ps.single.GlobalBestPSO(n_particles=10, dimensions=2, + options=options) + + # Obtain cost history from optimizer instance + cost_history = optimizer.cost_history + + # Plot! + plot_cost_history(cost_history) + plt.show() + +In case you want to plot the particle movement, it is important that either +one of the :code:`matplotlib` animation :code:`Writers` is installed. These +doesn't come out of the box for :code:`pyswarms`, and must be installed +separately. For example, in a Linux or Windows distribution, you can install +:code:`ffmpeg` as + + >>> conda install -c conda-forge ffmpeg + +Now, if you want to plot your particles in a 2-D environment, simply pass +the position history of your swarm (obtainable from swarm instance): + + +.. code-block:: python + + import pyswarms as ps + from pyswarms.utils.functions.single_obj import sphere_func + from pyswarms.utils.plotters import plot_cost_history + + # Set up optimizer + options = {'c1':0.5, 'c2':0.3, 'w':0.9} + optimizer = ps.single.GlobalBestPSO(n_particles=10, dimensions=2, + options=options) + + # Obtain pos history from optimizer instance + pos_history = optimizer.pos_history + + # Plot! + plot_trajectory2D(pos_history) + +You can also supply various arguments in this method: the indices of the +specific dimensions to be used, the limits of the axes, and the interval/ +speed of animation. +""" + +# Import modules +import logging +from collections import namedtuple + +import matplotlib.pyplot as plt +import numpy as np +from matplotlib import (animation, cm) +from mpl_toolkits.mplot3d import Axes3D + +# Import from package +from .formatters import (Designer, Animator, Mesher) + +# Initialize logger +logger = logging.getLogger(__name__) + +def plot_cost_history(cost_history, ax=None, title='Cost History', + designer=None, **kwargs): + """Creates a simple line plot with the cost in the y-axis and + the iteration at the x-axis + + Parameters + ---------- + cost_history : list or numpy.ndarray + Cost history of shape :code:`(iters, )` or length :code:`iters` where + each element contains the cost for the given iteration. + ax : :class:`matplotlib.axes.Axes` (default is :code:`None`) + The axes where the plot is to be drawn. If :code:`None` is + passed, then the plot will be drawn to a new set of axes. + title : str (default is :code:`'Cost History'`) + The title of the plotted graph. + designer : pyswarms.utils.formatters.Designer (default is :code:`None`) + Designer class for custom attributes + **kwargs : dict + Keyword arguments that are passed as a keyword argument to + :class:`matplotlib.axes.Axes` + + Returns + ------- + :class:`matplotlib.axes._subplots.AxesSubplot` + The axes on which the plot was drawn. + """ + try: + # Infer number of iterations based on the length + # of the passed array + iters = len(cost_history) + + # If no Designer class supplied, use defaults + if designer is None: + designer = Designer() + + # If no ax supplied, create new instance + if ax is None: + _, ax = plt.subplots(1,1, figsize=designer.figsize) + + # Plot with iters in x-axis and the cost in y-axis + ax.plot(np.arange(iters), cost_history, 'k', lw=2, label=designer.label) + + # Customize plot depending on parameters + ax.set_title(title, fontsize=designer.title_fontsize) + ax.legend(fontsize=designer.text_fontsize) + ax.set_xlabel('Iterations', fontsize=designer.text_fontsize) + ax.set_ylabel('Cost', fontsize=designer.text_fontsize) + ax.tick_params(labelsize=designer.text_fontsize) + except TypeError: + raise + else: + return ax + +def plot_contour(pos_history, canvas=None, title='Trajectory', mark=None, + designer=None, mesher=None, animator=None, **kwargs): + """Draws a 2D contour map for particle trajectories + + Here, the space is represented as flat plane. The contours indicate the + elevation with respect to the objective function. This works best with + 2-dimensional swarms with their fitness in z-space. + + Parameters + ---------- + pos_history : numpy.ndarray or list + Position history of the swarm with shape + :code:`(iteration, n_particles, dimensions)` + canvas : tuple of :class:`matplotlib.figure.Figure` and :class:`matplotlib.axes.Axes` (default is :code:`None`) + The (figure, axis) where all the events will be draw. If :code:`None` is + supplied, then plot will be drawn to a fresh set of canvas. + title : str (default is :code:`'Trajectory'`) + The title of the plotted graph. + mark : tuple (default is :code:`None`) + Marks a particular point with a red crossmark. Useful for marking + the optima. + designer : pyswarms.utils.formatters.Designer (default is :code:`None`) + Designer class for custom attributes + mesher : pyswarms.utils.formatters.Mesher (default is :code:`None`) + Mesher class for mesh plots + animator : pyswarms.utils.formatters.Animator (default is :code:`None`) + Animator class for custom animation + **kwargs : dict + Keyword arguments that are passed as a keyword argument to + :class:`matplotlib.axes.Axes` plotting function + + Returns + ------- + :class:`matplotlib.animation.FuncAnimation` + The drawn animation that can be saved to mp4 or other + third-party tools + """ + + try: + # If no Designer class supplied, use defaults + if designer is None: + designer = Designer(limits=[(-1,1), (-1,1)], label=['x-axis', 'y-axis']) + + # If no Animator class supplied, use defaults + if animator is None: + animator = Animator() + + # If ax is default, then create new plot. Set-up the figure, the + # axis, and the plot element that we want to animate + if canvas is None: + fig, ax = plt.subplots(1, 1, figsize=designer.figsize) + else: + fig, ax = canvas + + # Get number of iterations + n_iters = len(pos_history) + + # Customize plot + ax.set_title(title, fontsize=designer.title_fontsize) + ax.set_xlabel(designer.label[0], fontsize=designer.text_fontsize) + ax.set_ylabel(designer.label[1], fontsize=designer.text_fontsize) + ax.set_xlim(designer.limits[0]) + ax.set_ylim(designer.limits[1]) + + # Make a contour map if possible + if mesher is not None: + xx, yy, zz, = _mesh(mesher) + ax.contour(xx, yy, zz, levels=mesher.levels) + + # Mark global best if possible + if mark is not None: + ax.scatter(mark[0], mark[1], color='red', marker='x') + + # Put scatter skeleton + plot = ax.scatter(x=[], y=[], c='black', alpha=0.6, **kwargs) + + # Do animation + anim = animation.FuncAnimation(fig=fig, + func=_animate, + frames=range(n_iters), + fargs=(pos_history, plot), + interval=animator.interval, + repeat=animator.repeat, + repeat_delay=animator.repeat_delay) + except TypeError: + raise + else: + return anim + +def plot_surface(pos_history, canvas=None, title='Trajectory', + designer=None, mesher=None, animator=None, mark=None, **kwargs): + """Plots a swarm's trajectory in 3D + + This is useful for plotting the swarm's 2-dimensional position with + respect to the objective function. The value in the z-axis is the fitness + of the 2D particle when passed to the objective function. When preparing the + position history, make sure that the: + + * first column is the position in the x-axis, + * second column is the position in the y-axis; and + * third column is the fitness of the 2D particle + + The :class:`pyswarms.utils.plotters.formatters.Mesher` class provides a + method that prepares this history given a 2D pos history from any + optimizer. + + .. code-block:: python + + import pyswarms as ps + from pyswarms.utils.functions.single_obj import sphere_func + from pyswarms.utils.plotters import plot_surface + from pyswarms.utils.plotters.formatters import Mesher + + # Run optimizer + options = {'c1':0.5, 'c2':0.3, 'w':0.9} + optimizer = ps.single.GlobalBestPSO(n_particles=10, dimensions=2, options) + + # Prepare position history + m = Mesher(func=sphere_func) + pos_history_3d = m.compute_history_3d(optimizer.pos_history) + + # Plot! + plot_surface(pos_history_3d) + + Parameters + ---------- + pos_history : numpy.ndarray + Position history of the swarm with shape + :code:`(iteration, n_particles, 3)` + objective_func : callable + The objective function that takes a swarm of shape + :code:`(n_particles, 2)` and returns a fitness array + of :code:`(n_particles, )` + canvas : tuple of :class:`matplotlib.figure.Figure` and + :class:`matplotlib.axes.Axes` (default is :code:`None`) + The (figure, axis) where all the events will be draw. If :code:`None` + is supplied, then plot will be drawn to a fresh set of canvas. + title : str (default is :code:`'Trajectory'`) + The title of the plotted graph. + mark : tuple (default is :code:`None`) + Marks a particular point with a red crossmark. Useful for marking the + optima. + designer : pyswarms.utils.formatters.Designer (default is :code:`None`) + Designer class for custom attributes + mesher : pyswarms.utils.formatters.Mesher (default is :code:`None`) + Mesher class for mesh plots + animator : pyswarms.utils.formatters.Animator (default is :code:`None`) + Animator class for custom animation + **kwargs : dict + Keyword arguments that are passed as a keyword argument to + :class:`matplotlib.axes.Axes` plotting function + + Returns + ------- + :class:`matplotlib.animation.FuncAnimation` + The drawn animation that can be saved to mp4 or other + third-party tools + """ + try: + # If no Designer class supplied, use defaults + if designer is None: + designer = Designer(limits=[(-1,1), (-1,1), (-1,1)], + label=['x-axis', 'y-axis', 'z-axis']) + + # If no Animator class supplied, use defaults + if animator is None: + animator = Animator() + + # If ax is default, then create new plot. Set-up the figure, the + # axis, and the plot element that we want to animate + if canvas is None: + fig, ax = plt.subplots(1, 1, figsize=designer.figsize) + else: + fig, ax = canvas + + # Initialize 3D-axis + ax = Axes3D(fig) + + # Get number of iterations + n_iters = len(pos_history) + + # Customize plot + ax.set_title(title, fontsize=designer.title_fontsize) + ax.set_xlabel(designer.label[0], fontsize=designer.text_fontsize) + ax.set_ylabel(designer.label[1], fontsize=designer.text_fontsize) + ax.set_zlabel(designer.label[2], fontsize=designer.text_fontsize) + ax.set_xlim(designer.limits[0]) + ax.set_ylim(designer.limits[1]) + ax.set_zlim(designer.limits[2]) + + # Make a contour map if possible + if mesher is not None: + xx, yy, zz, = _mesh(mesher) + ax.plot_surface(xx, yy, zz, cmap=cm.viridis, alpha=mesher.alpha) + + # Mark global best if possible + if mark is not None: + ax.scatter(mark[0], mark[1], mark[2], color='red', marker='x') + + # Put scatter skeleton + plot = ax.scatter(xs=[], ys=[], zs=[], c='black', alpha=0.6, **kwargs) + + # Do animation + anim = animation.FuncAnimation(fig=fig, + func=_animate, + frames=range(n_iters), + fargs=(pos_history, plot), + interval=animator.interval, + repeat=animator.repeat, + repeat_delay=animator.repeat_delay) + except TypeError: + raise + else: + return anim + +def _animate(i, data, plot): + """Helper animation function that is called sequentially + :class:`matplotlib.animation.FuncAnimation` + """ + current_pos = data[i] + if np.array(current_pos).shape[1] == 2: + plot.set_offsets(current_pos) + else: + plot._offsets3d = current_pos.T + return plot, + +def _mesh(mesher): + """Helper function to make a mesh""" + xlim = mesher.limits[0] + ylim = mesher.limits[1] + x = np.arange(xlim[0], xlim[1], mesher.delta) + y = np.arange(ylim[0], ylim[1], mesher.delta) + xx, yy = np.meshgrid(x, y) + xypairs = np.vstack([xx.reshape(-1), yy.reshape(-1)]).T + # Get z-value + z = mesher.func(xypairs) + zz = z.reshape(xx.shape) + return (xx, yy, zz) \ No newline at end of file From b8c86c2525167723768230a0d56876737e959ef5 Mon Sep 17 00:00:00 2001 From: ljvmiranda921 Date: Wed, 13 Jun 2018 12:19:59 +0900 Subject: [PATCH 06/12] Add formatters module Reference: #130 The problem before is that we tend to have many parameters in our plotting functions. The formatters module changes that. We have three types of formatters: Designer, Animator, and Mesher. There are defaults present, but the user can change and pass them to the ploting functions whenever needed. Signed-off-by: Lester James V. Miranda --- pyswarms/utils/plotters/formatters.py | 65 +++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 pyswarms/utils/plotters/formatters.py diff --git a/pyswarms/utils/plotters/formatters.py b/pyswarms/utils/plotters/formatters.py new file mode 100644 index 00000000..c6f6e10d --- /dev/null +++ b/pyswarms/utils/plotters/formatters.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- + +""" +Plot Formatters + +This module implements helpful classes to format your plots or create meshes. +""" + +# Import modules +import numpy as np +from attr import (attrs, attrib) +from attr.validators import instance_of + +@attrs +class Designer(object): + """Designer class for specifying a plot's formatting and design""" + # Overall plot design + figsize = attrib(type=tuple, validator=instance_of(tuple), default=(10,8)) + title_fontsize = attrib(validator=instance_of((str, int, float)), + default='large') + text_fontsize = attrib(validator=instance_of((str, int, float)), + default='medium') + label = attrib(validator=instance_of((str, list, tuple)), default='Cost') + limits = attrib(validator=instance_of((list, tuple)), + default=[(-1,1),(-1,1)]) + +@attrs +class Animator(object): + """Animator class for specifying animation behavior""" + interval = attrib(type=int, validator=instance_of(int), default=80) + repeat_delay = attrib(default=None) + repeat = attrib(type=bool, validator=instance_of(bool), default=True) + +@attrs +class Mesher(object): + """Mesher class for plotting contours of objective functions""" + func = attrib() + # For mesh creation + delta = attrib(type=float, default=0.001) + limits = attrib(validator=instance_of((list, tuple)), + default=[(-1,1),(-1,1)]) + levels = attrib(type=list, default=np.arange(-2.0,2.0,0.070)) + # Surface transparency + alpha = attrib(type=float, validator=instance_of(float), default=0.3) + + def compute_history_3d(self, pos_history): + """Computes a 3D position matrix + + The first two columns are the 2D position in the x and y axes + respectively, while the third column is the fitness on that given + position. + + Parameters + ---------- + pos_history : numpy.ndarray + Two-dimensional position matrix history of shape + :code:`(iterations, n_particles, 2)` + + Returns + ------- + numpy.ndarray + 3D position matrix of shape :code:`(iterations, n_particles, 3)` + """ + fitness = np.array(list(map(self.func, pos_history))) + return np.dstack((pos_history, fitness)) \ No newline at end of file From 435db1c38ea37781662e15860fcb5cf53a9d34bb Mon Sep 17 00:00:00 2001 From: ljvmiranda921 Date: Tue, 12 Jun 2018 21:59:33 +0900 Subject: [PATCH 07/12] Add tests for plotters module --- tests/utils/plotters/__init__.py | 0 tests/utils/plotters/conftest.py | 37 ++++++++++++++++++ tests/utils/plotters/test_plotters.py | 55 +++++++++++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 tests/utils/plotters/__init__.py create mode 100644 tests/utils/plotters/conftest.py create mode 100644 tests/utils/plotters/test_plotters.py diff --git a/tests/utils/plotters/__init__.py b/tests/utils/plotters/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/utils/plotters/conftest.py b/tests/utils/plotters/conftest.py new file mode 100644 index 00000000..d109b893 --- /dev/null +++ b/tests/utils/plotters/conftest.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""Fixtures for tests""" + +# Import modules +import os +import pytest +import numpy as np +from mock import Mock +import matplotlib as mpl + +if os.environ.get('DISPLAY','') == '': + mpl.use('Agg') + +# Import from package +from pyswarms.single import GlobalBestPSO +from pyswarms.utils.functions.single_obj import sphere_func +from pyswarms.utils.plotters.formatters import Mesher + +@pytest.fixture +def trained_optimizer(): + """Returns a trained optimizer instance with 100 iterations""" + options = {'c1':0.5, 'c2':0.3, 'w':0.9} + optimizer = GlobalBestPSO(n_particles=10, dimensions=2, options=options) + optimizer.optimize(sphere_func, iters=100) + return optimizer + +@pytest.fixture +def pos_history(): + """Returns a list containing a swarms' position history""" + return np.random.uniform(size=(10, 5, 2)) + +@pytest.fixture +def mesher(): + """A Mesher instance with sphere function and delta=0.1""" + return Mesher(func=sphere_func, delta=0.1) \ No newline at end of file diff --git a/tests/utils/plotters/test_plotters.py b/tests/utils/plotters/test_plotters.py new file mode 100644 index 00000000..3db3cb84 --- /dev/null +++ b/tests/utils/plotters/test_plotters.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Import modules +import os +import pytest +import matplotlib as mpl + +if os.environ.get('DISPLAY','') == '': + mpl.use('Agg') + +from matplotlib.axes._subplots import SubplotBase +from matplotlib.animation import FuncAnimation + +# Import from package +from pyswarms.utils.plotters import (plot_cost_history, + plot_contour, + plot_surface) + +from pyswarms.utils.plotters.plotters import (_mesh, _animate) +from pyswarms.utils.plotters.formatters import Mesher + +@pytest.mark.parametrize('history', ['cost_history', 'mean_neighbor_history', + 'mean_pbest_history']) +def test_plot_cost_history_return_type(trained_optimizer, history): + """Tests if plot_cost_history() returns a SubplotBase instance""" + opt_params = vars(trained_optimizer) + plot = plot_cost_history(opt_params[history]) + assert isinstance(plot, SubplotBase) + +@pytest.mark.parametrize('bad_values', [2, 43.14]) +def test_plot_cost_history_error(bad_values): + """Tests if plot_cost_history() raises an error given bad values""" + with pytest.raises(TypeError): + plot_cost_history(bad_values) + +def test_plot_contour_return_type(pos_history): + """Tests if the animation function returns the expected type""" + assert isinstance(plot_contour(pos_history), FuncAnimation) + +def test_plot_surface_return_type(pos_history): + """Tests if the animation function returns the expected type""" + assert isinstance(plot_surface(pos_history), FuncAnimation) + +def test_mesh_hidden_function_shape(mesher): + """Tests if the hidden _mesh() function returns the expected shape""" + xx, yy, zz = _mesh(mesher) + assert (xx.shape == yy.shape == zz.shape == (20,20)) + +def test_animate_hidden_function_type(pos_history): + """Tests if the hidden _animate() function returns the expected type""" + fig, ax = mpl.pyplot.subplots(1,1) + ax = mpl.pyplot.scatter(x=[], y=[]) + return_plot = _animate(i=1, data=pos_history, plot=ax) + assert isinstance(return_plot, tuple) \ No newline at end of file From 054570e9ef3ffb753824629123afa3f4d963d55e Mon Sep 17 00:00:00 2001 From: ljvmiranda921 Date: Wed, 13 Jun 2018 21:46:46 +0900 Subject: [PATCH 08/12] Fix bad behavior in discrete swarm generation Sometimes your swarm can generate a pure 0 or pure 1 vector, we should account that. Signed-off-by: Lester James V. Miranda --- tests/backend/test_generators.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/backend/test_generators.py b/tests/backend/test_generators.py index be43bfe6..0d110f40 100644 --- a/tests/backend/test_generators.py +++ b/tests/backend/test_generators.py @@ -23,6 +23,34 @@ def test_generate_swarm_return_values(bounds, init_pos): upper_bound = init_pos * np.array(max_bounds) assert (pos <= upper_bound).all() and (pos >= lower_bound).all() +def test_generate_swarm_out_of_bounds(): + """Tests if generate_swarm() raises ValueError when initialized with the wrong value""" + bounds = ([1,1,1], [5,5,5]) + init_pos = np.array([[-2,3,3], [6,8,1]]) + with pytest.raises(ValueError): + pos = P.generate_swarm(n_particles=2, dimensions=3, bounds=bounds, + init_pos=init_pos) + +@pytest.mark.parametrize('binary', [False, True]) +def test_generate_discrete_binary_swarm(binary): + """Tests if generate_discrete_swarm(binary=True) returns expected values""" + dims = 3 + pos = P.generate_discrete_swarm(n_particles=2, dimensions=dims, binary=binary) + if binary: + assert len(np.unique(pos)) <= 2 # Might generate pure 0 or 1 + else: + assert (np.max(pos, axis=1) == dims - 1).all() + +@pytest.mark.parametrize('init_pos', [None, np.array([[4,2,1], [1,4,6]])]) +def test_generate_discrete_swarm(init_pos): + """Tests if init_pos actually sets the position properly""" + dims = 3 + pos = P.generate_discrete_swarm(n_particles=2, dimensions=dims, init_pos=init_pos) + if init_pos is None: + assert (np.max(pos, axis=1) == dims - 1).all() + else: + assert np.equal(pos, init_pos).all() + @pytest.mark.parametrize('clamp', [None, (0,1), (2,5), (1,6)]) def test_generate_velocity_return_values(clamp): """Tests if generate_velocity() returns expected values""" From a56c50e3ebb9bc2c9338149343d678932b1d5127 Mon Sep 17 00:00:00 2001 From: ljvmiranda921 Date: Wed, 13 Jun 2018 22:47:43 +0900 Subject: [PATCH 09/12] Add plotters to docs index (#130) This commit adds the plotters module into ReadTheDocs index and adds a deprecated information on plot_environment.py Signed-off-by: Lester James V. Miranda --- docs/api/_pyswarms.utils.rst | 8 +++++--- docs/api/pyswarms.utils.environments.rst | 17 ++++++++++++++++ docs/api/pyswarms.utils.plotters.rst | 20 +++++++++++++++++++ .../utils/environments/plot_environment.py | 4 ++++ 4 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 docs/api/pyswarms.utils.environments.rst create mode 100644 docs/api/pyswarms.utils.plotters.rst diff --git a/docs/api/_pyswarms.utils.rst b/docs/api/_pyswarms.utils.rst index 0bd75a0c..a7e81225 100644 --- a/docs/api/_pyswarms.utils.rst +++ b/docs/api/_pyswarms.utils.rst @@ -1,11 +1,13 @@ Utilities ========= -This includes various utilities to help in optimization. In the future, -parameter search and plotting techniques will be incoroporated in this -module. +This includes various utilities to help in optimization. Some utilities +include benchmark objective functions, hyperparameter search, and plotting +functionalities. .. toctree:: pyswarms.utils.functions pyswarms.utils.search + pyswarms.utils.plotters + pyswarms.utils.environments diff --git a/docs/api/pyswarms.utils.environments.rst b/docs/api/pyswarms.utils.environments.rst new file mode 100644 index 00000000..907e20b4 --- /dev/null +++ b/docs/api/pyswarms.utils.environments.rst @@ -0,0 +1,17 @@ +pyswarms.utils.environments package +==================================== + +.. automodule:: pyswarms.utils.environments + +.. deprecated:: 0.2.1 + This module will be deprecated in the next release. Please use + :mod:`pyswarms.utils.plotters` instead. + +pyswarms.utils.environments.plot_environment module +---------------------------------------------------- + +.. automodule:: pyswarms.utils.environments.plot_environment + :members: + :undoc-members: + :show-inheritance: + :special-members: __init__ \ No newline at end of file diff --git a/docs/api/pyswarms.utils.plotters.rst b/docs/api/pyswarms.utils.plotters.rst new file mode 100644 index 00000000..a95795d3 --- /dev/null +++ b/docs/api/pyswarms.utils.plotters.rst @@ -0,0 +1,20 @@ +pyswarms.utils.plotters package +================================ + +.. automodule:: pyswarms.utils.plotters + +pyswarms.utils.plotters.plotters module +---------------------------------------- + +.. automodule:: pyswarms.utils.plotters.plotters + :members: + :undoc-members: + :show-inheritance: + +pyswarms.utils.plotters.formatters module +------------------------------------------ + +.. automodule:: pyswarms.utils.plotters.formatters + :members: + :undoc-members: + :show-inheritance: \ No newline at end of file diff --git a/pyswarms/utils/environments/plot_environment.py b/pyswarms/utils/environments/plot_environment.py index 9606d91d..23024530 100644 --- a/pyswarms/utils/environments/plot_environment.py +++ b/pyswarms/utils/environments/plot_environment.py @@ -3,6 +3,10 @@ r""" Plot environment for Optimizer Analysis +.. deprecated:: 0.2.1 + This module will be deprecated in the next release. Please use + :mod:`pyswarms.utils.plotters` instead. + The class PlotEnvironment is built on top of :code:`matplotlib` in order to render quick and easy plots for your optimizer. It can plot the best cost for each iteration, and show animations of the particles in 2-D and From d007009bf1784ad01a030f43f35ab1e2f2c3f034 Mon Sep 17 00:00:00 2001 From: ljvmiranda921 Date: Thu, 14 Jun 2018 13:05:33 +0900 Subject: [PATCH 10/12] Update docstrings in plotters.py (#130) This commit updates the docstrings in formatters.py and adds a legend attribute in plotters.py Signed-off-by: Lester James V. Miranda --- pyswarms/utils/plotters/formatters.py | 95 +++++++++++++++++++++++++-- pyswarms/utils/plotters/plotters.py | 8 +-- 2 files changed, 95 insertions(+), 8 deletions(-) diff --git a/pyswarms/utils/plotters/formatters.py b/pyswarms/utils/plotters/formatters.py index c6f6e10d..fbffc31a 100644 --- a/pyswarms/utils/plotters/formatters.py +++ b/pyswarms/utils/plotters/formatters.py @@ -13,27 +13,114 @@ @attrs class Designer(object): - """Designer class for specifying a plot's formatting and design""" + """Designer class for specifying a plot's formatting and design + + You can use this class for specifying design-related customizations to + your plot. This can be passed in various functions found in the + :mod:`pyswarms.utils.plotters` module. + + .. code-block :: python + + from pyswarms.utils.plotters import plot_cost_history + from pyswarms.utils.plotters.formatters import Designer + + # Set title_fontsize into 20 + my_designer = Designer(title_fontsize=20) + + # Assuming we already had an optimizer ready + plot_cost_history(cost_history, designer=my_designer) + + Attributes + ---------- + figsize : tuple (default is :code:`(10,8)`) + Overall figure size. + title_fontsize : str, int, or float (default is :code:`large`) + Size of the plot's title. + text_fontsize : str, int, or float (default is :code:`medium`) + Size of the plot's labels and legend. + legend : str (default is :code:`Cost`) + Label to show in the legend. For cost histories, it states + the label of the line plot. + label : str, list, or tuple (default is :code:`['x-axis', 'y-axis']`) + Label to show in the x, y, or z-axis. For a 3D plot, please pass + an iterable with three elements. + """ # Overall plot design figsize = attrib(type=tuple, validator=instance_of(tuple), default=(10,8)) title_fontsize = attrib(validator=instance_of((str, int, float)), default='large') text_fontsize = attrib(validator=instance_of((str, int, float)), default='medium') - label = attrib(validator=instance_of((str, list, tuple)), default='Cost') + legend = attrib(validator=instance_of(str), default='Cost') + label = attrib(validator=instance_of((str, list, tuple)), default=['x-axis', 'y-axis']) limits = attrib(validator=instance_of((list, tuple)), default=[(-1,1),(-1,1)]) @attrs class Animator(object): - """Animator class for specifying animation behavior""" + """Animator class for specifying animation behavior + + You can use this class to modify options on how the animation will be run + in the :func:`pyswarms.utils.plotters.plot_contour` and + :func:`pyswarms.utils.plotters.plot_surface` methods. + + .. code-block :: python + + from pyswarms.utils.plotters import plot_contour + from pyswarms.utils.plotters.formatters import Animator + + # Do not repeat animation + my_animator = Animator(repeat=False) + + # Assuming we already had an optimizer ready + plot_contour(pos_history, animator=my_animator) + + Attributes + ---------- + interval : int (default is :code:`80`) + Sets the interval or speed into which the animation is played. + repeat_delay : int, float (default is :code:`None`) + Sets the delay before repeating the animation again. + repeat : bool (default is :code:`True`) + Pass :code:`False` if you don't want to repeat the animation. + """ interval = attrib(type=int, validator=instance_of(int), default=80) repeat_delay = attrib(default=None) repeat = attrib(type=bool, validator=instance_of(bool), default=True) @attrs class Mesher(object): - """Mesher class for plotting contours of objective functions""" + """Mesher class for plotting contours of objective functions + + This class enables drawing a surface plot of a given objective function. + You can customize how this plot is drawn with this class. Pass an instance + of this class to enable meshing. + + .. code-block :: python + + from pyswarms.utils.plotters import plot_surface + from pyswarms.utils.plotters.formatters import Mesher + from pyswarms.utils.functions import single_obj as fx + + # Use sphere function + my_mesher = Mesher(func=fx.sphere_func) + + # Assuming we already had an optimizer ready + plot_surface(pos_history, mesher=my_mesher) + + Attributes + ---------- + func : callable + Objective function to plot a surface of. + delta : float (default is :code:`0.001`) + Number of steps when generating the surface plot + limits : list, tuple (default is :code:`[(-1,1), (-1,1)]`) + The range, in each axis, where the mesh will be drawn. + levels : list (default is :code:`np.arange(-2.0, 2.0, 0.070)`) + Levels on which the contours are shown. + alpha : float (default is :code:`0.3`) + Transparency of the surface plot + """ func = attrib() # For mesh creation delta = attrib(type=float, default=0.001) diff --git a/pyswarms/utils/plotters/plotters.py b/pyswarms/utils/plotters/plotters.py index 184c085b..25db5506 100644 --- a/pyswarms/utils/plotters/plotters.py +++ b/pyswarms/utils/plotters/plotters.py @@ -113,20 +113,20 @@ def plot_cost_history(cost_history, ax=None, title='Cost History', # If no Designer class supplied, use defaults if designer is None: - designer = Designer() + designer = Designer(legend='Cost', label=['Iterations', 'Cost']) # If no ax supplied, create new instance if ax is None: _, ax = plt.subplots(1,1, figsize=designer.figsize) # Plot with iters in x-axis and the cost in y-axis - ax.plot(np.arange(iters), cost_history, 'k', lw=2, label=designer.label) + ax.plot(np.arange(iters), cost_history, 'k', lw=2, label=designer.legend) # Customize plot depending on parameters ax.set_title(title, fontsize=designer.title_fontsize) ax.legend(fontsize=designer.text_fontsize) - ax.set_xlabel('Iterations', fontsize=designer.text_fontsize) - ax.set_ylabel('Cost', fontsize=designer.text_fontsize) + ax.set_xlabel(designer.label[0], fontsize=designer.text_fontsize) + ax.set_ylabel(designer.label[1], fontsize=designer.text_fontsize) ax.tick_params(labelsize=designer.text_fontsize) except TypeError: raise From 9a4aa45701f516ed238b02a1e28cea36033ec7ff Mon Sep 17 00:00:00 2001 From: ljvmiranda921 Date: Thu, 14 Jun 2018 13:06:08 +0900 Subject: [PATCH 11/12] Add demo and documentation for plotters --- docs/examples/output_8_0.png | Bin 0 -> 12558 bytes docs/examples/output_9_0.png | Bin 15164 -> 0 bytes docs/examples/visualization.rst | 155 +- examples/visualization.ipynb | 9184 +++++++++++++++++++------------ 4 files changed, 5628 insertions(+), 3711 deletions(-) create mode 100644 docs/examples/output_8_0.png delete mode 100644 docs/examples/output_9_0.png diff --git a/docs/examples/output_8_0.png b/docs/examples/output_8_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8f902cd3cba0b00d94653f13abf19a1fde7e891f GIT binary patch literal 12558 zcmd6O2~<;8w|_zqoPb)32q@GVq*g%`nWxqXBLXU1ky&L(nTG&jCe&7HWvCYg8Kc#T zUJz6S0zpWtf(RiBB0~~L1wp0|h$KK5-np^1_Wk?b_kHhuZ>_&;-Nntl=bp3A9)D-= z?YSd%)(R`tR$?$11;W97$1oTfG6sVcESCdM9%U1#;Eyb655aLc_!qz2`+M+vMd(3i z5(cyCWAwtdaTDjkLz9U8Cn6j|d?U!G!hJA7ry@cFLm~qGPJbHZ6Hf9A3I24K?oM63 z?Vo-f5fN&-W5=HZbVI_4JAMx8yM)1fiXrU#$}u{BoSSsfJ2GKtX(%8zcD>`i4RV{U zT2jAJn>RRz^IWU!J}E!PH2v|h-o6Wg2M>z2^?i%ql1!^9)!uot`*RaD(vcI-Z}MK1 z?Y#H#nyLNn*H+6WVZO5dR*#}LW%JRGg*jqzMorrOqYzg=!ghK*(Xw?|AFARnye&Fb z^rW42n|%q{1LFy+9>QVvUxFJ_BP|n8aQQOTi~wI>_UP|_s9nYHI2_KT4Q=w9)Z^oI zmJ<>;H#OkJ_-d1;CA+C_tc?dF2_B{clPcQX9HPWZdp3xI%!NZ1LF?*AZxa@OyU^kU zGiaIjG5FcdJPQUpSsP<7v#5B&s5NH%5Fsl)P7xlI@3%Wvtku0XT3v7!nRA2|t|K>) z5fU`5&9tOz#n{7nxl}Q}`*uv=1b*rAKr6mVdo~=_B3SOx{@ALsL~e1|u61HlaU5ZB zds7;LZx?P0Kg`^Koi_|8fkwtw0^j!DPXW}S zE#0tpIB`(-R>8byEZoD-PJYcON*NPw;l(i2u25JqOUlvuf<}h#NuTlwAq7GD;o6U8 z#*vy(-7UETehdO*6BOwHLyUb;f>jec8CN_K>7Ek5f%b8iO0=oqF~0M7M|N&wC$AVI9S*KIno0A`c>~-x05-ny^)9b)$>ZOhXD8n@34H z6dnXSL!H_SG=FWKLk$Jjj~63! zN)=|pCfpmg*2+0N^%Or57$q?lcxILyzDF)!vI08RftTO1Lf~auWLIU-$dxgVDIEkN zB6zg9wS-xPda@>5E_oA#wZWK0C4mzmOFPCeR7UVzHIbQ;+$ZZ{E8L)^qYKu0S&Yaa$D<8>=GUpu$NOOk;mZa4d6dHQJMlUn7iL|$zU;H6?g+b` z)W9yn`Rr|E)S$or{ZE)S0lrV!J~ENTjhlE7(1Aexg=g`Ewp3mE*gZ|C<7tk_^+i~f zf5#Vw!5m}0-$5A9{Jd#ef8w>DGwK2!f9L|duT!gS!ev8E^|0}G5WCTscq3EK@C7%X zA@4F$quaESXU_YGw-<^$R=%Xc$flp|(ws>_Oih|XWF};S12y8xJRfW(wEeovz~J#9 zGp~ASQPOB}>4I}zyoqF@-YPRQ(=2lS$t&F^S%D?bhvCa>!>c1BNGaD2!@r5(GE3xp zu^Vt4rCQZ!Um@;Gp-N|G#6o&A#Xd5P%#T=p2)_OuQ8>sPyW6Ny;!^PgzQ3?Fzxaz_ z`naKCNN>wXM={wy^=M(1#V1{k5U@WS!-P>&nD7!yG^%3Z6zySTjsPWmXE!i?Y2ee7 zni@4QVBWerfHbP|w&UBM+`%3E^#|o`8qc2&eBK{y#XDOn$;%5$5Z^*>Gu#ex?DM8`1j8-eG@s@y=fy7w@NUoTFYe@t4pRF*?=S6ZiLHMU zWhhyFPh%#!bAg2|Mn<|L>Wn30iSkf~DpXO4yexGy>F>i{#1mpKYc2{>N<8Zei_Bkd z-4HMMrFH}=dqwYC;47w0imK`p@FaB~PLN!U6H6o?tajfX{+Ut87}rcNs`bfnyekYLPeDB0U z?-};X66c4jJOna}1NMvG5-o)}=A+K6R~!;+8E-HzWbn>IMK5Nqfw?e;HPGz2xT`2X ze5II6)(m)A@>@k&!gzjbh__So@s5{xZLG?(S%=SwP{$=guUudWqQJ;uSi^xom7lIk zoSVUSVl$RyX_cl`?rZBO%qP_LXw&ux-d`c4ZI;SWd0r zyBz}$CK7fyxrIH>XC+-v8Y)FvGt%`{3;{MU#P#5=W~N&)>SWHQjvbAmEg~@MH$1@5m+s z>~ae^Fr}YKH1Ah+i|Y1KVq3oHdZ=iYYNK2I?ShD%(VuRXu9P(MFk_}#$%{jP@#B>2 z+5xTkw?$U3ahfxXGi-DTQBS~*RtvFPWe~d|OUIQq0NWV9eYUrHac;DmNKKe2=$qYW zXZ)M2ZvA{XW{b9VPHt|la5nAj{SqL^J(=IyC(X6z$4@ooNA>t^_pHl@ijPkgifdEi z_|+*x=0hg<-wGz;wXMV?t41&%lioY63ucLF@zN0To^sD=7d|PcE(9hHXD6P^0Nf=R z)pxt+*XZ4Lr&qrBG}oPL=0=KVzw?~=F3jF*V9tVt&xSgBa?>2Y*|)FdiaYm`F-$ zZL|P%ca!@PhT`1_@QcI-?(%||!JPcWxnYtezn!`mQCiny)eme{qm`z9m1r^QT;f_4 z+}gmdiQGnAnjfm3Y)~HxJPaJ+o%Q6+5x=g`4h2_BceJ=SZU;(ScTMDIe%e;TF}7pJ zlSRs8yx?G2iopKr{U>cd7pybl;|b?Grd~H!k5{ra!Z1uH=y6aLw*fpM$F6qbyPz;h zCkpjoc}5|=%~?AAg-@TLJX;X=B^6~D@m;)|U@iPrq^mB$%qEK__=4c#2AJjiAabcME!(ubSvvtiZF&vv z&Fg`y_gmjz>Vv|y-Kk-nyV}Ey3=9kga}L7SXP5 zDEtt$k!%wlES%}gEb*@_I~X1Y$HBE#Lzk0+8)|==?Iw1eSd}J~fvPh{D+kjnU;DA~ zdSk<;Uo7Ya7|u~hUS>kB_jzEwCcuFW*oXDNSMRo}YSnxB&1orN2dcx#pWnHKl-@?< zDI`jyg`@=68XQcO-%yB$rZbVbl?6}oZr6E@&%YhgmP%d!DUGc}yE?i!=|3!`@-{XIvRD;; zN=V|Qr$P|Xv7-lZp@+YIs+!m_|4w@jsFL%NaUe!1adv-A#oHuXB(qZ#Tp%OErCx>j z)Yjp?0=42asXDcM-p@bAyMiyy+>U#RQ;!vOV>a}0EY)Z?5xG*1mUFK6#GnW-C}xnO zd`l{KNlCG>HVB1+Y{Nee#p+@6A;@V+!oVR8PeA(8fQ0}s{^a-1D2aP z@Jk0hh+UZ$V+ic64jA)azjzeWE7o*+yE`;?mPUskmJT_Ul@fFDw${~O9Sr_u4&`06c9H}FMoW8$mu zLxvei7EOq+99@*;2(z?jtME=+Om2_f?K^x=t4W#33dxwNPRo?;{GTyp z%e_mHkj2KC{k&O%NB4ABHB@n9c9yrnvLHqZhR>vizvdq~=>WOALQ0q+%xJ90Sw5f3 zu~afPCm zy;Ts#3n?Dy@f8kHAZR*}w}K}O z1g-*669xkB9uFMB5jaJ*5Zv$XFa6ovU>gCR0~Y)g<;()GV1tch2L}hQ!gF{+u022p z;jhu?4*bX8DBO_E<0*j6$XybV1>=+ z=^*(bp*YFN;~KY^(1=xQDQ3vXmpm@REO%Ut3z6&XBEAvhv}NQCtgLsl?Xh)^kUZAY zpTFaTbnC>6+sG+0dB{i)5{ogGKhasvGUbg8ieebQ5spDtw~(@D=W6A(Vm=deA#*N} zvfvc&iKSNow<6)IcU%Qwdx4@}!w(6roaPoGl`>@PHsAFmA!R4^2xMgB#a%sC-mV|= z4y*xa@Vnu|3!0W+hM$Jh2!_Gk_k64s3!J1fVSyv5e(0B-3k%74a^soaTkmLxN>+RE ztxmSM=C)V17lnk38+{2C9EAdk{l}kP+D4pp9MqKR0GOQqiSg%6Blu>@G~}hcrQ??9vshz=nSJnDN|L;X zJ~CveiDKDX)C-R{0veU_`^v|4+^Z&tUw#X9AXv7M3~Q`>!H_4g*5e*WBl$6_#J&6f zXIlCHm%Zdb9Ie?Wft7xp@3vL$ULAKpTmW>FG?ZwXtMg7kyZLZ_?m#fFn~=zv=O}Pi z#z$qh97&K`CG~2U6O;r&ahM4NX*9HobL{v5F^yDV9!+@1)9%8og+_da+`*|Dd{XAX zkhSp+=E>8iW!^k;hki#SmxDMDG-*anB#PCtQh7`Bd(M6bY_hhWYJyvvs{nA>$vOb? zLMr8H^xGZI8ZPqr9#9c3E;ZOCSHYeM(k>q04Lvh|S1C1@fUh}PCLcxbfffj`C(Z*SJEK;xYWwa3 z?*M8tz<0A6rwG%v=S*L?_?yNTU zzqq!&Jj6;*qRj1t`)63Mxj%8S>FH zew^WjKT(+3^rOL5Qjw^=hg9Wll^R{o%2{%}nL*KW#(oIIu4!h+{o>>^l#qyx;FTaXyPDXPG^he=ymsawY#VWW?4?no zN6x@n2E;hdQ-CTIK5e@8#w}Swx2T^gAiR8Lk`U)kZB*Itju>YS*0E!jF>Ar@ZHts7 z@(gh43pTtRlEC`x*8M6E*coxxg+c1lu~X__xU@*Q0FDa(wZ8o;L-Nw;w{G3q$=Zi{ zmIn9p)#0d00)+C;n81_w=Yly^pxe@O!GnL>>i?@f{AaUz`5@d0@+wRNo=XW(=z7n4 z1pxz+J(A1B%^;V7>o0wcq8KYO*r6$aRl=WE0u;rh1(=}BjRa@5R+P6~@JdRT5%@rA z%m3FysxCCR!<%8ZOm7F+Va~kH6(;31))#t1onA$T>@vdC52fRsTC-8`HaKvsXK@Da zd3fr6!?e8ITs7fg6s79jquK1j)+$A7h3bU{!e`>5%&@d;h@xz-LhUsZ z(aDn*g4Mj`youb&8w)9jivtuuuPl&>zlA8u)V<(%3Z&BI{&y)8rig@$6hYItlMed5 zdR(spg$*Y1tW&*GhE@IDu}Xh~E5k~wdVAA3cZvB`BsjRCMzxEWUf5V`XkxNL8lJp{ zmp9r`gAAGz&Tf>ZHr+-xkX^F6jev60|({Hqm)Xd z$0+TlV<+u-qEn5>JKok;$xsK0MFAm%sYkvg+A>w5JjV~f7J04-C^?F}4gUmNZ`?k; zdzDC4U`#T{uO**HklgXnykb8moIJMg;M5y@90nh=TM*7OOK33Fm>K)Nu(MX09|_)U zrsMkGpRnpoL{ITlOsPzzOvp_nh){@$uOTs)*(7H`9V)q=F=~Qycx}v*Vy&+uE67p` zJ*ti-4yGffn#T1+wrfprAB(aa6ue{??-AJ*43gYfl6vUO=KSzcDdY0`jyw;S?#Gu? zk&gz08eq9ZGz$Xe95?29Y4P4M}6${~&dGaeELLd zf|%Pl>bW#$vQa!9l4Mp?7(0@mzLfwUXr{Sh?5q|d3V3SpK1nZ{ z5r?A``h&62+)-b#}G&#>h{s=ALH^N|WjV(O-S1;XCm_EXS*42dhgR zLi#TLTfJ?^OE94Tv|R_urMG%$oPOcaP@v&k_CO@V6R|^xptd6QnmudK$6!BW6`dZA z%H-adAzBgeoKcjpqPiPa#olQt#X2=biM(_`fYQW)4W*)=5v^uXy`ql`=_gP_}kAj<&r?h29WPh8Cu8 z7Pg;$g{s~7?x&aNdy{RUNRWZWD0_=X29cT# zR}j8jshmjtH`0mws8-)90N_G`HHzT&wLIKA_RIU^uVJHMQE1Ydnb^+3OgMg9lQTgS zJ79lm67@#cqX3%tnN^wl+H!A(?bLc+CZh?O?)Mc+l8Z0_l)U7n=j3C5Rv&+3om?aI zNBQV?F|10}_{!+wBE$BKh;Z+duC=s;uDgUS!{2hPi$@&V%^W*)po-f_B~J4S$z|pg zGLnk8xIzI=rEas!3wwVxOmKOL<`{c?E{2h}h8}@C2wBgozdZe6iU=}bcN#ghm&ySL z|2$q};xKOnnakrR!|y@OysFM;QkAgVOn0e7Dz})dpkXd!S`lPhX01Zk2}u3Tw>`ht z_}+W7pGe=0sU!ZbunMLT+h-TPUs$|Y3#xFvIo=8d?Ny!FdNX9Gay`&TAd-u%d%9oU zj~egkp@sE>GRqEbypTCYpQsxvXIXN>n?aQ(9Tavv;AX^s{IFzJL3yNDa)0dfq9z8$ zSEK>W1F5$LjkvL2KnaaDT1sz_nxRcYf!q`tzk3>K?O!gMeDeF9bT5|ZOV-tc@C)gk z#7B$Z56;-Q7?N5A+0_2Mt>{1 z;-FQ(oqn#R&M0a=LTXr%DvJM(#jPjjUXZSu0v^Rk1qt?jU~wzTXY_k1CDJKZeE~M5 z1g4q#1{DYTQp6$IgIX(1!l%dZlI7pg^evc4Ym$U+1>8EL!OkCa7nQ%-uM8fY0goo7 z^8AI?UP42OFaty=OIaozCN=Oo5uCM0%np}v65j09eD&+99UFv!gGHdKk5-KZKdC(U z9xc%VH%sO?z<8ZK(sVVZ2)C9YUp#WZu#t?jTy3sGQ!u`Plm=*+DH~(E860@Vte9iNr45F)97MNSnfnJw+eBk!P-B_Nai|+vHR~ z2kBN1d|WqmsVtObAs!Q~2T|%bP{{9pb1h@==C$5{cbU zT5<#(V8x{gx?hWCT|i%gQt~CnR<6WuqH}}j&d%g^iVlMXb-e8Dv-m!&=qRYiZUc4p zW$H%3`5jJ`76Jy&E#mopx9H!#0}&5f5F+PX9j-+f4DuHbf zX)kPWD4hBvYlo*LvEEA;RD14$YFWy>S@sh787KGh<&&TmTX&%Cd!`}(K#WV&yEcyG zrGRIawimg}O1`dKvSHno7*t8ps%2>9NTsOTv*&e|uKUxTiU4PNRD+mzrgx^nD14}Z zJXOs~NViX%%8dVQl_&3|Ye<2xI;gic2UP04TN^KBZFipHWn3+KJg8h2y^OjrMr^cD zIC(#;bE1GtKWzLp^((f-oog1jlw$vd$r|G|Jc51fv3mFGcVjsH8jV2s(hCjU?qse( zQGXw(fd}^7KNnD1eRd*IOm`zO4d!|BRwqYa-qzQwJ@2Rt62X8$lMI}a`Apeh5rTFv zI4ZNNLWmO4cz+?hdtE!xeeeuG%YUHQE+UEK5(QwaYWjH9f;FQb-X3&(Vs1efWZYNt zR=>&5;!YN6jjI92X$CGyeg-{u+TTNTFPk|_bK!vM4p>93aNW;ZHiInBY|w!MiUu#- z9>;FJqcM{v?HR#&;?m`G5#-Q4?92(c{wnFK$6qmw-jqDE2y7X=d_Heyt6xLDX23Q0 z{&M`O)2F{VckW!6{eG9X2iB39#5Z;_x>tlmn-2m5ML#(M-@T9cI5>ecc8S?h=7e=k zHgfDRq$GM7)=#l0K$VvX%9vfC2jl$HC#6|IxU#HEctX%lcCpV8YsG2MGhuNWMXzl# zD4@pceERSGaSI7!oeG2lv89@mW!>sC&%aMfiApbH&JT?4N}BCyv9Hq=cDmIYT6sd- zh&_Hs8@Z)FdV4{)H;T>QhSnJhGs~LiUkB)0&DOMd_QwXHz8W-fp}-q7c7++m5>w-3 z)Sh(uCQe1>)W-)6YI|nS25c`&qoM_KmoHHliS}^P*Bp9Z?S4udDnFrR@@dm!LaAN2 z4{Y`I2U+njR^;77yDkiPX3l$&k|NJQ*lRIGM&Yr8YZ=0;LT?;_Ujx>Ld2JZLx4{PTA1sy+CD9`jG zbIU*jrFw4Xt50|~P~=B~p9kw2`jsffbbdW9nk?+$VDt5|oOObWaGp1jA{^_gaBikh zwHz%}Y00kL9g_;1%gx|J!=Z&}j&Kcr7UI1`YD(fr zRQH65F&CR;Pnlj%sDAmpto<*otC&MoFR{hR3CY&&Cfv?uam##p^CH_9aOl0^r}^mu z>_ad;C4LUtYs+V|hP5UK`&=6h>i3V$G5~V69=f(_$JKIJOdGtocBWS~g~=F1=3+@p z=B9Ut;(X^lR?c5RDjhpM5p3l-2`u!ft7EBS_jL962Zlh~z~IUoJ`t9Jno}(#my5Zq z(1I0i?od+u^fPJ3Ymz}EPjlAM5z`7pRE9tiy_-Q*F(CPT^0ho}d{7kVcia@Z7cMf$ zQHR*X>7Nr^!14I*^Io#otC%@a*m$K2 z(v;88>Q$EH`ngGQTXl`dgJortmiLdG#2}V?nRmTB*rFpuaHuZW>t=`Q(0P1)0{a8dtMV>+7ItW3!X~K zyrtWS0h2X?$2*Rj7Jo;TO_!~^ zvzN86?I+L+;WEaT6TPWP!U{a$!!r07f7n`V5^T>)M{10k+LMPOEes73;xlY0Ub(F4 z+p>zdx}9I2CTQTsoS`9{cDu>X+X#DSbIb_mxmA?g%;63tY*D+3R%{IE=)-lU#l8>f zF!LU82)6T?iGkVpYMv`Ww+!iw3R>DNXl58C%PihU61yIqvWmk{ZSUo`B7K^Cj>E4~53=Ial@V{@wR;|DWgI>*Wptd^lDb!m)Rs+IXn_yAx?fIpxB=gEK}m-B)W~ zn$NlsPV{q_W>@H{XJl6dD9>%~Iv!OT8dBPv^kBAWg3@>~sQAc{=NFG17;I~_=DGec zL1x0GmS%8KVM1=go*Whu5^~yiSBbE)nwr{lu!@_?}qFh4I0-xF37WoQkC8Iy|A@v& zl8BjcCd^K+aO3eN@#kk4Me%c(=)LFW_`aV{4p8STN>x6wU?ed!z>vVWM0e1GYem9| zcfqm#Y>I;|={Xgaat9;HSTRUa$`4m*&F6O#7yUqziZ?O-XP9ge-}kn@gzRVd;#D>M z2HPa+Ad8PB#)7cknA+QjilH(_3)BnLhX>lI7KNkD-6+r2vMr97XJ-j_dX!VSS9sr) zm@(b8@t*Xma@~DcX%{Vz@~(EC$vx8}A`AUmKidy=wXi4!O#(&o@Wjoj-%x4P4Kan+gb^`*z;tx&@Daf5JlxIsx#tFpa#i+l=MD@qDm|B@lF zch}FJ##HmF4~GQ0)HwyPZM0ixkA9-?X}qiWg;RK!*4aAMJT0`J1ID5Cq+r>W0ZN?9 z0n-?Vqw1s4iHHdvq$sr4)Y?hllQ8aQZJ(MS(sin@t%@^InXHgRB~#Z);0?rQ7&gk% z$ad8`$rqC@M zda6;}yZxBZ##Hn3>Rn#ipRs*)y{b6^_45JT^+vCRg_%ro% z$`feXzK5D2+I5dK(`_&!d#WQBis)SA=X-b{*$ z8aE@jKXE(2$H&KnX?k{4ZlGpvq{rSlb+Fvtm_x+;;LIs-ea^?Y?#V$$+09?Wz?%8^ z?x>{x`Xg>Y!i_cJ@^JxyYhT|#*~`K4zH0A7>zte%*Xgc@85tQNgGIXgSaSlOa7jJG z;m-9In(fl|;lETjkeDckExq&gY?a##M~9^AnweS#EjM-%Wk(XadsV*sxp&xI< z(k8!n(cq;}a27oJCSPY~=jAF_f$fz>rIk5H{}u(x09%Lq-s$fbUs-wKPh}uy{%HQtBJQoRh3`9?WZxiy%j+HcME$pX zUOEnG2Qzc8%vfyGE4#Z(3SB81_TQTDkCnp;o0yoaJJeNF#I}gkCG?tmKRI)cHsbkn z)hkyxb>zR(VBW*fm&@(g4{L;7Z;g|<7=M_zU%3|U5S)js_-1aeWoJ@gT?!N86 zJl$R9IFtlarE0JCblJnkW>VpF$k@z{9o5L|FK<@mdJX2v$SoTg%E0HL?M=*Fx}lDtx$m+ekKf8QGE6jRusr0n9+@Xf z!vPtFTh6`Mcinv;(VJWu{Nh4Psq56Goch+!^$oc+hrGbGG3}oR@~B>Wc|3)fQ$e3>y*;g$8SVy*D{J#41`6 z5)!;fg&~@!3$B!hmX@CCFT43xW+LJ3Skv>SmKL-n_`$6&FQ2r=OFd6Y`eR?9Dcs@mrl{R2JZ2JP0wM^fIu`|5BcltHN?P!dAvfvb=C&* zLo{phDl(a0<9CSEuJ8pa2Sgm!D0Ln`AH>W}uYC3_t$vpFjk*5vfjf=dM~)nM8X4Ju zZ=)@8){Yeo)Js3xk*XTJkRlZ@Hg?_IdrsnZ@uetxGo4McWjc3oE+4dH4*R6FI*^;UxvXZ<`Ag(yz(spCC;UUwI zu7+sdoIvswhk<-S(Y(+==QgUv0pBZ=t9HY#*r7`#Njm0(lgl#6Ya6SJGIM30_AB~G zC;R+3SL0x;Hrmo0CAd1m;=h09)Ywj^>>&y9tD|Hz3uW+fl3(&JQ-?GB=)PcvC0osl zj7j;rIzWEns%-sUIB+`2KD~kA3S197g2E=#5Ra|6y)37x>vVT0v&#uXc+seOmkNng zBu$)Q-r&2kUX+ucf3mP*ls-)1=jY2YfS#B5wX9N1PrJ9Ca~uRC|dhI|&8cJ11=G}&>uXB@s)n+=)Iar|5y_%&Q9NiRK@kX{g?`Bl{VJtOh4 zVV=>us>s+_DMy}kjc`TVRR)pj`c|nS(}}sdg*Obh2CFMSe#vQu4L?}!a8Jc7eF$O( zPSSx>X{{qXR?^{0{skFL`3{jN7Eh&TYY$X=pgxc>z;fQRAf{X z7zXx!7S@+sIT2vl=J~n!nyJ(49ZS>QGfzL&Q2Q)(Xe4-yK13jMrjQVpmd1ywa-VAk z5N->gLIW7+tS~kJw!LppRh9YPz$P;usc(0BswaqvOL}wZ(^N+~-S%qo_5pK6x9P5h zy(LQPeQn1D1=I8MAKMpJ1_6%45WGCzvtpS#$sb4GJ*xcCEI0)*WXFyj>kj^4x(RMQ zCQCED;Z$hah2>t0uVloQN9GI;&VyGWMgusVg`FQfdAT@%FkdU@V_Xkd_@lUyEy7mo z;_iaRbNq>8%Qt6w3Yb^)G`J0mzOYBElv=$D-AqCoDkcGbEO@mkP)y5bdfs>C=x^JP9!bT@%prrNDK@Nn;Flwf4I%`tPWJVC@3h9 zdJC>jkjbzMl$oMB#p)Ub@1GuL&IDqoyPAxP%;(5th~0~gJl;eSiQqals-w7?K_Do> z-fn$L-s&Qe@OXSpMn(gPq_i@Ou3H&}Is1|aD*d)rCwL7gkplYFKqG3c8=2eM+9+(= z(y#XkT^SQJ%3tV6*YLh`r-VS*1}viNv+(KICt^Npljvr&vPru1oo5b-KFJ9ET%^1xORN@^6tNVC;m-PH6Q-cRcHDzU8 zF3!&IiwPdn{jzTTb)7w#TyIr$=4@_OVNzAdX;y$v>)FpG%EegoJM>!!YQUuTva^3D z6Xs9(tT-Xepu*{z$0lMTuN;Rs=Mba5g(W+vEGQ&jzN)1yiVi{X`-eERFR-^vP@ODQA}Ehmyk;*N)4xw!(8N z#-p!#%-2wC2dh2HzkF61=)1^N5e#>Fo~TR&5lx4(z`FKn&Pi{I=#g2aGhI!QjCeY?6AM&9C-{1yE- zXDlke#o4cni}*LeL6|vyDGK$Pp3Zrs$tLQ%=KB5#SL3T8zm~P-nZDv{Xi}A%_3OJk zP^NyX;}>zK9_(P?xL?=mGM$t4V{N7gU2OG^9yZ1(-M8lZd#=csm_=}X{B4pf5-O1h zjBiuqBBKgS@IerCc$NlLwJ5+Yb$W^{+WO1wsXSK4W00VdTX0BDPEKCpCxEVQdKKa# z?sNU>XUee0<#0x#_6L{q}GUB|t;IwI#O=zrME$cgw6zrdN&xaaC-s&Ak1h zbN+m&9sduA4q2I*r?6yGh?-Vrp&^=4nOgDh&9J2Mq0$S&mG^;Ki-FOf4LjIWap&uP zaSUTqQxj^y^^?|PUZo`S8m~JW-y2=t?BZ`vQ)fUG)@`jV1XQ58U5H|gJo2##2?vj9 z#i`lZo#?gjSAfH_0rp)X=KyP>GX;AQlC!Pq1xv}ihS^t@k??>mKLfv3ag=kcW>Ujxv@F#&o3k-RJ|Ev;fG7!oVD3#^xvR6ckWy@93tWr z$Q4-@b$+o2wl{~iwFvHW9^c>X!%5%agNv?TzrN6UL4@kHxRmeu&l|9W5t->3eS<9X zCqZjTUWRHJ$Kpo2@^0L?5g8fzG%l_g7TXFi^bRQO+f@JKNPvR~`whl$s6YRrwCZAw zR|5rdlu<)JKgGjmAE#tw&|oLP^m8QJUrgy|qY)0PuC6W*M>b+V%g3i>hQWNhRu|)! z5@%i){eCKh_c+}G7zxBR9bHq?gEN;P;o{5G)i^w?u69K6co%3PA(}qA+3AqXM69If zf~>-)rD2`mwH&FhEi)?%$a|wPjGIo#e>jlN17hjnK?*p)6p4Usn0K6nL+ydKVWL!PMpkbM*O#%5Lia-iaBhA)l{- z%JmRS8L-&8+0vGc@fZsThl;*yE7hKh1EftL?Te6f%@wx@hD{BDEpOh3$eQhoX-k?@ z4Q5^jOsXQRe@v9iBVl0tn&RSinA5!1_9kV$;UQbzhFp7B9v`1ZKv105@*4(`BZm$J zf|GxT6GS697m}Pk z2|WQCd-n1E*KpiM4TuYT;!bD9*;&(rtJ?M2Tp(NK?k znt$@zVtdUP!ArUM>bL%zz5d-Enbn$LnF(Nd8ChA2z_%Kz_OeE(+I`3|W*LVdcJ0Sl z6Odl2VnE3S*GzV8g=K@SA2D^h=H?&aB-`Lj?8@dKxWvDCqvB2;Xo3&+pSIP7QP@qIY-ieX2qWD9^f@X7AHeZWdE2#{?WW+C1HsT(A&PD8#FB=b6vb-JL{c-7qJyZY_w?`MB3 zE>1xPsGoT;$9)xeTLrmlMpPW0;Q7HJj8h^MvfNWn!^+Q|KbL_c@K_lMW~poirde1u zeWDbPzk|IExNzm=t){w-mO7`Y7coB|94!KTiQW2K%*p#{#CFy3 zt-}j?9Uf`=NMFh{FUYH|mOpjs)aObU{(E#R-yHqdxe&_Hzcm^G-=>GoNNLTX!$LIO zti+b5Cp*&nK+Jjf?%e>$CG<SaC%pFowPTkK9~q-RjiJx zsoD$XjeLCFQ(ZZ15R>B#zvl&#pj}jO8!jY}>4#KGARv|qYk*wNH=UDSRQB)}f*Yq5<%NW3>ccv)k!*j# zobUUY)Zc02Jr!=I-(M7!Q2}NPkhQN|f!vH0WV=`uZcQDXaJOBMKDuRon*XiAF%JNW zF>*=%&H!N}B0{E?X1~+jAln#1=x+Xx7nBPm4w@H0@guEH> zDR3y>#JS8a7X(pAeb1cMsAHk+salssiF>o}N9Sjkg`sgA7rPlP_vv!Ji({SwZ%YM+ zfBnV{iKRlQB}{9bR;@W)oZ7kgr2Z+oXVt>;Sn+`mG{RWQ546;E3|qi1RO3OHi#7Y! z>d`D+>ymH_=aqcA=0x<#9kQs+z-%Z^|TxN0Ig69gQq@1yUSYV2X7z1Yg_r^)7a7%B8Tn#!`2AR>k5 zQZ3S<=Akhc#oq{^!d9+_*>)S;i?c3Au9tl@T{A@Tl@whMxbghNX7z#n2U=An)3j$=_<(Pj!S+M!5($>4QDKr9PeFRkv;e%iXd#CH;9c!CFLHGz1;g4xm-w`BD%^>F|3y0xOJ#N?58#p%ygTzv@P8gp(qoQ2eY11Kcn>(@*nd-* zQ+4Tt>o%ML@;!kd{GEleo*pZp9OzUa7b8Y1(A8nw5AO1R;5+}}BIM(A2wes0^T2O& z?cKk(2STRVSVe>EGk8AyCk>D05H|e)>9$FopYLBM@&Lj3fYj}S2qpUa;gkQd$iMFR z?@1t<`9l_Zx1Y!dn)(>60<0|Hq(!yIotoSD;^L=(k(VxA(!AKE^%IWlju`$ZS#iN> zM&NZoS6A2n>tqgx%fBhU_BK|+-stZfF5@vw5HhXwF@)_{PKf9+c(bak@5?3IJ zFUPoJ*=G`NV=lDbs>J#3Y4yteF?^4uGtXGW+;cqY@~k;5&RoqQB>}f1AS)0b_@tgs zJbsESc%tCb9uM066A5b6TH1FJrzN#f@yvSWW*}#xgM(1qC}S zid-ucx@>UnkNLOi&hNaHz2swUYjUHJs(^Sa2`40m&r83o6ZLE9ELNKe%WA_%hA;lZ zv_imbCKHNss-NMsP{&XQAwgL-|5c9!@bR9G5BM0BgryhCyLEV>mN4%|;jZ^d84Bcb zrc980QwS`Og*nvh%k{1US}hL{AwumHYa%6nf%ZMMILqY;hhYs&v@K?;ez)a~z4p1$ zUa<3>k?M0x1VT()Uu*rkGAeeK+|oMxzJ2ETfbR=j4V}-fNVLBz#s6$xX6}GgAzaMlK{#{b7V4MB&~*n@5w?3s;(-szgYrusTq%-d zKOJ=Uez)IWKa?A2JRt`*3dYqRjg-m|e=3mYVG@x5S7{JQAr*0quryzvw@|<<*Q#h2@q&zF}GH5WOq)v9kra zw37BcClO5nhz#fNyv!(Fmu1Ilav%prlJmGLB_{2P3HrR|PRV;`5p&Wv`Xtx9xqpSR zf^kJ`VVgMHY0J^`^h9l^k-0e!$SsiA8Go{$rcmD-@Z}1?mG4lb$<)Xz4$7F%L5wkb zN@Dqbs4`2R$s>xS*DoCZo&vL?5NCZYLDZ(1E#pO@I6IMEfbsg-$;hq+q;3W=w>@4kJ{BO}$Eot1KOUObR zedOr7)*4qewXvOU6|Zj#<#`GfC^7&`iKvn>%@&cwb1|FRVtUaR()2IA^#)5nAbD#) z=vlVE!S3^jcHOq%LNv~-sdhK-&Lil3>iFWIGDx5Rur-U!YyQNETqZZ{Hjnf>;#pLU z>Z9#xGOtEWDQ!jvaGyOac1sFw*klIc6K5f@^!PTg0Qr!3!kg{~w-pbASt_T7K^gRS z;*3Ba0-p6OehcWr>L2H|6<5dpH7xDPJ-tCJydObgvi@yI2#x$zEu{m-+gI%=j>F-g znkn$xOw<(IEJ4-=@%j;D7vg`IUusxw=P`IJFuA|KkdO2K{^Wm5B#m<#BiW3!99$76 z5aO0;aV9x9Gfu$TKBW|7uAOD-bKcY7W=XUkX(g#25pQJ@iliI7!ci`1hAktAzUT9! zi602myWC$9@6oqb8(OqI$(K6-S401p%IIM6pisRVF7Um`53i-PH*2-66 ztXTTsD*(ez-84@vU)J`w#41+C#gclR6Gg*h(g{CF{JsDa^5Ae&?(f4**r*0#Z7K$VmN@**>nkN-rcoP?-vjTR$Bc-B3`h66V)@Y|PkByC?bd8KSeq&gcF5Q)KyB)IxJQ8K}Gj!>oW{F1n zf_~i%MOgGOsOF(}j>2X}z<7W!0kjZ`G(TnP()AQvrK?9O!ln?LG{^Q%D?^Tjf{gUx z-|G=I3I$o%<9|QF&xbja{~&1AuPhL8wU4z_&QNX_D+Cih;tb@B#ABoYMD1oX3_4Wn zOQm`7;@=_A2M!!Sfrx+P@1meaOC{>Jv9jM7rnyJvfo!qgrWeYn;0pT}6&P_^Ih7ev zYy;Q@jT$Oo(<43zboF61DxrM(C@n2*zcJv*gk_Y}S zY~5=*&!}Lu=c?nAfA2!uB;29hT}`(E`M`m%c1UPq>xM|Khk4mg?1}3m1$%6s7hmrr zM&tUjFg+r1%LXsfvY0uM77#6CC~p#}>p#_3DvJ!$i_f^#+YOTkUVUt{V8wbCxmIpzX*)n$FF)&i6#pH)U-i{o z+n~Rt^4uT#!=&Rq`Y%Ap4E8rdR8alyDpMd$%~0e zH&}ueS90=~B0=wF2}vvp8c3*%tsBEGM?3!yqH>=TiV5aDKRjyNS%5HwD7{1G3Wf}q3&8aVc6W3B#&wgds9a>`D_`ZS@ahB{X z=95=nG6o<$1Al#P@7}$rr-_NJAW%a2`O0HKu>2f_U-_#N3LxnNsK`ypPxA>=y!r0(OH_P=Ol2g#syz z8=7t0P9o5mBLPnXE!J{~dmM$7vo1&dS$}(_i_Jg#r$HJJenoQU0tY$!I1jmlo1_=! ziyj9TKOkYZH~s9B&^zjI^5t1cvg@}M)Af*$9SQ0pWW=-qP>R>PeEGxrd>u@ul57Atf4-saIbgONQeYm;QoMgr+`_ZAiUob|0sPAf$iuUfa+byqQH{T zDWJTeW(O*tLmQMcQLM3{^dy+Z6+Inpq@4o=JuP%8;D4xF@E1k`xieZN@g7~X;nKjX zTYY=*abU!D7g9gIUd%CG>Z;rLalzLZ2yYxCfHjoFEQgM-0AxM`!>#AtS_qEqhKO^C z3)Yyd!~GAmlR)8}E&%DZ!nh%W2c50M&vSYi85w!>iTHhIK$>_UiP)1@iabXho`W7o zA^kU>ORTL8pCJbaYMLbm>0x;HZwSa)lPt0DTRjTBQDe}#;(4<9*SRG6(NPE1ABus! z{_&cQ_r9tHoS~S$4mS`CG)jZpt;??kp};7ZaL@3+YgJ{5yyr`~J5=Q+_%?{?Fh76R zYkM|0H-QJThQVIW&ZnScE`~yMdGN%W3lN~y?9TUg9r6+UJon|5OViO96jG%^nyjEo zQ#tnRg2zn3E2M|Y$|Mu!Uk*_Op#O~$Qd}QN*1vQqR^Ic}*T(QHC?PkF{$(bs41{R}M_HA6qd+vM2->Ndtj4q^xHR73R~ zYIUbQd|`y(J)p?}aqdCcpt%Co>)FY*X`QkYRIgAIRH^~|12z3OJJQ^=YD!^B?Jpg! z0(Mpcj!8om7y1pE;M42Pkpk5lKUzlC8>Acu6BgT)lH+ezJ%q}~o;`a!zCMvU4)w|1 zJCO!7;6UpC>_*ItL+Hv=Xl{g31^9$D%yAY(ZBT?jr$2s4U;mt@W(r6|&^ZS+^0QDZ zc+&>a`J9#2sGn3bQVE7OpM!2)da(z9D1ox459|_yIfn44lo(NH4v(3ba%z)4G-!=8zdCB%WOOD0iT076Sb_Y_#ibIu|^s;VRX2f&*vhbABcj_qNC3OT}P%99bIbE z#)C}fo+zvq*-GeZQC@J?hLjq}A4GCxiJ%k*V+(1O?ODnMu)19!V#Kq5P zYctoqO4EXf`lc~5KK=qkIbhbzy!y}=343xK`sgAfX^`3r%=>p!1&?Cpz(S;%X@w&V1k(dvdWYgvQ~?G8KJxt8vp1lcze&D~m{QFHr~$(H zL&r{;eQy{T8VD~x35piqAF|$+de`*f144Ul^_7mN1bVZdP-KFj5e;7JKKog3yu{F_ z^fm-cFmy)$D+*nbq(n$sA|OqG=j07w-enD^hslN_gSxonnHHtdMMOlrh7ocT4it?B zDTCL+4jyzB7^`=C{`@&os)QmLGo?AV9|O(J=Pq8%f0;;peE&X8X=y1?2@yDb!$P{( zJQtzj1(8uB>Z{O+9tWi08DmP?LWUTumg(#30}aX8^CDRrTo*JVz`(qIhqwdK*2<@( zq%?52F!y6<(i)jWVDY{Pk)MU)llR3RPyiCM5xiu#gSdi1VnaiN-IrZ=9T0qlZt%Pf z-@>PWeUKr7EwXbzR3#6o+9;jyYU+k*9)Z?2pPtMrhs?~(Jv(XMC=BJsnye6Y4E-tW za6Fpl&Rqj6HssNN0R9T>EpJ2W(jhRdxVZC>yhm-H6$}#q1XKP;cYI!dd|6*#|E-O5 zF2JQG*crG&utFx_7u?9=El`%0W!9muG_WQ3(ThhLkP~2Iyd@;S@U%|wVfV@=GrF>fTw+wsc==9+;<^ zKCDAqO7d+9U6qbnL=jvZAS2UeW znU;}$k=YgImL-`lSALC@!!)De`^tJB*3r8nD$X>!S4#ZqEE#QWrlFtZ{_hpq4wsdz zy2Jh!q#!`UYXi(}ja32CssH_|&M=J)c#!}WlZvP&nhDZr|5=x8tV(*{Oq7l9GZnvj z4Flr)%l02Vn4f_-U-mV;;R|T!x9jc3xNFbmI+_ws!s|1!efjM!<=2E_O)iMX-^Sz- zZ@s`V8FKX`;Yd7duQqhV<1v^VyT)l;-*xdX7|eElS$>ZL2E&i*D{Z&eiNkfBs zjyFMha7yo+++lhRQ)6}2Fx`-TBc4E^)~5AiwaX&}h7Z)xE$B_kr1rk2=0~Lm*r?12 zIdK)2cEY3Q*I(dt!INH*iw}Y6^=A^jLc>Ym$ki>P2P{2riGHRgaGl`NS`B;tbDF*XUS+@8< zxpnz~uVV2`z`JrgadCT=(^$&(;&8yrm=iTw<_DWn|5XQ1SxuS*V`e^#dOPsa@4ROT~a<@%@Vbc zPe|T5d(^cGf46^OL8aHXareg4E-G6L#@NtYWA3u|lNYUFV}G-H+`+rJqpXZeN`&?J z)OSO{+Wf3*E>~?U`+r(yQSXcG^ST@3^-&a`lg(sreYm)Tv~4lD>U#H3kz{@%KEQFn z7wS1EN9wE;_s41uUvBA7PM~9Y;}6UH&HdR9c8Q83N08cq^QShdTHiMCx_L}gacR+G zc{@yDBZO%DCU(KI$?bK4ggIdI4tCR=0pgZsCp&(G)ZlKmPK0~P}$>U-;JN(!?| z6a#o!#(1VG5#suEraiyZ$quh(Em!)o=5Rfz(%hJ)?>fTli=-Zh*4^fLyF+1Y7iPT;$s4m*T3w~)hp;LH~)>#`A#=Q!8D-TCA-yVc( z6~!M-m3hT~KYBB4m}q{Xb+#?_2D{CUlVx-MLEl1at2TL zd6vDts&Rywo2*|Ma@q`w-X@dNsZ>T1=E(PmCwHvG<63tW$e||ZUf<-SDs-WkVWMeI zp2F8vtdlVAcmhSKp;q{q$E#O<%0`n4i>gJ5noj0Zt@T3z`mMK)I2BiK4a@;$2GE)Yv=_>1Lb{-N z" + "" ] }, "metadata": {}, @@ -121,7 +119,7 @@ } ], "source": [ - "plt_env.plot_cost(figsize=(8,6));\n", + "plot_cost_history(cost_history=optimizer.cost_history)\n", "plt.show()" ] }, @@ -130,7 +128,7 @@ "metadata": {}, "source": [ "## Animating swarms\n", - "The `PlotEnvironment()` offers two methods to perform animation, `plot_particles2D()` and `plot_particles3D()`. As its name suggests, these methods plot the particles in a 2-D or 3-D space. You can choose which dimensions will be plotted using the `index` argument, but the default takes the first 2 (or first three in 3D) indices of your swarm dimension. \n", + "The `plotters` module offers two methods to perform animation, `plot_contour()` and `plot_surface()`. As its name suggests, these methods plot the particles in a 2-D or 3-D space.\n", "\n", "Each animation method returns a `matplotlib.animation.Animation` class that still needs to be animated by a `Writer` class (thus necessitating the installation of a writer module). For the proceeding examples, we will convert the animations into an HTML5 video. In such case, we need to invoke some extra methods to do just that." ] @@ -138,9 +136,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# equivalent to rcParams['animation.html'] = 'html5'\n", @@ -152,1255 +148,3561 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Plotting in 2-D space\n" + "Lastly, it would be nice to add meshes in our swarm to plot the sphere function. This enables us to visually recognize where the particles are with respect to our objective function. We can accomplish that using the `Mesher` class." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from pyswarms.utils.plotters.formatters import Mesher" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, + "outputs": [], + "source": [ + "# Initialize mesher with sphere function\n", + "m = Mesher(func=fx.sphere_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are different formatters available in the `pyswarms.utils.plotters.formatters` module to customize your plots and visualizations. Aside from `Mesher`, there is a `Designer` class for customizing font sizes, figure sizes, etc. and an `Animator` class to set delays and repeats during animation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotting in 2-D space\n", + "\n", + "We can obtain the swarm's position history using the `pos_history` attribute from the `optimizer` instance. To plot a 2D-contour, simply pass this together with the `Mesher` to the `plot_contour()` function. In addition, we can also mark the global minima of the sphere function, `(0,0)`, to visualize the swarm's \"target\"." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { "text/html": [ - "" @@ -1535,2148 +3735,1933 @@ "" ] }, - "execution_count": 7, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "HTML(plt_env.plot_particles2D(limits=((-1.2,1.2),(-1.2,1.2))).to_html5_video())" + "# Make animation\n", + "animation = plot_contour(pos_history=optimizer.pos_history,\n", + " mesher=m,\n", + " mark=(0,0))\n", + "\n", + "# Enables us to view it in a Jupyter notebook\n", + "HTML(animation.to_html5_video())" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# Save as GIF\n", + "animation.save('plot_contour.gif', writer='imagemagick', dpi=96)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Plotting in 3-D space" + "### Plotting in 3-D space\n", + "\n", + "To plot in 3D space, we need a position-fitness matrix with shape `(iterations, n_particles, 3)`. The first two columns indicate the x-y position of the particles, while the third column is the fitness of that given position. You need to set this up on your own, but we have provided a helper function to compute this automatically" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Obtain a position-fitness matrix using the Mesher.compute_history_3d()\n", + "# method. It requires a cost history obtainable from the optimizer class\n", + "pos_history_3d = m.compute_history_3d(optimizer.pos_history)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# Make a designer and set the x,y,z limits to (-1,1), (-1,1) and (-0.1,1) respectively\n", + "from pyswarms.utils.plotters.formatters import Designer\n", + "d = Designer(limits=[(-1,1), (-1,1), (-0.1,1)], label=['x-axis', 'y-axis', 'z-axis'])" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "" @@ -3849,23 +5694,30 @@ "" ] }, - "execution_count": 14, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "HTML(plt_env.plot_particles3D(limits=((-1.2,1.2),(-1.2,1.2),(-1.2,1.2))).to_html5_video())" + "# Make animation\n", + "animation3d = plot_surface(pos_history=pos_history_3d, # Use the cost_history we computed\n", + " mesher=m, designer=d, # Customizations\n", + " mark=(0,0,0)) # Mark minima\n", + "\n", + "# Enables us to view it in a Jupyter notebook\n", + "HTML(animation3d.to_html5_video())" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 16, + "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# Save as GIF\n", + "animation3d.save('plot_surface.gif', writer='imagemagick', dpi=96)" + ] } ], "metadata": { From 8249ce284c92122d82b207a3e4b6240a7de5dd0a Mon Sep 17 00:00:00 2001 From: ljvmiranda921 Date: Thu, 14 Jun 2018 16:16:23 +0900 Subject: [PATCH 12/12] [ci skip] Update README --- README.md | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 328919f3..e75e796e 100644 --- a/README.md +++ b/README.md @@ -186,27 +186,48 @@ fresh run to plot the cost and create animation. ```python import pyswarms as ps from pyswarms.utils.functions import single_obj as fx -from pyswarms.utils.environments import PlotEnvironment +from pyswarms.utils.plotters import plot_cost_history # Set-up optimizer options = {'c1':0.5, 'c2':0.3, 'w':0.9} -optimizer = ps.single.GlobalBestPSO(n_particles=10, dimensions=3, options=options) -# Initialize plot environment -plt_env = PlotEnvironment(optimizer, fx.sphere_func, 1000) +optimizer = ps.single.GlobalBestPSO(n_particles=50, dimensions=2, options=options) +optimizer.optimize(fx.sphere_func, iters=100) # Plot the cost -plt_env.plot_cost(figsize=(8,6)); +plot_cost_history(optimizer.cost_history) plt.show() ``` - + -We can also plot the animation, +We can also plot the animation... ```python -plt_env.plot_particles2D(limits=((-1.2,1.2),(-1.2,1.2)) +from pyswarms.utils.plotters.formatters import Mesher +from pyswarms.utils.plotters.formatters import Designer +# Plot the sphere function's mesh for better plots +m = Mesher(func=fx.sphere_func) +# Adjust figure limits +d = Designer(limits=[(-1,1), (-1,1), (-0.1,1)], + label=['x-axis', 'y-axis', 'z-axis']) ``` - +In 2D, +```python +plot_contour(pos_history=optimizer.pos_history, mesher=m, mark=(0,0)) +``` + +![Contour](https://i.imgur.com/H3YofJ6.gif) + +Or in 3D! + +```python +pos_history_3d = m.compute_history_3d(optimizer.pos_history) # preprocessing +animation3d = plot_surface(pos_history=pos_history_3d, + mesher=m, designer=d, + mark=(0,0,0)) +``` + +![Surface](https://i.imgur.com/kRb61Hx.gif) ## Contributing