Interacting with Wallace

Modes of Interaction

Julia Read-Eval-Print-Loop (REPL)

The simplest way to started with Wallace is through Julia's built-in REPL, which can be accessed by simply typing julia into the terminal (once Julia has been installed). Once the REPL has been loaded, one may use the using Wallace statement to import the Wallace environment into the workspace, allowing them to interact with Wallace.

shell> julia
...
...

julia> using Wallace

IJulia Graphical Notebook

Another way to interact with Wallace is through the IJulia, a powerful graphical web-based notebook front-end for Julia.

julia> using IJulia
julia> notebook()

ijulia> using Wallace

Script Execution

Alternatively, one may choose to import the Wallace package into a Julia script, which may then be executed via the command line, as shown below:

shell> julia my_script.jl

Loading Wallace Files

The compose function may be used to build the Julia object described by a given Wallace specification file into a concrete form. When called with only the name of the file that should be composed, Wallace will attempt to determine how to construct the object based upon its top-level type property.

julia> alg = compose("my_algorithm.cfg")

In the event that a specification file does not have a top-level type property, or one wishes to build it as a specific type, one may use the compose_as function to instruct Wallace to attempt to build the object from the description as if it were a given type.

julia> alg = compose_as("my_algorithm.cfg", "algorithm/simple_evolutionary_algorithm")

Modifications may be made to a given specification before translation, without affecting the original file, by supplying either the compose_with or compose_as_with functions with a block that accepts a given parsed specification object and performs changes to that object.

julia> alg = compose_with("my_algorithm.cfg") do cfg
  cfg["population_size"] = 100
end

julia> alg = compose_as_with("my_algorithm.cfg", "algorithm/simple_evolutionary_algorithm") do cfg
  cfg["population_size"] = 100
end

help function

Describing types

julia> help("selection/tournament")

Authors: Alice and Bob

Describing type properties

julia> help("selection/tournament:size")
The number of individuals that should participate in each tournament.

Type:     Integer
Default:  5

listall function

The listall function can be used to produce a list of all the known sub-types of a given type that have been loaded into the Wallace environment.

julia> listall("selection")
- selection/tournament
- selection/roulette
- selection/stochastic_universal_sampling
- selection/random
- selection/truncation

aliases function

The aliases function returns a list of all known aliases for a given property or type.

julia> aliases("selection/stochastic_universal_sampling")
- selection/stochastic_universal_sampling
- selection/sus

julia> aliases("mutation/bit_flip#rate")
- #rate
- #probability

version function

To see which version of Wallace you're running on your system, you may make use of the provided version function.

julia> Wallace.version()
v"0.0.1"

examples function

The examples function can be used to return a list of all the official example solutions bundled with your current version of Wallace.

julia> Wallace.examples()
- ant
- koza
- multiplexer
- one_max
- rastrigin
- symbolic_regression

To load the algorithm for one of these examples, one may use the example function with the name of the example problem you wish to build:

julia> alg = Wallace.example("ant");
julia> results = run!(alg);