README.md

Mon, 30 Mar 2020 16:46:47 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Mon, 30 Mar 2020 16:46:47 -0500
changeset 11
762e20b8a343
child 12
0a72b8aec56a
permissions
-rw-r--r--

Added README.md

11
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
1
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
2 # Algorithm tools for Julia
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
3
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
4 Author: Tuomo Valkonen <tuomov@iki.fi>
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
5
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
6 This repository contains some general utility routines and tools for doing
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
7 iterative algorithms in Julia:
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
8
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
9 * Tools to facilitate working with `Channel`s
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
10 * Linked lists and writing them to log files.
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
11 * Structs: iteration, field replacement
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
12 * Calculation of norms, dot products, projections
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
13 * Conditional thread execution macros
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
14 * Template for conveniently writing iterative algorithms using `do`-block anonymous functions as algorithm steps, with visualisation/verbosity implemented generally in iterator.
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
15
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
16 The code is used, for example, by <http://dx.doi.org/10.5281/zenodo.3659180>.
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
17
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
18 ## Iterative algorithms example
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
19
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
20 The package includes `simple_iterate` which helps separating the computational step of iterative algorithms for visualisation routines. It is merely intended to serve as a template, as different applications require different visualisation routines to be implemented in a replacement of `simple_iterate`. The computational step is implemented as a `do`-block anonymous function that gets passed another function is a parameter for doing the verbosity on request. Example:
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
21
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
22 ```julia
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
23 using AlgTools.Iterate
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
24
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
25 params = (verbose_iter = 10, maxiter = 100,)
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
26
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
27 begin
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
28 local x = 1
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
29 simple_iterate(params) do verbose
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
30 # This is our computational step, as an anonymous
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
31 # `do`-block function. It has one parameter: `verbose`,
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
32 # itself a function.
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
33 x = x + √x
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
34 verbose() do
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
35 # This is another anonymous function that will
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
36 # only get called when decided by `verbose`.
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
37 # If we do get called, return current value
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
38 return x, nothing
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
39 end
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
40 end
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
41 end
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
42 ```
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
43 This will output
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
44 ```
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
45 10/100 J=31.051164
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
46 20/100 J=108.493699
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
47 30/100 J=234.690039
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
48 40/100 J=410.056327
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
49 50/100 J=634.799262
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
50 60/100 J=909.042928
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
51 70/100 J=1232.870172
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
52 80/100 J=1606.340254
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
53 90/100 J=2029.497673
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
54 100/100 J=2502.377071
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
55 ```
762e20b8a343 Added README.md
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
56

mercurial