sim_params class in Global context

This object groups all simulator parameters so they can be loaded or saved with a single call (see scripts/standard_loadsave.inc). For other purposes please use specific objects, like Simulator, World, Populations, etc.

222 members:

integer autosaveperiod
integer, 0 .. 100000

Save backup

Save simulation state once every n-th event
(events are defined by the script. For 'standard.expdef' it is after each death).
Save EXPT file first to initialize name for autosave files.

float bnoise_struct
float, 0 .. 10
default=0

Body disturbance

When >0, body constructs of creatures (position of Parts) will be randomly disturbed when they are created.

float bnoise_vel
float, 0 .. 10
default=0

Initial movement

Random velocities will be applied to all body Parts (in MechaStick) or rigid segments (in ODE) of newly created creatures.

integer changedProperty
integer

last changed property #

string changedPropertyId
string

last changed property id

integer createrr
integer, 0 .. 2
  • 0 = Ignore
  • 1 = Show summary (default)
  • 2 = Show details
  • Object creation errors

    integer creatwarnfail
    integer, 0 .. 1 (false/true)

    Fail on warnings

    Creatures grown with warnings will not be simulated.

    string expdef
    string

    Experiment definition

    Choose the experiment framework
    (in Windows GUI, confirm by pressing 'Apply')

    Stop the simulation before selecting another experiment definition.
    It is a good practice to initialize the experiment before running the simulation.

    string expdef_info
    multiline string

    Description

    string expdef_title
    string

    Title

    float f0_c_del
    float, 0 .. 100
    default=5

    Delete connection

    float f0_c_new
    float, 0 .. 100
    default=5

    New connection

    float f0_c_wei
    float, 0 .. 100
    default=10

    Change weight

    float f0_j_del
    float, 0 .. 100
    default=5

    Delete joint

    float f0_j_new
    float, 0 .. 100
    default=5

    New joint

    float f0_j_rsf
    float, 0 .. 100
    default=10

    Rotational stiffness

    float f0_j_stf
    float, 0 .. 100
    default=10

    Stiffness

    float f0_j_stm
    float, 0 .. 100
    default=10

    Stamina

    float f0_n_del
    float, 0 .. 100
    default=5

    Delete neuron

    float f0_n_new
    float, 0 .. 100
    default=5

    New neuron

    float f0_n_prp
    float, 0 .. 100
    default=10

    Change properties

    integer f0_nodel_tag
    integer, 0 .. 1 (false/true)
    default=1

    Respect the 'delete inhibit' tag

    You can tag elements using their 'i' field and the i="mi=d" tag.
    Mutations will not delete such elements.
    The i="mi=dm" combination is allowed.

    integer f0_nomod_tag
    integer, 0 .. 1 (false/true)
    default=1

    Respect the 'modify inhibit' tag

    You can tag elements using their 'i' field and the i="mi=m" tag.
    Mutations will not modify properties of such elements.
    The i="mi=md" combination is allowed.

    float f0_p_asm
    float, 0 .. 100
    default=10

    Assimilation

    float f0_p_del
    float, 0 .. 100
    default=5

    Delete part

    float f0_p_frc
    float, 0 .. 100
    default=10

    Friction

    float f0_p_ing
    float, 0 .. 100
    default=10

    Ingest

    float f0_p_mas
    float, 0 .. 100
    default=10

    Mass

    float f0_p_new
    float, 0 .. 100
    default=5

    New part

    float f0_p_pos
    float, 0 .. 100
    default=10

    Position

    float f0_p_swp
    float, 0 .. 100
    default=10

    Swap parts

    integer f0Fuzzy_maxRules
    integer, 0 .. 999

    Max. rules

    Maximum number of fuzzy rules

    integer f0Fuzzy_maxSets
    integer, 0 .. 999

    Max. sets

    Maximum number of fuzzy sets

    float f0Fuzzy_prob0
    float, 0 .. 1

    Add new fuzzy set (with simple rule)

    Probability of adding new fuzzy set with simple rule, which uses this set (1=proceed on all genes, 0.1=proceed on ten percent)

    float f0Fuzzy_prob1
    float, 0 .. 1

    Remove fuzzy set

    Probability of removing fuzzy set (1=proceed on all genes, 0.1=proceed on ten percent)

    float f0Fuzzy_prob2
    float, 0 .. 1

    Add new rule

    Probability of adding new rule (1=proceed on all genes, 0.1=proceed on ten percent)

    float f0Fuzzy_prob3
    float, 0 .. 1

    Remove rule

    Probability of removing rule (1=proceed on all genes, 0.1=proceed on ten percent)

    float f0Fuzzy_prob4
    float, 0 .. 1

    Add new input/output to existing rule

    Probability of adding new input or output to exisitng rule (1=proceed on all genes, 0.1=proceed on ten percent)

    float f0Fuzzy_prob5
    float, 0 .. 1

    Remove input/output from existing rule

    Probability of removing input or output from exisitng rule (1=proceed on all genes, 0.1=proceed on ten percent)

    string f1_mut_exmod
    string

    Excluded modifiers

    Modifiers that will not be added nor deleted during mutation
    (all: RrLlAaCcFfMmSsIiQqWwEe)

    float f1_nmConn
    float, 0 .. 100
    default=0.1

    Add/remove neural connection

    float f1_nmNeu
    float, 0 .. 100
    default=0.05

    Add/remove a neuron

    Adds a (connected) neuron or removes a neuron

    float f1_nmProp
    float, 0 .. 100
    default=0.1

    Add/remove neuron property setting

    float f1_nmVal
    float, 0 .. 100
    default=0.05

    Change property value

    float f1_nmWei
    float, 0 .. 100
    default=1

    Change connection weight

    float f1_smComma
    float, 0 .. 100
    default=0.02

    Add/remove a comma ,

    float f1_smJunct
    float, 0 .. 100
    default=0.02

    Add/remove a branch ( )

    float f1_smModif
    float, 0 .. 100
    default=0.1

    Add/remove a modifier

    Modifiers: RrLlAaCcFfMmSsIiQqWwEe

    float f1_smX
    float, 0 .. 100
    default=0.05

    Add/remove a stick X

    integer f1_xo_propor
    integer, 0 .. 1 (false/true)
    default=1

    Proportional crossover

    Cross over (exchange) corresponding segments of the two parent genotypes?

    f1 uses a two-point crossing over.
    If this option is turned on, cut points will be selected proportionally to neural genes.
    Thus, if both parents have the same number of neurons, then this will be preserved in their children.

    float f2_mutAddOper
    float, 0 .. 1
    default=0.4

    Add element

    float f2_mutConnElem
    float, 0 .. 1
    default=0.33

    - add connection

    float f2_mutDelOper
    float, 0 .. 1
    default=0.1

    Delete element

    float f2_mutHandleOper
    float, 0 .. 1
    default=0.3

    Change handle

    float f2_mutJointElem
    float, 0 .. 1
    default=0.33

    - add joint

    float f2_mutNeuroElem
    float, 0 .. 1
    default=0.33

    - add neuron

    float f2_mutPropOper
    float, 0 .. 1
    default=0.2

    Change properties

    float f3_mutDelIns
    float, 0 .. 1
    default=0.1

    Deletion/insertion

    integer f3_mutDelInsLength
    integer, 1 .. 100
    default=5

    - length of changed sequence

    float f3_mutDelInsPerChar
    float, 0 .. 1
    default=0.05

    - probability per char

    float f3_mutDuplication
    float, 0 .. 1
    default=0.05

    Gene duplication

    float f3_mutSubstitution
    float, 0 .. 1
    default=0.6

    Substitution

    float f3_mutSubstPerChar
    float, 0 .. 1
    default=0.1

    - probability per char

    float f3_mutTranslocation
    float, 0 .. 1
    default=0.15

    Translocation

    float f3_xovCrossingOver
    float, 0 .. 1
    default=0.2

    Crossing over

    float f3_xovGeneTransfer
    float, 0 .. 1
    default=0.8

    Horizontal gene transfer

    float f4_mut_add
    float, 0 .. 100
    default=50

    Add node

    mutation: probability of adding a node

    float f4_mut_add_conn
    float, 0 .. 100
    default=15

    - add connection

    add node mutation: probability of adding a neural connection

    float f4_mut_add_div
    float, 0 .. 100
    default=20

    - add division

    add node mutation: probability of adding a division

    float f4_mut_add_neupar
    float, 0 .. 100
    default=5

    - add neuron property

    add node mutation: probability of adding a neuron property/modifier

    float f4_mut_add_rep
    float, 0 .. 100
    default=10

    - add repetition

    add node mutation: probability of adding a repetition

    float f4_mut_add_simp
    float, 0 .. 100
    default=50

    - add simple node

    add node mutation: probability of adding a random, simple gene

    float f4_mut_del
    float, 0 .. 100
    default=20

    Delete node

    mutation: probability of deleting a node

    float f4_mut_mod
    float, 0 .. 100
    default=30

    Modify node

    mutation: probability of changing a node

    integer filecomm
    integer, 0 .. 1 (false/true)
    default=1

    Show file comments

    Display comments encountered in opened files

    integer gen_extmutinfo
    integer, 0 .. 2
  • 0 = Off (default)
  • 1 = Method ID
  • 2 = Method description
  • Extended mutation info

    If active, information about employed mutation method will be stored in the 'info' field of each mutated genotype.

    integer gen_hilite
    integer, 0 .. 1 (false/true)
    default=1

    Use syntax highlighting

    Use colors for genes?
    (slows down viewing/editing of huge genotypes)

    integer gen_hist
    integer, 0 .. 1 (false/true)
    default=0

    Remember history of genetic operations

    Required for phylogenetic analysis

    integer genkonw0
    integer, 0 .. 1 (false/true)

    f1 converter

    Original Framsticks genotype format

    integer genkonw1
    integer, 0 .. 1 (false/true)

    f2 converter

    Similarity encoding

    integer genkonw2
    integer, 0 .. 1 (false/true)

    f3 converter

    Biological encoding

    integer genkonw3
    integer, 0 .. 1 (false/true)

    f4 converter

    Developmental encoding

    object genolib

    gene pools object

    integer genoper_f0
    integer, 0 .. 1
  • 0 = Default
  • 1 = Fuzzy control system
  • Operators for f0

    integer genoper_f1
    integer, 0 .. 0
  • 0 = Default
  • Operators for f1

    integer genoper_f2
    integer, 0 .. 0
  • 0 = Default
  • Operators for f2

    integer genoper_f3
    integer, 0 .. 0
  • 0 = Default
  • Operators for f3

    integer genoper_f4
    integer, 0 .. 0
  • 0 = Default
  • Operators for f4

    integer groupchk
    integer, 0 .. 1 (false/true)

    Check genotypes added to groups

    integer importchk
    integer, 0 .. 1 (false/true)

    Check imported genotypes

    object livelib

    populations object

    integer loadchk
    integer, 0 .. 1 (false/true)

    Check genotypes loaded from experiment

    float maxjoint
    float, 0 .. 100
    default=2

    Maximal joint length

    float minjoint
    float, 0 .. 100
    default=0

    Minimal joint length

    integer neuadd_N
    integer, 0 .. 1 (false/true)

    Neuron (N)

    Standard neuron

    Characteristics:
    supports any number of inputs
    provides output value
    does not require location in body


    Properties:
    Inertia (in) float 0..1
    Force (fo) float 0..999
    Sigmoid (si) float -99999..99999
    State (s) float -1..1

    integer neuadd_Nu
    integer, 0 .. 1 (false/true)

    Unipolar neuron [EXPERIMENTAL!] (Nu)

    Works like standard neuron (N) but the output value is scaled to 0...+1 instead of -1...+1.
    Having 0 as one of the saturation states should help in "gate circuits", where input signal is passed through or blocked depending on the other singal.

    Characteristics:
    supports any number of inputs
    provides output value
    does not require location in body


    Properties:
    Inertia (in) float 0..1
    Force (fo) float 0..999
    Sigmoid (si) float -99999..99999
    State (s) float -1..1

    integer neuadd_G
    integer, 0 .. 1 (false/true)

    Gyroscope (G)

    Equilibrium sensor.
    0=the stick is horizontal
    +1/-1=the stick is vertical

    Characteristics:
    does not use inputs
    provides output value
    should be located on a Joint

    integer neuadd_T
    integer, 0 .. 1 (false/true)

    Touch (T)

    Touch sensor.
    -1=no contact
    0=just touching
    >0=pressing, value depends on the force applied

    Characteristics:
    does not use inputs
    provides output value
    should be located on a Part


    Properties:
    Range (r) float 0..1

    integer neuadd_S
    integer, 0 .. 1 (false/true)

    Smell (S)

    Smell sensor. Aggregated "smell of energy" experienced from all energy objects (creatures and food pieces).
    Close objects have bigger influence than the distant ones: for each energy source, its partial feeling is proportional to its energy/(distance^2)

    Characteristics:
    does not use inputs
    provides output value
    should be located on a Part

    integer neuadd_*
    integer, 0 .. 1 (false/true)

    Constant (*)

    Constant value

    Characteristics:
    does not use inputs
    provides output value
    does not require location in body

    integer neuadd_|
    integer, 0 .. 1 (false/true)

    Bend muscle (|)

    Characteristics:
    uses single input
    does not provide output value
    should be located on a Joint


    Properties:
    power (p) float 0.01..1
    bending range (r) float 0..1

    integer neuadd_@
    integer, 0 .. 1 (false/true)

    Rotation muscle (@)

    Characteristics:
    uses single input
    does not provide output value
    should be located on a Joint


    Properties:
    power (p) float 0.01..1

    integer neuadd_D
    integer, 0 .. 1 (false/true)

    Differentiate (D)

    Calculate the difference between the current and previous input value. Multiple inputs are aggregated with respect to their weights

    Characteristics:
    supports any number of inputs
    provides output value
    does not require location in body

    integer neuadd_Fuzzy
    integer, 0 .. 1 (false/true)

    Fuzzy system [EXPERIMENTAL!] (Fuzzy)

    Refer to publications to learn about this neuron

    Characteristics:
    supports any number of inputs
    provides output value
    does not require location in body


    Properties:
    number of fuzzy sets (ns) integer
    number of rules (nr) integer
    fuzzy sets (fs) string
    fuzzy rules (fr) string

    integer neuadd_VEye
    integer, 0 .. 1 (false/true)

    Vector Eye [EXPERIMENTAL!] (VEye)

    Characteristics:
    uses single input
    provides output value
    should be located on a Part


    Properties:
    target.x (tx) float
    target.y (ty) float
    target.z (tz) float
    target shape (ts) string
    perspective (p) float 0.1..10
    scale (s) float 0.1..100
    show hidden lines (h) integer 0..1
    output lines count (each line needs four channels) (o) integer 0..99
    debug (d) integer 0..1

    integer neuadd_VMotor
    integer, 0 .. 1 (false/true)

    Visual-Motor Cortex [EXPERIMENTAL!] (VMotor)

    Must be connected to the VEye and properly set up.

    Characteristics:
    supports any number of inputs
    provides output value
    does not require location in body


    Properties:
    number of basic features (noIF) integer
    number of degrees of freedom (noDim) integer
    parameters (params) string

    integer neuadd_Sti
    integer, 0 .. 1 (false/true)

    Sticky [EXPERIMENTAL!] (Sti)

    Characteristics:
    uses single input
    does not provide output value
    should be located on a Part

    integer neuadd_LMu
    integer, 0 .. 1 (false/true)

    Linear muscle [EXPERIMENTAL!] (LMu)

    Characteristics:
    uses single input
    does not provide output value
    should be located on a Joint


    Properties:
    power (p) float 0.01..1

    integer neuadd_Water
    integer, 0 .. 1 (false/true)

    Water detector (Water)

    Output signal:
    0=on or above water surface
    1=under water (deeper than 1)
    0..1=in the transient area just below water surface

    Characteristics:
    does not use inputs
    provides output value
    should be located on a Part

    integer neuadd_Energy
    integer, 0 .. 1 (false/true)

    Energy level (Energy)

    The current energy level divided by the initial energy level.
    Usually falls from initial 1.0 down to 0.0 and then the creature dies. It can rise above 1.0 if enough food is ingested

    Characteristics:
    does not use inputs
    provides output value
    does not require location in body

    integer neuadd_Ch
    integer, 0 .. 1 (false/true)

    Channelize (Ch)

    Combines all input signals into a single multichannel output; Note: ChSel and ChMux are the only neurons which support multiple channels. Other neurons discard everything except the first channel.

    Characteristics:
    supports any number of inputs
    provides output value
    does not require location in body

    integer neuadd_ChMux
    integer, 0 .. 1 (false/true)

    Channel multiplexer (ChMux)

    Outputs the selected channel from the second (multichannel) input. The first input is used as the selector value (-1=select first channel, .., 1=last channel)

    Characteristics:
    uses 2 inputs
    provides output value
    does not require location in body

    integer neuadd_ChSel
    integer, 0 .. 1 (false/true)

    Channel selector (ChSel)

    Outputs a single channel (selected by the "ch" parameter) from multichannel input

    Characteristics:
    uses single input
    provides output value
    does not require location in body


    Properties:
    channel (ch) integer

    integer neuadd_Rnd
    integer, 0 .. 1 (false/true)

    Random noise (Rnd)

    Generates random noise (subsequent random values in the range of -1..+1)

    Characteristics:
    does not use inputs
    provides output value
    does not require location in body

    integer neuadd_Sin
    integer, 0 .. 1 (false/true)

    Sinus generator (Sin)

    Output frequency = f0+input

    Characteristics:
    uses single input
    provides output value
    does not require location in body


    Properties:
    base frequency (f0) float -1..1
    time (t) float 0..6.28319

    integer ncl_N
    integer, 0 .. 1 (false/true)

    Neuron (N)

    Standard neuron

    Characteristics:
    supports any number of inputs
    provides output value
    does not require location in body


    Properties:
    Inertia (in) float 0..1
    Force (fo) float 0..999
    Sigmoid (si) float -99999..99999
    State (s) float -1..1

    integer ncl_Nu
    integer, 0 .. 1 (false/true)

    Unipolar neuron [EXPERIMENTAL!] (Nu)

    Works like standard neuron (N) but the output value is scaled to 0...+1 instead of -1...+1.
    Having 0 as one of the saturation states should help in "gate circuits", where input signal is passed through or blocked depending on the other singal.

    Characteristics:
    supports any number of inputs
    provides output value
    does not require location in body


    Properties:
    Inertia (in) float 0..1
    Force (fo) float 0..999
    Sigmoid (si) float -99999..99999
    State (s) float -1..1

    integer ncl_G
    integer, 0 .. 1 (false/true)

    Gyroscope (G)

    Equilibrium sensor.
    0=the stick is horizontal
    +1/-1=the stick is vertical

    Characteristics:
    does not use inputs
    provides output value
    should be located on a Joint

    integer ncl_T
    integer, 0 .. 1 (false/true)

    Touch (T)

    Touch sensor.
    -1=no contact
    0=just touching
    >0=pressing, value depends on the force applied

    Characteristics:
    does not use inputs
    provides output value
    should be located on a Part


    Properties:
    Range (r) float 0..1

    integer ncl_S
    integer, 0 .. 1 (false/true)

    Smell (S)

    Smell sensor. Aggregated "smell of energy" experienced from all energy objects (creatures and food pieces).
    Close objects have bigger influence than the distant ones: for each energy source, its partial feeling is proportional to its energy/(distance^2)

    Characteristics:
    does not use inputs
    provides output value
    should be located on a Part

    integer ncl_*
    integer, 0 .. 1 (false/true)

    Constant (*)

    Constant value

    Characteristics:
    does not use inputs
    provides output value
    does not require location in body

    integer ncl_|
    integer, 0 .. 1 (false/true)

    Bend muscle (|)

    Characteristics:
    uses single input
    does not provide output value
    should be located on a Joint


    Properties:
    power (p) float 0.01..1
    bending range (r) float 0..1

    integer ncl_@
    integer, 0 .. 1 (false/true)

    Rotation muscle (@)

    Characteristics:
    uses single input
    does not provide output value
    should be located on a Joint


    Properties:
    power (p) float 0.01..1

    integer ncl_D
    integer, 0 .. 1 (false/true)

    Differentiate (D)

    Calculate the difference between the current and previous input value. Multiple inputs are aggregated with respect to their weights

    Characteristics:
    supports any number of inputs
    provides output value
    does not require location in body

    integer ncl_Fuzzy
    integer, 0 .. 1 (false/true)

    Fuzzy system [EXPERIMENTAL!] (Fuzzy)

    Refer to publications to learn about this neuron

    Characteristics:
    supports any number of inputs
    provides output value
    does not require location in body


    Properties:
    number of fuzzy sets (ns) integer
    number of rules (nr) integer
    fuzzy sets (fs) string
    fuzzy rules (fr) string

    integer ncl_VEye
    integer, 0 .. 1 (false/true)

    Vector Eye [EXPERIMENTAL!] (VEye)

    Characteristics:
    uses single input
    provides output value
    should be located on a Part


    Properties:
    target.x (tx) float
    target.y (ty) float
    target.z (tz) float
    target shape (ts) string
    perspective (p) float 0.1..10
    scale (s) float 0.1..100
    show hidden lines (h) integer 0..1
    output lines count (each line needs four channels) (o) integer 0..99
    debug (d) integer 0..1

    integer ncl_VMotor
    integer, 0 .. 1 (false/true)

    Visual-Motor Cortex [EXPERIMENTAL!] (VMotor)

    Must be connected to the VEye and properly set up.

    Characteristics:
    supports any number of inputs
    provides output value
    does not require location in body


    Properties:
    number of basic features (noIF) integer
    number of degrees of freedom (noDim) integer
    parameters (params) string

    integer ncl_Sti
    integer, 0 .. 1 (false/true)

    Sticky [EXPERIMENTAL!] (Sti)

    Characteristics:
    uses single input
    does not provide output value
    should be located on a Part

    integer ncl_LMu
    integer, 0 .. 1 (false/true)

    Linear muscle [EXPERIMENTAL!] (LMu)

    Characteristics:
    uses single input
    does not provide output value
    should be located on a Joint


    Properties:
    power (p) float 0.01..1

    integer ncl_Water
    integer, 0 .. 1 (false/true)

    Water detector (Water)

    Output signal:
    0=on or above water surface
    1=under water (deeper than 1)
    0..1=in the transient area just below water surface

    Characteristics:
    does not use inputs
    provides output value
    should be located on a Part

    integer ncl_Energy
    integer, 0 .. 1 (false/true)

    Energy level (Energy)

    The current energy level divided by the initial energy level.
    Usually falls from initial 1.0 down to 0.0 and then the creature dies. It can rise above 1.0 if enough food is ingested

    Characteristics:
    does not use inputs
    provides output value
    does not require location in body

    integer ncl_Ch
    integer, 0 .. 1 (false/true)

    Channelize (Ch)

    Combines all input signals into a single multichannel output; Note: ChSel and ChMux are the only neurons which support multiple channels. Other neurons discard everything except the first channel.

    Characteristics:
    supports any number of inputs
    provides output value
    does not require location in body

    integer ncl_ChMux
    integer, 0 .. 1 (false/true)

    Channel multiplexer (ChMux)

    Outputs the selected channel from the second (multichannel) input. The first input is used as the selector value (-1=select first channel, .., 1=last channel)

    Characteristics:
    uses 2 inputs
    provides output value
    does not require location in body

    integer ncl_ChSel
    integer, 0 .. 1 (false/true)

    Channel selector (ChSel)

    Outputs a single channel (selected by the "ch" parameter) from multichannel input

    Characteristics:
    uses single input
    provides output value
    does not require location in body


    Properties:
    channel (ch) integer

    integer ncl_Rnd
    integer, 0 .. 1 (false/true)

    Random noise (Rnd)

    Generates random noise (subsequent random values in the range of -1..+1)

    Characteristics:
    does not use inputs
    provides output value
    does not require location in body

    integer ncl_Sin
    integer, 0 .. 1 (false/true)

    Sinus generator (Sin)

    Output frequency = f0+input

    Characteristics:
    uses single input
    provides output value
    does not require location in body


    Properties:
    base frequency (f0) float -1..1
    time (t) float 0..6.28319

    float nnspeed
    float, 0 .. 1000
    default=1

    NN speed

    Number of neural network simulation steps in each physics simulation step

    float odeairdrag
    float, 0 .. 0.5
    default=0.01

    Drag

    A drag force ("air drag") proportional to the velocity of mass centers of moving parts

    float odecol2bounce
    float, 0 .. 1
    default=0.1

    Bounce

    float odecol2bouncevel
    float, 0 .. 1
    default=0.01

    Bounce velocity

    float odecol2mumax
    float, 0 .. 10
    default=1

    Max. friction

    Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)

    float odecol2mumin
    float, 0 .. 10
    default=0.1

    Min. friction

    Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)

    float odecol2softcfm
    float, 0 .. 1
    default=0

    Soft CFM

    float odecolbounce
    float, 0 .. 1
    default=0.1

    Bounce

    float odecolbouncevel
    float, 0 .. 1
    default=0.01

    Bounce velocity

    float odecolmumax
    float, 0 .. 10
    default=5

    Max. friction

    Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)

    float odecolmumin
    float, 0 .. 10
    default=0.1

    Min. friction

    Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)

    float odecolsoftcfm
    float, 0 .. 1
    default=0

    Soft CFM

    float odemusclemax
    float, 0 .. 100
    default=10

    Muscle max power

    i.e. "MMMMM" if f1

    float odemusclemin
    float, 0 .. 100
    default=0

    Muscle min power

    i.e. "mmmmm" in f1

    float odemusclespeed
    float, 0 .. 10
    default=1

    Muscle speed limit

    Muscle state cannot change faster than the supplied value

    integer odeseed
    integer, 0 .. 2
  • 0 = Truly random
  • 1 = Deterministic
  • 2 = Fixed
  • Randomness

    Affects collisions.
    - 'Truly random' is closest to the standard ODE operation. Use Math.seed to influence randomness in ODE collisions
    - 'Deterministic' automatically calculates random seed in each step based on the current simulation (world) state, which makes the simulation repeatable but more random than 'Fixed'
    - 'Fixed' is completely deterministic and does not depend on Math.seed. This might negatively affect ODE accuracy

    integer odeshape
    integer, 0 .. 1
  • 0 = Cylinder
  • 1 = Box
  • Stick shape

    float odestep
    float, 0.001 .. 1
    default=0.05

    Simulation step

    float odewaterbuoy
    float, 0 .. 2
    default=1

    Water buoyancy

    float odewaterdrag
    float, 0.001 .. 1
    default=0.5

    Water drag

    integer overwrite
    integer, 0 .. 1 (false/true)

    Overwrite

    Overwite existing files or create their backups

    float randinit
    float, 0 .. 10
    default=0.01

    Random initialization

    Initialize all neuron states with uniform distribution random numbers

    integer resetonexpdef
    integer, 0 .. 1 (false/true)
    default=1

    Reset before changing experiment definition

    If turned on: when a new experiment definition is selected, default values are loaded for most of the simulator parameters, and gene pools and populations are cleared.
    When turned off: parameters from previous experiment definition will remain.

    integer running
    integer, 0 .. 1 (false/true)

    is the simulation running?

    for synchronizing the user interface state

    object signals

    Signal sources

    integer simil_method
    integer, 0 .. 1
  • 0 = New (default)
  • 1 = Old
  • Matching method

    float simil_neuro
    float, 0 .. 100
    default=0.5

    Weight of neurons count

    float simil_partdeg
    float, 0 .. 100
    default=1

    Weight of parts' degree

    float simil_parts
    float, 0 .. 100
    default=0

    Weight of parts count

    Differing number of parts is also handled by the 'part degree' similarity component.

    integer simspeed
    integer

    simulation speed

    steps/second

    integer simtype
    integer, 0 .. 1
  • 0 = MechaStick (default)
  • 1 = ODE
  • Simulation engine

    MechaStick is a fast and simple primary Framsticks simulation engine.
    ODE is Open Dynamics Engine by Russel Smith et al.

    NOTE: switching between simulation engines causes removal of all objects in the world (e.g. creatures).

    integer symAlphaSteps
    integer, 2 .. 50
    default=20

    Angular sampling (1)

    Default number of samples per full angle (#1)

    integer symBetaSteps
    integer, 2 .. 50
    default=20

    Angular sampling (2)

    Default number of samples per full angle (#2)

    integer symPosSteps
    integer, 2 .. 50
    default=10

    Position sampling

    Default number of samples per stick length

    float symResultA
    float

    resulting symmetry plane, coeff. A (set by calculateSymmetry)

    float symResultB
    float

    resulting symmetry plane, coeff. B (set by calculateSymmetry)

    float symResultC
    float

    resulting symmetry plane, coeff. C (set by calculateSymmetry)

    float symResultD
    float

    resulting symmetry plane, coeff. D (set by calculateSymmetry)

    integer time
    integer

    number of steps

    float touchrange
    float, 0 .. 100
    default=1

    T receptor range

    string usercode
    multiline string

    User script

    This script overrides the experiment definition

    integer vmdebug
    integer, 0 .. 1 (false/true)

    VM debug

    object world

    world object

    integer wrldbnd
    integer, 0 .. 2
  • 0 = None
  • 1 = Fence (default)
  • 2 = Teleport
  • Boundaries

    float wrldg
    float, 0 .. 10
    default=1

    Gravity

    You can adjust gravity for your experiments.
    The "official" setting used to evaluate and compare creatures is 1.

    string wrldmap
    multiline string

    Map

    Description of the world (Type: Blocks or Heighfield). Enter
    r <sizex> <sizey> [seed]
    to generate a random landscape, or
    m <sizex> <sizey> digits
    M <sizex> <sizey> numbers
    to provide height values.

    See also the WorldMap object.

    float wrldsiz
    float, 10 .. 1000
    default=20

    Size

    Side length of the world

    integer wrldtyp
    integer, 0 .. 2
  • 0 = Flat surface (default)
  • 1 = Blocks
  • 2 = Height field
  • Type

    float wrldwat
    float, -20 .. 30
    default=-1

    Water level

    function add

    add property (id,type,name,help)

    function add()
    function addGroup

    add group (name)

    function addGroup()
    function beep
    doesn't return a value

    beep

    function beep()

    Plays a default system sound

    function calculateSymmetry
    returns float

    Calculate symmetry

    function calculateSymmetry(Model model)

    Returns bilateral symmetry (0.0 .. 1.0) for a given Model using default precision parameters (symPosSteps,symAlphaSteps,symBetaSteps). Returns the symmetry plane, too (sets symResultA,B,C,D).
    Note: may take a long time for large creatures.

    function calculateSymmetry2
    returns float

    Calculate symmetry

    function calculateSymmetry2(Model model, integer posSteps, integer alphaSteps, integer betaSteps)

    Returns bilateral symmetry (0.0 .. 1.0) for a given Model using specified precision parameters. Returns the symmetry plane, too (sets symResultA,B,C,D).
    Note: may take a long time for large creatures.

    function calculateSymmetryForPlane
    returns float

    Calculate symmetry

    function calculateSymmetryForPlane(Model model, float A, float B, float C, float D)

    Returns bilateral symmetry (0.0 .. 1.0) for a given Model and given a specific plane defined by coefficients A, B, C, D.

    function checkpoint
    doesn't return a value

    Notify that the experiment state was significantly updated.

    function checkpoint()

    This function was previously called "autosave".

    function clear

    remove all properties

    function clear()
    function crossOver
    returns Geno

    Crossover

    function crossOver(Geno, Geno)

    returns crossed over genotype

    function eval
    doesn't return a value

    evaluate expression

    function eval(string script_expression)
    function evaluateDistance
    returns float

    evaluate model dissimilarity

    function evaluateDistance(Geno, Geno)

    calculate dissimilarity between two models created from Geno objects

    function export
    doesn't return a value

    export

    function export(string filename, integer options, integer genepool, integer population)

    Save some data to file. arguments:
    - filename
    - flags: composed of the following bit values:
    1 - experiment (works like "save" and all other bits are ignored)
    2 - genotypes
    4 - simulator parameters
    8 - simulator stats
    16 - genepool settings
    32 - population settings
    64 - do autosave
    - selected genepool
    - selected population

    function getSimplest
    returns Geno

    Get simplest genotype

    function getSimplest(integer format)

    returns the simplest genotype for a given encoding (format). 0 means f0, 4 means f4, etc.

    function import
    doesn't return a value

    import

    function import(string filename, integer options)

    Load some data from file. The second optional argument selects what section(s) will be imported:
    1 - experiment (works like "load" and can reset the simulator state!)
    2 - genotypes
    4 - simulator parameters
    8 - genepool settings
    16 - population settings
    32 - new groups will be created for imported genepools and populations
    64 - allow switching to a different expdef while importing parameters (4)

    The standard behavior (without the second argument) is to import genotypes, parameters, and genepool and population settings (2+4+8+16). Note that "64" is not included by default, because the expdef change resets all simulator parameters, which contradicts the usual meaning of "import" in Framsticks ("add data", as opposed to "load" meaning "replace data"). Moreover, using the "64" option in scripts can be dengerous, especially all expdef and show scripts should always declare the proper expdef name in their header rather than change the expdef directly. Without the "64" option, it is always safe to "import" any file in a script regardless of the current simulator state.

    function init
    doesn't return a value

    Initialize experiment

    function init()

    Performs initialization procedures, like resetting counters, states, gene pools, etc.

    function load
    doesn't return a value

    load

    function load(string filename)

    Load experiment file (calls onExpLoad() in the current experiment definition). This function is intended to replace the simulator state; the old state is cleared by automatically calling "resetToDefaults()" (only if "resetonexpdef" is enabled). Use "import" if you don't want to loose the old simulator state.

    function loadexpdef
    doesn't return a value

    Reload experiment definition

    function loadexpdef()
    function loadNeurons
    doesn't return a value

    (re)load neuron definitions

    function loadNeurons(string directory_path)
    function message
    doesn't return a value

    print message

    function message(string text, integer level)

    The second argument can be:
    -1 = debugging message
    0 = information
    1 = warning
    2 = error
    3 = critical error

    function mutate
    returns Geno

    Mutate

    function mutate(Geno)

    returns mutated Geno object from supplied Geno

    function new
    returns Simulator

    create new Simulator

    function new()
    function operReport
    doesn't return a value

    Operators report

    function operReport()

    Show available genetic operators

    function print
    doesn't return a value

    print information message

    function print(string text)

    One argument: message to be printed

    function rayIntersection
    returns float

    ray intersection

    function rayIntersection(float position_x, float position_y, float position_z, float direction_x, float direction_y, float direction_z, float max_distance)
    function remove

    remove property (index)

    function remove()
    function removeGroup

    remove group (index)

    function removeGroup()
    function resetToDefaults
    doesn't return a value

    Reset the simulator state

    function resetToDefaults()

    Clears groups and loads default values for simulator parameters, then calls onExpDefLoad() of the current experiment definition.

    function save
    doesn't return a value

    save

    function save(string filename)

    Save experiment file (calls onExpSave() in the current experiment definition)

    function sleep
    doesn't return a value

    sleep

    function sleep(integer milliseconds)

    Suspends the execution for a specified interval

    function sound
    doesn't return a value

    sound

    function sound(integer freqency_in_Hz, integer length_in_milliseconds)

    Generates a simple tone on the speaker

    function start
    doesn't return a value

    start simulation

    function start()

    called by the user interface

    function step
    doesn't return a value

    do single simulation step

    function step()
    function stop
    doesn't return a value

    stop simulation

    function stop()

    the expdef script calls this to stop simulation

    function toHTML
    returns string

    HTMLize a genotype

    function toHTML(string)

    returns genotype expressed as colored HTML

    function toHTMLshort
    returns string

    HTMLize a genotype, shorten if needed

    function toHTMLshort(string)

    returns genotype (abbreviated if needed) expressed as colored HTML

    function validate
    returns Geno

    Validate

    function validate(Geno)

    returns validated (if possible) Geno object from supplied Geno

    function wrldchg
    doesn't return a value

    Trigger world update

    function wrldchg()

    Global context