From 9ed18c7064226e1edc06f5a51fd569083971d448 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 20 Oct 2011 04:37:06 +0000 Subject: ported chaos to the Library Template, now with libchaos support svn path=/trunk/externals/bbogart/chaos/; revision=15625 --- examples/fractal-tools.pd | 27 ++++++ examples/loop.pd | 43 +++++++++ examples/martin-test-help.pd | 92 ++++++++++++++++++ examples/popcorn-test-help.pd | 62 ++++++++++++ examples/quaruptwo-test-help.pd | 69 +++++++++++++ examples/readme-frac-format.pd | 22 +++++ examples/readme-fractals.pd | 54 +++++++++++ examples/readme-gen-fractal.pd | 6 ++ examples/readme-lyapunov.pd | 16 ++++ examples/readme-operation.pd | 34 +++++++ examples/readme-parameter-ranges.pd | 23 +++++ examples/readme-searching.pd | 101 ++++++++++++++++++++ examples/search-tools.pd | 186 ++++++++++++++++++++++++++++++++++++ 13 files changed, 735 insertions(+) create mode 100644 examples/fractal-tools.pd create mode 100644 examples/loop.pd create mode 100644 examples/martin-test-help.pd create mode 100644 examples/popcorn-test-help.pd create mode 100644 examples/quaruptwo-test-help.pd create mode 100644 examples/readme-frac-format.pd create mode 100644 examples/readme-fractals.pd create mode 100644 examples/readme-gen-fractal.pd create mode 100644 examples/readme-lyapunov.pd create mode 100644 examples/readme-operation.pd create mode 100644 examples/readme-parameter-ranges.pd create mode 100644 examples/readme-searching.pd create mode 100644 examples/search-tools.pd (limited to 'examples') diff --git a/examples/fractal-tools.pd b/examples/fractal-tools.pd new file mode 100644 index 0000000..2170d6a --- /dev/null +++ b/examples/fractal-tools.pd @@ -0,0 +1,27 @@ +#N canvas 0 22 454 304 10; +#X obj 27 252 outlet; +#X msg 149 80 reset; +#X msg 158 101 show; +#X msg 167 122 param; +#X msg 175 143 lyapunov -100 100 1000; +#X msg 183 164 elyapunov; +#X msg 192 186 constrain; +#X msg 198 208 search; +#X obj 27 23 inlet; +#N canvas 0 22 454 304 iterator-tools 0; +#X obj 17 264 outlet; +#X text 17 19 This abstraction is intended to be used to iterate over +the parameter space. Repeatedly performs the following:; +#X text 46 65 1 'param' to set a centerpoint around which to search +; +#X text 46 80 2 'constrain ' to limit the search area; +#X text 46 95 3 'search' to find a fractal within the area; +#X restore 48 53 pd iterator-tools; +#X connect 1 0 0 0; +#X connect 2 0 0 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X connect 8 0 0 0; diff --git a/examples/loop.pd b/examples/loop.pd new file mode 100644 index 0000000..19896ab --- /dev/null +++ b/examples/loop.pd @@ -0,0 +1,43 @@ +#N canvas 640 438 490 340 10; +#X obj 52 26 inlet; +#X obj 93 26 inlet; +#X obj 134 26 inlet; +#X obj 52 262 outlet; +#X obj 52 44 route bang float; +#X obj 74 118 f; +#X obj 74 136 -; +#X obj 74 154 /; +#X obj 74 172 i; +#X obj 74 190 + 1; +#X obj 52 208 f; +#X obj 52 226 until; +#X obj 52 244 f; +#X obj 79 244 +; +#X obj 96 99 f; +#X obj 52 62 t b b b; +#X obj 130 262 outlet; +#X obj 74 81 t b f; +#X connect 0 0 4 0; +#X connect 1 0 5 1; +#X connect 2 0 13 1; +#X connect 2 0 7 1; +#X connect 4 0 15 0; +#X connect 4 1 17 0; +#X connect 5 0 6 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 8 0 9 0; +#X connect 9 0 10 1; +#X connect 9 0 16 0; +#X connect 10 0 11 0; +#X connect 11 0 12 0; +#X connect 12 0 13 0; +#X connect 12 0 3 0; +#X connect 13 0 12 1; +#X connect 14 0 12 1; +#X connect 15 0 10 0; +#X connect 15 1 5 0; +#X connect 15 2 14 0; +#X connect 17 0 5 0; +#X connect 17 1 14 1; +#X connect 17 1 6 1; diff --git a/examples/martin-test-help.pd b/examples/martin-test-help.pd new file mode 100644 index 0000000..b8f294a --- /dev/null +++ b/examples/martin-test-help.pd @@ -0,0 +1,92 @@ +#N canvas 437 54 668 669 10; +#X obj 35 179 tgl 15 0 empty empty empty 0 -6 32 8 -262144 -1 -1 0 +1; +#X floatatom 86 180 5 0 0 0 - - -; +#X text 81 219 Reset To Initial Conditions; +#X text 94 261 Modify Parameters; +#X msg 80 236 reset 0.1 0.1; +#X floatatom 59 444 10 0 0 0 Y - -; +#X floatatom 32 464 10 0 0 0 X - -; +#X text 19 50 (This attractor is not continuous); +#X text 21 19 Latoocarfian Attractor (from Cliff Pickover); +#X text 20 34 Chaos PD Externals - Copyright Michael McGonagle 2003 +; +#X obj 35 196 metro 50; +#X obj 14 197 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1 +-1; +#X obj 25 83 readme-fractals; +#X msg 98 307 search; +#X obj 34 392 martin; +#X msg 89 282 param 1; +#X msg 113 330 show; +#X msg 380 144 1000; +#X obj 336 202 until; +#X obj 279 384 route show search invalid; +#X obj 335 441 print search; +#X obj 279 460 print show; +#X obj 392 422 print invalid; +#X obj 449 403 print somethingelse; +#X msg 346 115 100; +#X msg 311 141 10; +#X msg 309 169 1; +#X obj 474 625 qlist; +#X msg 491 567 print; +#X msg 484 547 clear; +#X msg 474 527 rewind; +#N canvas 0 22 458 308 search 1; +#X floatatom 187 89 5 0 0 0 - - -; +#X obj 142 50 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1 +-1; +#X obj 147 73 loop; +#X floatatom 186 15 5 0 0 0 - - -; +#X floatatom 192 31 5 0 0 0 - - -; +#X floatatom 198 47 5 0 0 0 - - -; +#X obj 31 259 outlet; +#X msg 48 167 param \$1; +#X msg 65 192 constrain 0.01; +#X obj 77 121 t b b f; +#X msg 82 218 search; +#X connect 1 0 2 0; +#X connect 2 0 9 0; +#X connect 2 1 0 0; +#X connect 3 0 2 0; +#X connect 4 0 2 1; +#X connect 5 0 2 2; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 10 0; +#X connect 9 1 8 0; +#X connect 9 2 7 0; +#X connect 10 0 6 0; +#X restore 45 119 pd search; +#X obj 52 146 print sit; +#X msg 136 357 lyapunov 0 10 100; +#X msg 465 504 add martin \$1 \$3 \$6; +#X connect 0 0 10 0; +#X connect 1 0 10 1; +#X connect 4 0 14 0; +#X connect 10 0 14 0; +#X connect 11 0 14 0; +#X connect 13 0 14 0; +#X connect 14 0 6 0; +#X connect 14 1 5 0; +#X connect 14 2 19 0; +#X connect 15 0 14 0; +#X connect 16 0 14 0; +#X connect 17 0 18 0; +#X connect 18 0 13 0; +#X connect 19 0 21 0; +#X connect 19 1 20 0; +#X connect 19 1 34 0; +#X connect 19 2 22 0; +#X connect 19 3 23 0; +#X connect 24 0 18 0; +#X connect 25 0 18 0; +#X connect 26 0 18 0; +#X connect 28 0 27 0; +#X connect 29 0 27 0; +#X connect 30 0 27 0; +#X connect 31 0 32 0; +#X connect 31 0 14 0; +#X connect 33 0 14 0; +#X connect 34 0 27 0; diff --git a/examples/popcorn-test-help.pd b/examples/popcorn-test-help.pd new file mode 100644 index 0000000..cbfdc4b --- /dev/null +++ b/examples/popcorn-test-help.pd @@ -0,0 +1,62 @@ +#N canvas 575 260 589 492 10; +#X obj 43 134 tgl 15 0 empty empty empty 0 -6 160 8 -262144 -1 -1 0 +1; +#X floatatom 94 135 5 0 0 0 - - -; +#X text 79 201 Reset To Initial Conditions; +#X text 99 246 Modify Parameters; +#X msg 76 184 reset 0.1 0.1; +#X floatatom 131 384 10 0 0 0 Y - -; +#X floatatom 43 384 10 0 0 0 X - -; +#X text 19 50 (This attractor is not continuous); +#X text 21 19 Latoocarfian Attractor (from Cliff Pickover); +#X text 20 34 Chaos PD Externals - Copyright Michael McGonagle 2003 +; +#X obj 43 151 metro 50; +#X obj 13 150 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1 +-1; +#X obj 25 83 readme-fractals; +#X msg 101 266 search; +#X obj 212 381 print; +#X msg 113 294 show; +#X msg 95 226 param 2.35155; +#X obj 43 347 popcorn 0.1 0 2.35155; +#N canvas 83 103 466 316 search 1; +#X floatatom 187 89 5 0 0 0 - - -; +#X obj 142 50 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1 +-1; +#X obj 147 73 loop; +#X floatatom 186 15 5 0 0 0 - - -; +#X floatatom 192 31 5 0 0 0 - - -; +#X floatatom 198 47 5 0 0 0 - - -; +#X obj 31 259 outlet; +#X msg 48 167 param \$1; +#X obj 77 121 t b b f; +#X msg 82 218 search; +#X msg 65 192 constrain 0.001; +#X connect 1 0 2 0; +#X connect 2 0 8 0; +#X connect 2 1 0 0; +#X connect 3 0 2 0; +#X connect 4 0 2 1; +#X connect 5 0 2 2; +#X connect 7 0 6 0; +#X connect 8 0 9 0; +#X connect 8 1 10 0; +#X connect 8 2 7 0; +#X connect 9 0 6 0; +#X connect 10 0 6 0; +#X restore 229 286 pd search; +#X obj 236 313 print sit; +#X connect 0 0 10 0; +#X connect 1 0 10 1; +#X connect 4 0 17 0; +#X connect 10 0 17 0; +#X connect 11 0 17 0; +#X connect 13 0 17 0; +#X connect 15 0 17 0; +#X connect 16 0 17 0; +#X connect 17 0 6 0; +#X connect 17 1 5 0; +#X connect 17 2 14 0; +#X connect 18 0 19 0; +#X connect 18 0 17 0; diff --git a/examples/quaruptwo-test-help.pd b/examples/quaruptwo-test-help.pd new file mode 100644 index 0000000..4fcc159 --- /dev/null +++ b/examples/quaruptwo-test-help.pd @@ -0,0 +1,69 @@ +#N canvas 559 82 589 492 10; +#X obj 43 134 tgl 15 0 empty empty empty 0 -6 160 8 -262144 -1 -1 0 +1; +#X floatatom 94 135 5 0 0 0 - - -; +#X text 91 208 Reset To Initial Conditions; +#X text 114 281 Modify Parameters; +#X floatatom 197 399 10 0 0 0 Y - -; +#X floatatom 43 399 10 0 0 0 X - -; +#X text 19 50 (This attractor is not continuous); +#X text 20 34 Chaos PD Externals - Copyright Michael McGonagle 2003 +; +#X obj 43 151 metro 50; +#X obj 18 150 bng 15 250 50 0 empty empty empty 0 -6 160 8 -262144 +-1 -1; +#X obj 25 83 readme-fractals; +#X msg 117 303 search; +#X obj 327 394 print; +#X text 21 19 QuadrupTwo Attractor; +#X msg 111 243 param 0 1 2; +#X msg 177 335 show; +#X msg 88 191 reset; +#N canvas 0 22 470 320 search 0; +#X floatatom 187 89 5 0 0 0 - - -; +#X obj 142 50 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1 +-1; +#X obj 147 73 loop; +#X floatatom 186 15 5 0 0 0 - - -; +#X floatatom 192 31 5 0 0 0 - - -; +#X floatatom 198 47 5 0 0 0 - - -; +#X obj 31 259 outlet; +#X obj 77 121 t b b f; +#X msg 82 218 search; +#X msg 48 167 param 34 1 \$1; +#X msg 65 192 constrain 0.05; +#X msg 190 149 constrain; +#X msg 238 268 elyapunov; +#X msg 198 198 constrain 0 100 0 2 0 100; +#X msg 218 228 lyapunov 0 10 1000; +#X connect 1 0 2 0; +#X connect 2 0 7 0; +#X connect 2 1 0 0; +#X connect 3 0 2 0; +#X connect 4 0 2 1; +#X connect 5 0 2 2; +#X connect 7 0 8 0; +#X connect 7 2 9 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 6 0; +#X connect 11 0 6 0; +#X connect 12 0 6 0; +#X connect 13 0 6 0; +#X connect 14 0 6 0; +#X restore 165 96 pd search; +#X obj 172 123 print sit; +#X obj 43 363 quadruptwo 0.1 0.1 34 1 5; +#X connect 0 0 8 0; +#X connect 1 0 8 1; +#X connect 8 0 19 0; +#X connect 9 0 19 0; +#X connect 11 0 19 0; +#X connect 14 0 19 0; +#X connect 15 0 19 0; +#X connect 16 0 19 0; +#X connect 17 0 18 0; +#X connect 17 0 19 0; +#X connect 19 0 5 0; +#X connect 19 1 4 0; +#X connect 19 2 12 0; diff --git a/examples/readme-frac-format.pd b/examples/readme-frac-format.pd new file mode 100644 index 0000000..950f56c --- /dev/null +++ b/examples/readme-frac-format.pd @@ -0,0 +1,22 @@ +#N canvas 171 208 685 432 10; +#X text 31 36 The format of this file is pretty simple (or tries to +be).; +#X text 55 69 Line 1: name - this is used as the 'c' identifier; +#X text 55 81 Line 2: - integer for each +; +#X text 55 93 Line 3-x: - var name and start state; +#X text 55 105 Line y-z: - param data; +#X text 55 131 Line c: '.' - file must end with a single period '.' +; +#X text 33 180 This file is used by 'gen_fractal_framework' to produce +the 'C' source for the external.; +#X text 62 225 ** - The pseudo-code must not have any spaces. Each +line in the pseudo-code is considered to be a single "assignment" statement. +There is no need to worry about creating storage for any intermediate +(calculated) variables \, as that is done by the translation program. +The pseudo-code represents variables and parameters with a '$' before +the variable name. Locals are allowed \, but are preceded with a '#'. +(Locals are used as 'intermediate' \, computed values that are not +retained from iteration to iteration.); +#X text 55 118 Line a-b: - line(s) of frac 'pseudo-code' +**; diff --git a/examples/readme-fractals.pd b/examples/readme-fractals.pd new file mode 100644 index 0000000..2281c6a --- /dev/null +++ b/examples/readme-fractals.pd @@ -0,0 +1,54 @@ +#N canvas 495 74 487 362 10; +#X obj 56 202 readme-frac-format; +#X obj 56 221 readme-gen-fractal; +#X text 37 183 if you want to add new fractals:; +#X obj 56 144 readme-operation; +#X obj 56 164 readme-searching; +#X text 22 107 Additional Reading \,; +#X text 41 126 if you want to us existing fractals:; +#X obj 56 240 readme-parameter-ranges; +#X text 270 269 Developed using PD 0.36; +#X text 93 295 Copyright 2003 \, Ben Bogart and Michael McGonagle; +#X text 276 282 Released under GNU GPL; +#N canvas 302 96 575 579 available_fractals 0; +#X obj 157 264 henon; +#X obj 157 302 ikeda; +#X obj 157 321 latoocarfian; +#X obj 157 340 latoomutalpha; +#X obj 157 359 latoomutbeta; +#X obj 157 378 latoomutgamma; +#X obj 69 208 logistic; +#X obj 277 208 lorenz; +#X obj 69 227 mlogistic; +#X obj 277 246 rossler; +#X obj 157 473 standardmap; +#X obj 69 246 tent; +#X obj 277 265 three_d; +#X text 57 187 1 variable; +#X text 157 187 2 variables; +#X text 273 187 3 variables; +#X text 24 136 The remaining outputs represent the variables \, corresponding +from left to right as the variables from the '*.frac' data file.; +#X text 24 16 Below \, there is an object for each of the fractals +currently available in the ChaosII collection.; +#X text 23 55 All fractals share the same common structure \, in that +the right-most outlet is used as the "results" outlet. This is used +during the "Searching" operations to return the results of the search +to the user. see 'readme-searching' file for more info on the results +of a search.; +#X obj 157 207 attract1; +#X obj 157 226 dejong; +#X obj 157 245 gingerbreadman; +#X obj 157 283 hopalong; +#X obj 157 416 martin; +#X obj 277 227 pickover; +#X obj 157 435 popcorn; +#X obj 157 454 quadruptwo; +#X obj 157 492 strange1; +#X obj 157 511 tinkerbell; +#X obj 157 530 unity; +#X obj 157 397 lotkavolterra; +#X restore 43 78 pd available_fractals; +#X text 27 28 The Chaos Library provides a means to generate multiple +chaotic datastreams \, as well as the ability to search for new attractor +sets that produce other chaotic datastreams.; diff --git a/examples/readme-gen-fractal.pd b/examples/readme-gen-fractal.pd new file mode 100644 index 0000000..2af4657 --- /dev/null +++ b/examples/readme-gen-fractal.pd @@ -0,0 +1,6 @@ +#N canvas 0 22 478 328 10; +#X text 25 23 This will explain the usage of 'gen_fractal_framework' +\, once the program has become more "stable" and generates what would +be unique to each fractal. Currently \, there is still some redundancy +in the code.; +#X text 282 136 more later...; diff --git a/examples/readme-lyapunov.pd b/examples/readme-lyapunov.pd new file mode 100644 index 0000000..056e6bd --- /dev/null +++ b/examples/readme-lyapunov.pd @@ -0,0 +1,16 @@ +#N canvas 0 22 565 389 10; +#X text 74 61 Lyapunov Exponent; +#X text 25 82 This value is an estimate of the attractors potential +for chaos. It will not necessarily be the same for any given run using +any arbitrary fractal. The description below attempts to put "attractors" +into three catagories.; +#X text 48 262 Don't forget \, just because an "attractor" is not chaotic +\, it does not mean that it will not generate an interesting stream +of number \, if only until they converge.; +#X text 40 151 < 0; +#X text 78 151 These are not chaotic \, may produce a "short-term" +stream of intrest; +#X text 39 179 == 0; +#X text 80 179 Attractors converge to one or more points; +#X text 40 197 > 0; +#X text 80 198 Chaos begins. Higher values indicate "more" chaos.; diff --git a/examples/readme-operation.pd b/examples/readme-operation.pd new file mode 100644 index 0000000..be93969 --- /dev/null +++ b/examples/readme-operation.pd @@ -0,0 +1,34 @@ +#N canvas 159 133 675 651 10; +#X msg 56 219 reset ; +#X msg 56 240 param ; +#X text 36 280 As to the exact variable and parameter ranges to use +\, you will have to consult each fractals help file. You can also use +the "Searching" functions to randomly find a new attractor set \, and +then use those values in either a set of messages to the fractal \, +or in its creation arguments.; +#X msg 56 198 reset; +#X text 98 199 sets the variables back to their initial state **; +#X text 181 221 sets the variables to an explicit state ***; +#X text 195 242 sets parameters to explicit state ****; +#X text 34 26 Create a fractal with or without a set of variables and +parameters \, passed as creation arguments. Without the creation arguments +\, the class defaults will be used for the fractal. With the arguments +\, a new fractal is created using the arguments as the defaults.; +#X text 35 104 To use a fractal \, create the instance \, and optionally +pass it an initial state of variables and a set of parameters. Then +repeatedly 'bang' on the input to iterate thru the fractals variable +states. Using a 'reset' message will return the variables to their +initial state \, or to the explicit values passed.; +#X text 38 369 ** - The initial state can be explicitly set by passing +the arguments at creation time for the fractal \, or (without creation +arguments) the class default value will be used.; +#X text 37 414 *** - When setting the variables to an arbitrary state +\, the stream may not be in a "stable" state. You may need to iterate +the fractal several hundred (or thousand) times to obtain a "stable" +state. If you pass a set of variables that were taken from the 'search' +(or 'show') results \, the values most likely will be in a "stable" +condition.; +#X text 38 500 **** - Do remember that not all combinations of parameters +result in an attractor set.; +#X text 234 577 chaos \, version 2 by Ben Bogart and Michael McGonagle. +Copyright 2003; diff --git a/examples/readme-parameter-ranges.pd b/examples/readme-parameter-ranges.pd new file mode 100644 index 0000000..27fe5f0 --- /dev/null +++ b/examples/readme-parameter-ranges.pd @@ -0,0 +1,23 @@ +#N canvas 0 22 499 399 10; +#X text 33 275 The "classification" of an attractor set uses the full +range of the fractals acceptable parameter ranges. As this method of +"classification" is relative \, it will not describe each fractal uniquely +\, but rather can be used to compare attractor sets that have similar +(closely related) parameter values. NOTE: there needs to be a way to +increase the granularity of the classification system...; +#X text 35 21 Parameter Ranges - Once you have an operational fractal +external \, it is important to make sure that the assigned ranges for +each of the parameters are "optimized" to limit the random number generator +to those ranges. This is important when a variable can only range between +(-1 .. 1) and you have declared that it can range from (-100 .. 100). +Because of the much wider search space \, there is less likelyhood +of finding anything useful \, or at least make the search times longer +due to higher failure rates.; +#X text 35 147 If you are unsure of what the ranges are \, you can +either figure them out mathematically \, or use the "brute-force" method +and iterate over ranges of the defined parameters. The points that +return a fractal (even ones that converge) will give an indication +as to the acceptable ranges for each param. Once you have determined +those ranges \, adjust them in your '*.frac' file and re-make the external +for your fractal. (Or you can just edit the Macros in the C code \, +if you are comfortable with that.); diff --git a/examples/readme-searching.pd b/examples/readme-searching.pd new file mode 100644 index 0000000..0135779 --- /dev/null +++ b/examples/readme-searching.pd @@ -0,0 +1,101 @@ +#N canvas 39 41 1031 669 10; +#X msg 471 344 show; +#X msg 470 295 seed; +#X msg 470 314 seed number; +#X msg 469 234 elyapunov; +#X msg 467 118 constrain; +#X text 601 76 random search for an attractor; +#X text 508 345 displays info on attractor to console; +#X text 543 119 restores full param search area; +#X text 632 138 based on current params \, limits to percentage of +range; +#X msg 465 76 search ; +#X msg 467 137 constrain ; +#X msg 467 156 constrain ; +#X msg 468 200 lyapunov ; +#X msg 465 57 search; +#X text 516 57 random search for an attractor \, variables use defaults +; +#X text 17 403 The search method implemented performs the following: +; +#X text 41 418 1 Set the params randomly based on allowed ranges; +#X text 41 432 2 Calculate the Lyapunov Exponent; +#X text 41 447 3 If the Lyapunov Exponent is within allowed range \, +return the attractor set; +#X text 19 39 Searching for an attractor set can be as simple as sending +a 'search' message to a fractal. This will search the fractals allowable +parameter limits for an attractor set.; +#X text 39 183 arg[1] = Lyapunov Exponent; +#X msg 469 265 classify ; +#X text 591 266 Used to set the "granularity" of the classification +; +#X text 17 323 The Lyapunov Exponent for the attractor set will indicates +one of three states \, (1) Convergence [a negative value] \, (2) Stability +[0 \, of values close to 0] \, and (3) Chaos [a positive value]. Each +class will have different ranges of Lyapunov Exponent.; +#X text 39 196 arg[2] = Classification String ****; +#X text 16 513 **** - The classification method was adopted from Julian +Sprott's method of classification. While it is an arbitrary system +\, and does not "uniquely" identify an attractor set \, it is used +to show a relationship with other attractor sets with similar values. +; +#X text 558 313 seeds search random number generator with number * +; +#X text 507 296 seeds search random number generator with time *; +#X text 543 235 calculates an extended Lyapunov Exponent **; +#X text 648 157 params are limited to explicit ranges ***; +#X text 473 419 * - all fractals of all classes currently share the +same random number generator.; +#X text 473 452 ** - this performs a Lyapunov Exponent calculation +for each variable in the attractor. Ideally \, all results should be +approximately the same. This is an experimental function.; +#X text 473 502 *** - expects there to be a low and high range limit +for each param in the fractal equation.; +#X text 483 217 sets search limits and failure count for Lyapunov Exponent +; +#X text 37 15 Searching - the art of chaos.; +#N canvas 0 22 464 316 simple_example 0; +#X obj 166 106 latoocarfian; +#X msg 173 38 search; +#X text 32 238 This example creates a 'latoocarfian' fractal with the +class defaults. When a search is performed \, the initial state for +the variables are set to the class defaults.; +#X obj 131 14 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1 +-1; +#X floatatom 166 211 10 0 0 0 X - -; +#X floatatom 185 194 10 0 0 1 Y - -; +#X msg 166 16 reset; +#X msg 183 61 show; +#X obj 205 173 print results; +#X obj 225 152 print vars; +#X obj 245 132 print params; +#X connect 0 0 4 0; +#X connect 0 1 5 0; +#X connect 0 2 8 0; +#X connect 0 3 9 0; +#X connect 0 4 10 0; +#X connect 1 0 0 0; +#X connect 3 0 0 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X restore 286 18 pd simple_example; +#X text 39 210 arg[3] = failure rate before solution *****; +#X text 16 581 ***** - the failure rate is a percentage of the actual +number of failures until a solution is found over the total number +of times the search algorithm will be executed before giving up. This +limit is set via the 'lyapunov' message. This number will also be influenced +by the 'low' and 'high' ranges set.; +#X text 19 93 The values returned from a 'search' message use the 'search' +outlets. These three outlets encapsulate that three pieces of data +of interest. The first of the 'search' outlets holds a list of the +results. This includes:; +#X text 39 170 arg[0] = 'show' \, 'search' \, or 'invalid'; +#X text 18 269 Most likely \, you won't see any failures ('invalid') +\, unless you mess with the 'constrain' or 'lyapunov' messages. 'show' +is returned when you use the 'show' message.; +#X obj 153 376 readme-lyapunov; +#X text 43 475 4 If the Limit Count has been exceeded \, return 'invalid' +\, else goto 1; +#X text 18 154 Search Outlet 0:; +#X text 18 227 Search Outlet 1: list of current variables; +#X text 18 243 Search Outlet 2: list of parameter set; diff --git a/examples/search-tools.pd b/examples/search-tools.pd new file mode 100644 index 0000000..f00a011 --- /dev/null +++ b/examples/search-tools.pd @@ -0,0 +1,186 @@ +#N canvas 619 310 464 533 10; +#X obj -97 556 outlet; +#X obj -97 2 cnv 15 450 220 empty empty Searching_Commands 2 9 1 10 +-233017 -66577 0; +#X msg 104 83 constrain; +#X msg 104 104 constrain \$1; +#X text -77 104 % Constraint; +#X text -77 82 No Constraint; +#X msg 104 30 search; +#X obj 221 52 nbx 5 17 -1e+37 1e+37 0 0 \$0-search_v2 empty empty 0 +-6 1153 10 -262144 -1 -1 0 256; +#X obj 172 52 nbx 5 17 -1e+37 1e+37 0 0 \$0-search_v1 empty empty 0 +-6 1153 10 -262144 -1 -1 0 256; +#X text -78 48 Search w/ inits; +#X text -78 29 Search w/ default inits; +#X obj 86 143 bng 17 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X text -76 142 Set Lyapunov Limits; +#X obj 287 143 nbx 5 17 -1e+37 1e+37 0 0 \$0-lyapunov_v3 empty failure +0 -6 1153 10 -262144 -1 -1 0 256; +#X obj 238 143 nbx 5 17 -1e+37 1e+37 0 0 \$0-lyapunov_v2 empty high +0 -6 1153 10 -262144 -1 -1 0 256; +#X obj 189 143 nbx 5 17 -1e+37 1e+37 0 0 \$0-lyapunov_v1 empty low +0 -6 1153 10 -262144 -1 -1 0 256; +#N canvas 0 22 509 236 lyapunov 0; +#X obj 42 26 inlet; +#X obj 83 26 r \$0-lyapunov_v1; +#X obj 101 61 pack f f f; +#X obj 203 27 r \$0-lyapunov_v2; +#X obj 320 27 r \$0-lyapunov_v3; +#X msg 101 84 lyapunov \$1 \$2 \$3; +#X obj 101 108 s \$0-outlet; +#X connect 0 0 2 0; +#X connect 1 0 2 0; +#X connect 2 0 5 0; +#X connect 3 0 2 1; +#X connect 4 0 2 2; +#X connect 5 0 6 0; +#X restore 106 143 pd lyapunov; +#X obj 86 52 bng 17 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#N canvas 0 22 374 205 search 0; +#X obj 104 104 pack f f; +#X msg 104 127 search \$1 \$2; +#X obj 83 26 r \$0-search_v1; +#X obj 186 26 r \$0-search_v2; +#X obj 94 63 f; +#X obj 104 151 s \$0-outlet; +#X obj 18 26 inlet; +#X connect 0 0 1 0; +#X connect 1 0 5 0; +#X connect 2 0 4 1; +#X connect 3 0 0 1; +#X connect 4 0 0 0; +#X connect 6 0 4 0; +#X restore 104 52 pd search; +#X text -76 164 Extended Lyapunov; +#X msg 104 165 elyapunov; +#X msg 104 186 show; +#X text -75 198 Get Attractor Info; +#X obj 104 226 s \$0-outlet; +#X obj -97 535 r \$0-outlet; +#X obj -14 535 inlet; +#X obj -14 556 s \$0-inlet; +#X obj -97 226 cnv 15 450 300 empty empty Search_Results 2 9 1 10 -233017 +-66577 0; +#N canvas 48 644 700 296 get_results 0; +#X msg 5 39 set \$1; +#X obj 5 17 symbol; +#X obj 5 61 outlet; +#X obj 150 38 s \$0-lyapunov; +#X obj 190 89 s \$0-failure_rate; +#X obj 319 32 s \$0-v1; +#X obj 343 53 s \$0-v2; +#X obj 367 75 s \$0-v3; +#X obj 473 31 s \$0-p1; +#X obj 497 52 s \$0-p2; +#X obj 521 74 s \$0-p3; +#X obj 170 62 s \$0-classification; +#X obj 44 222 r \$0-classification; +#X msg 44 243 set \$1; +#X obj 44 264 outlet; +#X obj 5 -6 r \$0-inlet; +#X obj 80 117 print debug; +#X obj 131 11 unpack s 0 s 0; +#X obj 319 9 unpack 0 0 0 0 0 0; +#X obj 391 96 s \$0-v4; +#X obj 415 117 s \$0-v5; +#X obj 440 138 s \$0-v6; +#X obj 473 9 unpack 0 0 0 0 0 0; +#X obj 545 96 s \$0-p4; +#X obj 569 117 s \$0-p5; +#X obj 594 137 s \$0-p6; +#X obj 318 -12 r \$0-inlet_var; +#X obj 473 -11 r \$0-inlet_param; +#X connect 0 0 2 0; +#X connect 1 0 0 0; +#X connect 12 0 13 0; +#X connect 13 0 14 0; +#X connect 15 0 1 0; +#X connect 15 0 17 0; +#X connect 17 1 3 0; +#X connect 17 2 11 0; +#X connect 17 3 4 0; +#X connect 18 0 5 0; +#X connect 18 1 6 0; +#X connect 18 2 7 0; +#X connect 18 3 19 0; +#X connect 18 4 20 0; +#X connect 18 5 21 0; +#X connect 22 0 8 0; +#X connect 22 1 9 0; +#X connect 22 2 10 0; +#X connect 22 3 23 0; +#X connect 22 4 24 0; +#X connect 22 5 25 0; +#X connect 26 0 18 0; +#X connect 27 0 22 0; +#X restore -14 267 pd get_results; +#X msg -14 288 search; +#X msg 79 288 NOCBNS; +#X text 184 290 Classification; +#X obj 79 309 nbx 10 17 -1e+37 1e+37 0 0 empty \$0-lyapunov empty 0 +-6 577 10 -262144 -1 -1 -0.482697 256; +#X obj 79 330 nbx 10 17 -1e+37 1e+37 0 0 empty \$0-failure_rate empty +0 -6 577 10 -262144 -1 -1 0.005 256; +#X obj -14 371 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-v1 empty 0 -6 577 +10 -262144 -1 -1 0 256; +#X obj -14 391 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-v2 empty 0 -6 577 +10 -262144 -1 -1 0 256; +#X obj -14 411 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-v3 empty 0 -6 577 +10 -262144 -1 -1 0 256; +#X obj 111 371 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-p1 empty 0 -6 577 +10 -262144 -1 -1 0.17869 256; +#X obj 111 391 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-p2 empty 0 -6 577 +10 -262144 -1 -1 0.437724 256; +#X obj 111 411 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-p3 empty 0 -6 577 +10 -262144 -1 -1 -2.31304 256; +#X text 183 331 Failure Rate; +#X text 184 309 Lyapunov Exponent; +#X text 48 372 Var 1; +#X text 48 392 Var 2; +#X text 48 412 Var 3; +#X text 174 373 Param 1; +#X text 174 393 Param 2; +#X text 174 413 Param 3; +#X obj 188 164 readme-lyapunov; +#X obj 171 29 readme-searching; +#X obj -14 431 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-v4 empty 0 -6 577 +10 -262144 -1 -1 0 256; +#X obj -14 451 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-v5 empty 0 -6 577 +10 -262144 -1 -1 0 256; +#X obj -14 471 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-v6 empty 0 -6 577 +10 -262144 -1 -1 0 256; +#X obj 111 431 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-p4 empty 0 -6 577 +10 -262144 -1 -1 -2.74459 256; +#X obj 111 451 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-p5 empty 0 -6 577 +10 -262144 -1 -1 0.00541449 256; +#X obj 111 471 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-p6 empty 0 -6 577 +10 -262144 -1 -1 1.3485 256; +#X text 48 432 Var 4; +#X text 48 452 Var 5; +#X text 48 472 Var 6; +#X text 174 433 Param 4; +#X text 174 453 Param 5; +#X text 174 473 Param 6; +#X obj 62 535 inlet; +#X obj 166 535 inlet; +#X obj 62 556 s \$0-inlet_var; +#X obj 166 556 s \$0-inlet_param; +#X obj 198 104 nbx 5 17 -1e+37 1e+37 0 0 empty empty % 0 -6 1 10 -262144 +-1 -1 0 256; +#X connect 2 0 23 0; +#X connect 3 0 23 0; +#X connect 6 0 23 0; +#X connect 11 0 16 0; +#X connect 17 0 18 0; +#X connect 20 0 23 0; +#X connect 21 0 23 0; +#X connect 24 0 0 0; +#X connect 25 0 26 0; +#X connect 28 0 29 0; +#X connect 28 1 30 0; +#X connect 62 0 64 0; +#X connect 63 0 65 0; +#X connect 66 0 3 0; -- cgit v1.2.1