sim_params class, available in: Global contextThis 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.This class has 411 members:
sdleiFtnemirepxE
int running0 .. 1 (false/true)Is the simulation running?Useful for synchronizing the user interface state.
int timeNumber of stepsSimulator.time will be removed because of its misleading name, please use Simulator.stepNumber instead.
int last_genotype_num0 .. -1
default=0
Largest previously used Genotype.numSee: Genotype.num
int last_creature_num0 .. -1
default=0
Largest previously used Creature.numSee: Creature.num
int stepNumberNumber of simulation steps
int simspeed ROSimulation speedsteps/second
string expdefExperiment definitionChoose 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_title ROTitle
multiline string expdef_info RODescription
untyped lastCheckpoint ROLast checkpointMost recently reported by the experiment definition script.
SlaveSimulators slaves ROSlave simulator objects
int cpus RONumber of detected CPUs ("cores") on this machine
World world ROWorld object
Populations populations ROPopulations object
GenePools genepools ROGene pools object
ExpProperties expproperties ROExpProperties
ExpState expstate ROExpState
GenMan genman ROGenMan object
GenoConverters genoconverters ROGenotype converters object
untyped userdataUser field
int identity ROIdentity-1 for master simulator, 0...count-1 for slaves
string version_string ROVersion stringCurrent application version as a string (human-friendly).
int version_int ROVersion integerCurrent application version as an integer.
seliF
int autosaveperiod0 .. 100000Save backupSave 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.
Slave simulators (in multithreaded experiments) ignore this setting and never create autosave files.
int overwrite0 .. 1 (false/true)
default=0
Overwrite files?Lets you choose what to do when a file is created with the same name as an already existing file: overwite the existing file or create its backup?
int filecomm0 .. 1 (false/true)
default=1
Show file commentsControls displaying comments encountered in opened files.
gnitpircs decnavdA
multiline string usercodeScript overrideYou can override any function from the original experiment definition script. Use the same function names and provide alternative implementations.
Example:

function onBorn(cr)
{
Simulator.print("A creature is born: "+cr.name);
super_onBorn(cr); //calls the original implementation
}
int vmdebug0 .. 1 (false/true)VM debug
int vm_step_limit0 .. 1000000000
default=0
VM step limitAbort any script (expdef, fitness formula, user script) when it performs too many operations - which can take more or less time depending on your machine performance. This can protect against infinite loops or unbearably long runs of untested scripts that would otherwise force you to kill the whole application. Use Simulator.vm_..._warning if you only need information about what script takes too much time without aborting it.
int vm_step_warning0 .. 1000000000
default=0
VM step warningDisplay a warning when any script (expdef, fitness formula, user script) performs too many operations - which can take more or less time depending on your machine performance. Use Simulator.vm_..._limit to prevent the application from becoming unresponsive by aborting misbehaving scripts.
float vm_time_limit0 .. 1e+09
default=0.0
VM time limitAbort any script (expdef, fitness formula, user script) when it takes too much time - measured in seconds. The actual amount of work depends on your machine performance. This can protect against infinite loops or unbearably long runs of untested scripts that would otherwise force you to kill the whole application. Use Simulator.vm_..._warning if you only need information about what script takes too much time without aborting it.
float vm_time_warning0 .. 1e+09
default=0.0
VM time warningDisplay a warning when any script (expdef, fitness formula, user script) takes too much time - measured in seconds. The actual amount of work depends on your machine performance. Use Simulator.vm_..._limit to prevent the application from becoming unresponsive by aborting misbehaving scripts.
gnildnah rorrE
int stop_on0 .. 3
  • 0 = Don't stop
  • 1 = On warnings
  • 2 = On errors (default)
  • 3 = On critical errors
  • Error level to stop running simulationIf the simulation is running and a message is emitted with at least the selected severity, the simulation will be stopped.
    int createrr0 .. 2
  • 0 = Don't print (mute)
  • 1 = Print summary (default)
  • 2 = Print details
  • Object creation errors
    int groupchk0 .. 1 (false/true)
    default=1
    Warn on adding invalid genotypesWarnings will be printed when invalid genotypes are added to a gene pool.
    int creatwarnfail0 .. 1 (false/true)Don't simulate genotypes with warningsCreatures grown with warnings will not be simulated. This helps prevent the propagation of faulty genes, because genotypes that cause warnings when interpreted will not reproduce.
    sretemaraP :tnemirepxE
    int _property_changed_index ROLast changed property index
    string _property_changed_id ROLast changed property id
    dlroW
    int wrldtyp0 .. 2
  • 0 = Flat surface (default)
  • 1 = Blocks
  • 2 = Height field
  • Type
    float wrldsiz10 .. 10000
    default=20.0
    SizeSide length of the world
    multiline string wrldmapMapDescription of the world (only applies to world types: "Blocks" or "Height field").
    To generate a random landscape, use:
    r[scaling] <sizex> <sizey> [seed]
    To generate a custom landscape, provide height values:
    m[scaling] <sizex> <sizey> digits...
    or
    M[scaling] <sizex> <sizey> numbers...

    "digits..." is a sequence of integer values 0,1,2,..,9. You may also use '-' and '|' characters for smooth slides between blocks.
    "numbers..." is a sequence of floating point values, so the "M" option provides more freedom.
    [scaling] is an optional linear scaling expression in the form of *FACTOR+OFFSET or *FACTOR-OFFSET, for example "r*0.1-2 5 5" creates a 5x5 random map with a 10% amplitude, shifted down by 2.

    See also the WorldMap object.
    float wrldwat-20 .. 200
    default=-1.0
    Water level
    int wrldbnd0 .. 2
  • 0 = None (default)
  • 1 = Fence
  • 2 = Teleport (wraparound)
  • BoundariesTeleporting a creature that is outside of the world area is attempted every 'performance sampling period' steps. Teleport succeeds only when the target location in the world is empty (there is no collision).
    float wrldg0 .. 10
    default=1.0
    GravityYou can adjust gravity for your experiments.
    The "official" setting used to evaluate and compare creatures is 1.
    int simtype0 .. 1
  • 0 = MechaStick (default)
  • 1 = ODE
  • Simulation engineMechaStick 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).
    float nnspeed0 .. 1000
    default=1.0
    NN speedNumber of neural network simulation steps in each physics simulation step
    int rndcollisions0 .. 1 (false/true)
    default=1
    Random collision orderWhen enabled, custom collision handlers are invoked in random order. This can help remove unfair bias in some experiments - for example where the same collision order in each simulation step would cause some creatures colliding with food to consume energy while other colliding creatures would starve.
    WorldSignals signals ROSignal sources
    sretemaraP EDO :dlroW
    int odeshape0 .. 1
  • 0 = Cylinder
  • 1 = Box
  • Stick shape for ball-and-stick models
    float odestep0.001 .. 1
    default=0.05
    Simulation step
    float odemusclemin0 .. 100
    default=0.0
    Muscle min poweri.e. "mmmmm" in f1
    float odemusclemax0 .. 100
    default=10.0
    Muscle max poweri.e. "MMMMM" if f1
    float odemusclespeed0 .. 10
    default=1.0
    Muscle speed limitMuscle state cannot change faster than the supplied value
    float odeairdrag0 .. 0.5
    default=0.01
    DragA drag force ("air drag") proportional to the velocity of mass centers of moving parts (ODE's "linear damping")
    float oderotdrag0 .. 0.5
    default=0.01
    Rotation dragDrag momentum acting on rotating bodies (ODE's "angular damping")
    float odewaterdrag0.001 .. 1
    default=0.5
    Water drag
    float odewaterbuoy0 .. 2
    default=1.0
    Water buoyancy
    int odeseed0 .. 2
  • 0 = Truly random
  • 1 = Deterministic
  • 2 = Fixed
  • RandomnessAffects 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 - the same seed value is set before each step. This might negatively affect ODE accuracy.
    int odesepsticks0 .. 1 (false/true)
    default=0
    Separate sticksEach stick gets a separate ODE body (like in MechaStick)
    float odeworlderp0 .. 1
    default=0.2
    ERPWorld ERP (error reduction parameter)
    float odeworldcfm0 .. 1
    default=1e-5
    CFMWorld CFM (constraint force mixing)
    snoisilloC serutaerC :sretemaraP EDO :dlroW
    float odecolmumin0 .. 10
    default=0.1
    Min. frictionMu coefficient for Parts with minimal friction (i.e. "fffff" in f1)
    float odecolmumax0 .. 10
    default=5.0
    Max. frictionMu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)
    float odecolbounce0 .. 1
    default=0.1
    Bounce
    float odecolbouncevel0 .. 1
    default=0.01
    Bounce velocity
    float odecolsoftcfm0 .. 1
    default=0.0
    Soft CFM
    float odecolsofterp0 .. 1
    default=0.0
    Soft ERP
    snoisilloC dnuorG :sretemaraP EDO :dlroW
    float odecol2mumin0 .. 10
    default=0.1
    Min. frictionMu coefficient for Parts with minimal friction (i.e. "fffff" in f1)
    float odecol2mumax0 .. 10
    default=1.0
    Max. frictionMu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)
    float odecol2bounce0 .. 1
    default=0.1
    Bounce
    float odecol2bouncevel0 .. 1
    default=0.01
    Bounce velocity
    float odecol2softcfm0 .. 1
    default=0.0
    Soft CFM
    float odecol2softerp0 .. 1
    default=0.0
    Soft ERP
    sciteneG
    int gen_hist0 .. 1 (false/true)
    default=0
    Remember history of genetic operationsRequired for phylogenetic analysis
    int gen_hilite0 .. 1 (false/true)
    default=1
    Use syntax highlightingUse colors for genes?
    (slows down viewing/editing of huge genotypes)
    int gen_extmutinfo0 .. 2
  • 0 = Off (default)
  • 1 = Method ID
  • 2 = Method description
  • Extended mutation infoIf active, information about employed mutation method will be stored in the 'info' field of each mutated genotype.
    srotarepo evitcA :sciteneG
    int genoper_f0 RO0 .. 0
  • 0 = Default
  • Operators for f0
    int genoper_f0s RO0 .. 0
  • 0 = Default
  • Operators for f0s
    int genoper_f1 RO0 .. 0
  • 0 = Default
  • Operators for f1
    int genoper_f4 RO0 .. 0
  • 0 = Default
  • Operators for f4
    int genoper_f8 RO0 .. 0
  • 0 = Default
  • Operators for f8
    int genoper_f9 RO0 .. 0
  • 0 = Default
  • Operators for f9
    int genoper_fF RO0 .. 0
  • 0 = Default
  • Operators for fF
    int genoper_fn RO0 .. 0
  • 0 = Default
  • Operators for fn
    int genoper_fB RO0 .. 0
  • 0 = Default
  • Operators for fB
    int genoper_fH RO0 .. 0
  • 0 = Default
  • Operators for fH
    int genoper_fL RO0 .. 0
  • 0 = Default
  • Operators for fL
    int genoper_fS RO0 .. 0
  • 0 = Default
  • Operators for fS
    dda ot snorueN :sciteneG
    int neuadd_N0 .. 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 (default 0.8)
    Force (fo) float 0..999 (default 0.04)
    Sigmoid (si) float -99999..99999 (default 2)
    State (s) float -1..1 (default 0)
    int neuadd_Nu0 .. 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 (default 0.8)
    Force (fo) float 0..999 (default 0.04)
    Sigmoid (si) float -99999..99999 (default 2)
    State (s) float -1..1 (default 0)
    int neuadd_G0 .. 1 (false/true)Gyroscope (G)Tilt sensor.
    Signal is proportional to sin(angle) = most sensitive in horizontal orientation.
    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
    int neuadd_Gpart0 .. 1 (false/true)Part Gyroscope (Gpart)Tilt sensor. Signal is directly proportional to the tilt angle.
    0=the part X axis is horizontal
    +1/-1=the axis is vertical

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


    Properties:
    rotation.y (ry) float -6.282..6.282 (default 0)
    rotation.z (rz) float -6.282..6.282 (default 0)
    int neuadd_T0 .. 1 (false/true)Touch (T)Touch and proximity sensor (Tcontact and Tproximity combined)
    -1=no contact
    0=just touching
    >0=pressing, value depends on the force applied (not implemented in ODE mode)

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


    Properties:
    Range (r) float 0..1 (default 1)
    rotation.y (ry) float -6.282..6.282 (default 0)
    rotation.z (rz) float -6.282..6.282 (default 0)
    int neuadd_Tcontact0 .. 1 (false/true)Touch contact (Tcontact)Touch sensor.
    -1=no contact
    0=the Part is touching the obstacle
    >0=pressing, value depends on the force applied (not implemented in ODE mode)

    Characteristics:
    does not use inputs
    provides output value
    should be located on a Part
    int neuadd_Tproximity0 .. 1 (false/true)Touch proximity (Tproximity)Proximity sensor detecting obstacles along the X axis.
    -1=distance is "r" or more
    0=zero distance

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


    Properties:
    Range (r) float 0..1 (default 1)
    rotation.y (ry) float -6.282..6.282 (default 0)
    rotation.z (rz) float -6.282..6.282 (default 0)
    int neuadd_S0 .. 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
    int neuadd_Constant0 .. 1 (false/true)Constant (*)Constant value

    Characteristics:
    does not use inputs
    provides output value
    does not require location in body
    int neuadd_Bend_muscle0 .. 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..1 (default 0.25)
    bending range (r) float 0..1 (default 1)
    int neuadd_Rotation_muscle0 .. 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..1 (default 1)
    int neuadd_M0 .. 1 (false/true)Muscle for solids (M)Characteristics:
    uses single input
    does not provide output value
    should be located on a Joint


    Properties:
    power (p) float 0..1 (default 1)
    axis (a) integer 0..1 (default 0)
    int neuadd_D0 .. 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
    int neuadd_Fuzzy0 .. 1 (false/true)Fuzzy system [EXPERIMENTAL!] (Fuzzy)Refer to publications to learn more 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 (default "")
    fuzzy rules (fr) string (default "")
    int neuadd_VEye0 .. 1 (false/true)Vector Eye [EXPERIMENTAL!] (VEye)Refer to publications to learn more about this neuron.

    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 (default "")
    perspective (p) float 0.1..10 (default 1)
    scale (s) float 0.1..100 (default 1)
    show hidden lines (h) integer 0..1 (default 0)
    output lines count (each line needs four channels) (o) integer 0..99 (default 0)
    debug (d) integer 0..1 (default 0)
    int neuadd_VMotor0 .. 1 (false/true)Visual-Motor Cortex [EXPERIMENTAL!] (VMotor)Must be connected to the VEye and properly set up. Refer to publications to learn more about this neuron.

    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
    int neuadd_Sti0 .. 1 (false/true)Sticky [EXPERIMENTAL!] (Sti)Characteristics:
    uses single input
    does not provide output value
    should be located on a Part
    int neuadd_LMu0 .. 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 (default 1)
    int neuadd_Water0 .. 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
    int neuadd_Energy0 .. 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
    int neuadd_Ch0 .. 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
    int neuadd_ChMux0 .. 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
    int neuadd_ChSel0 .. 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
    int neuadd_Rnd0 .. 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
    int neuadd_Sin0 .. 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 (default 0.0628319)
    time (t) float 0..6.28319 (default 0)
    0f :sciteneG
    int f0_nodel_tag0 .. 1 (false/true)
    default=1
    Respect the 'delete inhibit' tagYou 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.
    int f0_nomod_tag0 .. 1 (false/true)
    default=1
    Respect the 'modify inhibit' tagYou 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.
    straP :0f :sciteneG
    float f0_p_new0 .. 100
    default=4.0
    New part
    float f0_p_del0 .. 100
    default=4.0
    Delete part
    float f0_p_swp0 .. 100
    default=1.0
    Swap parts
    float f0_p_pos0 .. 100
    default=4.0
    Position
    float f0_p_den0 .. 100
    default=0.0
    DensityDensity only has an influence under water
    float f0_p_frc0 .. 100
    default=1.0
    Friction
    float f0_p_ing0 .. 100
    default=0.0
    Ingestion
    float f0_p_asm0 .. 100
    default=0.0
    AssimilationThe interpretation and influence of this property must be implemented by the experiment definition
    stnioJ :0f :sciteneG
    float f0_j_new0 .. 100
    default=4.0
    New joint
    float f0_j_del0 .. 100
    default=1.0
    Delete joint
    float f0_j_stm0 .. 100
    default=0.0
    StaminaThe interpretation and influence of this property must be implemented by the experiment definition
    float f0_j_stf0 .. 100
    default=0.0
    Stiffness
    float f0_j_rsf0 .. 100
    default=0.0
    Rotational stiffness
    float f0_j_vred0 .. 100
    default=0.0
    Visual: red
    float f0_j_vgrn0 .. 100
    default=0.0
    Visual: green
    float f0_j_vblu0 .. 100
    default=0.0
    Visual: blue
    snorueN :0f :sciteneG
    float f0_n_new0 .. 100
    default=3.0
    New neuron
    float f0_n_del0 .. 100
    default=3.0
    Delete neuron
    float f0_n_prp0 .. 100
    default=1.0
    Change properties
    snoitcennoC :0f :sciteneG
    float f0_c_new0 .. 100
    default=2.0
    New connection
    float f0_c_del0 .. 100
    default=2.0
    Delete connection
    float f0_c_wei0 .. 100
    default=1.0
    Change weight
    s0f :sciteneG
    int f0s_nodel_tag0 .. 1 (false/true)
    default=1
    Respect the 'delete inhibit' tagYou 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.
    int f0s_nomod_tag0 .. 1 (false/true)
    default=1
    Respect the 'modify inhibit' tagYou 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.
    straP :s0f :sciteneG
    int f0s_circle_section0 .. 1 (false/true)
    default=1
    Ensure circle sectionEnsure that ellipsoids and cylinders have circle cross-section
    int f0s_use_elli0 .. 1 (false/true)
    default=1
    Use ellipsoids in mutationsUse ellipsoids in mutations
    int f0s_use_cub0 .. 1 (false/true)
    default=1
    Use cuboids in mutationsUse cuboids in mutations
    int f0s_use_cyl0 .. 1 (false/true)
    default=1
    Use cylinders in mutationsUse cylinders in mutations
    float f0s_p_new0 .. 100
    default=5.0
    New part
    float f0s_p_del0 .. 100
    default=5.0
    Delete part
    float f0s_p_swp0 .. 100
    default=10.0
    Swap parts
    float f0s_p_pos0 .. 100
    default=10.0
    Position
    float f0s_p_rot0 .. 100
    default=10.0
    Rotation
    float f0s_p_scale0 .. 100
    default=10.0
    Size (precisely, "scale")
    float f0s_p_frc0 .. 100
    default=10.0
    Friction
    float f0s_p_ing0 .. 100
    default=10.0
    Ingestion
    float f0s_p_asm0 .. 100
    default=0.0
    AssimilationThe interpretation and influence of this property must be implemented by the experiment definition
    stnioJ :s0f :sciteneG
    float f0s_j_new0 .. 100
    default=5.0
    New joint
    float f0s_j_del0 .. 100
    default=5.0
    Delete joint
    float f0s_j_stm0 .. 100
    default=0.0
    StaminaThe interpretation and influence of this property must be implemented by the experiment definition
    float f0s_j_vred0 .. 100
    default=0.0
    Visual: red
    float f0s_j_vgrn0 .. 100
    default=0.0
    Visual: green
    float f0s_j_vblu0 .. 100
    default=0.0
    Visual: blue
    snorueN :s0f :sciteneG
    float f0s_n_new0 .. 100
    default=5.0
    New neuron
    float f0s_n_del0 .. 100
    default=5.0
    Delete neuron
    float f0s_n_prp0 .. 100
    default=10.0
    Change properties
    snoitcennoC :s0f :sciteneG
    float f0s_c_new0 .. 100
    default=5.0
    New connection
    float f0s_c_del0 .. 100
    default=5.0
    Delete connection
    float f0s_c_wei0 .. 100
    default=10.0
    Change weight
    1f :sciteneG
    int f1_xo_propor0 .. 1 (false/true)
    default=1
    Proportional crossoverCross 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 in both parents, and a similar number of characters will be exchanged if possible.
    Thus, if both parents have the same number of neurons, then this will be preserved in their children.
    ygolohproM :1f :sciteneG
    float f1_smX0 .. 100
    default=4.0
    Add/remove a stick X
    float f1_smJunct0 .. 100
    default=1.0
    Add/remove a branch ( )
    float f1_smComma0 .. 100
    default=1.0
    Add/remove a comma ,
    float f1_smModif0 .. 100
    default=4.0
    Add/remove a modifierModifiers: LlRrCcQqFfMmEeWwSsAaIiDdGgBb
    string f1_mut_exmodExcluded modifiersModifiers that will not be added nor deleted during mutation
    (all: LlRrCcQqFfMmEeWwSsAaIiDdGgBb)
    ten norueN :1f :sciteneG
    float f1_nmNeu0 .. 100
    default=4.0
    Add/remove a neuronAdds a (connected) neuron or removes a neuron
    float f1_nmConn0 .. 100
    default=2.0
    Add/remove neural connection
    float f1_nmProp0 .. 100
    default=1.0
    Add/remove neuron property setting
    float f1_nmWei0 .. 100
    default=1.0
    Change connection weight
    float f1_nmVal0 .. 100
    default=1.0
    Change property value
    4f :sciteneG
    float f4_mut_add0 .. 100
    default=4.0
    Add nodeMutation: probability of adding a node
    float f4_mut_add_div0 .. 100
    default=4.0
    - add divisionAdd node mutation: probability of adding a division
    float f4_mut_add_conn0 .. 100
    default=1.0
    - add connectionAdd node mutation: probability of adding a neural connection
    float f4_mut_add_neupar0 .. 100
    default=1.0
    - add neuron propertyAdd node mutation: probability of adding a neuron property/modifier
    float f4_mut_add_rep0 .. 100
    default=1.0
    - add repetition '#'Add node mutation: probability of adding the '#' repetition gene
    float f4_mut_add_simp0 .. 100
    default=4.0
    - add simple nodeAdd node mutation: probability of adding a random, simple gene
    float f4_mut_del0 .. 100
    default=1.0
    Delete nodeMutation: probability of deleting a node
    float f4_mut_mod0 .. 100
    default=1.0
    Modify nodeMutation: probability of changing a node
    float f4_mut_modneu_conn0 .. 100
    default=3.0
    - neuron input: modify sourceNeuron input mutation: probability of changing its source neuron
    float f4_mut_modneu_weight0 .. 100
    default=3.0
    - neuron input: modify weightNeuron input mutation: probability of changing its weight
    int f4_mut_max_rep2 .. 20
    default=6
    Maximum number for '#' repetitionsMaximum allowed number of repetitions for the '#' repetition gene
    string f4_mut_exmodExcluded modifiersModifiers that will not be added nor deleted during mutation
    (all: LlRrCcQqFfMmEeWwSsAaIiDdGgBb)
    8f :sciteneG
    float f8_mut_chg_begin_arg0 .. 100
    default=7.0
    Change beginning argumentmutation: probability of changing a beginning argument
    float f8_mut_chg_arg0 .. 100
    default=7.0
    Change argumentmutation: probability of changing a production's argument
    float f8_mut_del_comm0 .. 100
    default=8.0
    Delete commandmutation: probability of deleting a command
    float f8_mut_insert_comm0 .. 100
    default=8.0
    Insert commandsmutation: probability of inserting commands
    float f8_mut_enc0 .. 100
    default=8.0
    Encapsulate commandsmutation: probability of encapsulating commands
    float f8_mut_chg_cond_sign0 .. 100
    default=7.0
    Change condition signmutation: probability of changing a condition sign
    float f8_mut_add_param0 .. 100
    default=8.0
    Add parametermutation: probability of adding a parameter to the production
    float f8_mut_add_cond0 .. 100
    default=8.0
    Add conditionmutation: probability of adding a condition to the subproduction
    float f8_mut_add_subprod0 .. 100
    default=8.0
    Add subproductionmutation: probability of adding a subproduction
    float f8_mut_chg_iter_number0 .. 100
    default=7.0
    Change iteration numbermutation: probability of changing a number of iterations
    float f8_mut_del_param0 .. 100
    default=8.0
    Delete parametermutation: probability of deleting a parameter
    float f8_mut_del_cond0 .. 100
    default=8.0
    Delete conditionmutation: probability of deleting a condition
    float f8_mut_add_loop0 .. 100
    default=0.0
    Add loopmutation: probability of adding a loop
    float f8_mut_del_loop0 .. 100
    default=0.0
    Delete loopmutation: probability of deleting a loop
    float f8_mut_del_prod0 .. 100
    default=8.0
    Delete productionmutation: probability of deleting a production
    9f :sciteneG
    float f9_mut0 .. 1
    default=0.0
    Mutation probabilityHow many genes should be mutated during a single mutation (1=all genes, 0.1=ten percent, 0=one gene)
    Ff :sciteneG
    float fF_xover0.5 .. 1
    default=0.5
    Inherited in linear mix crossover0.5 => children are averaged parents.
    0.8 => children are only 20% different from parents.
    1.0 => each child is identical to one parent (no crossover).
    nf :sciteneG
    float fn_xover0.5 .. 1
    default=0.9
    Fraction inherited in linear mix crossover0.5 => children are averaged parents.
    0.8 => children are only 20% different from parents.
    1.0 => each child is identical to one parent (no crossover).
    int fn_xover_random0 .. 1 (false/true)
    default=1
    Random fraction inherited in crossoverIf active, the amount of linear mix is random in each crossover operation, so the "Fraction inherited in linear mix crossover" parameter is ignored.
    string fn_mut_bound_lowLower bounds for mutationA vector of lower bounds (one real value for each variable)
    string fn_mut_bound_highHigher bounds for mutationA vector of higher bounds (one real value for each variable)
    string fn_mut_stddevStandard deviations for mutationA vector of standard deviations (one real value for each variable)
    int fn_mut_single_var0 .. 1 (false/true)
    default=0
    Mutate only a single variableIf active, only a single randomly selected variable will be mutated in each mutation operation. Otherwise all variables will be mutated.
    noitatuM :Bf :sciteneG
    float fB_mut_substitute0 .. 100
    default=1.0
    SubstitutionRelative probability of changing a single random character (or a neuron) in the genotype
    float fB_mut_insert0 .. 100
    default=3.0
    InsertionRelative probability of inserting a random character in a random place of the genotype
    float fB_mut_insert_neuron0 .. 100
    default=3.0
    Insertion of a neuronRelative probability of inserting a neuron in a random place of genotype
    float fB_mut_delete0 .. 100
    default=4.0
    DeletionRelative probability of deleting a random character (or a neuron) in the genotype
    float fB_mut_duplicate0 .. 100
    default=0.0
    DuplicationRelative probability of copying a single *gene* of the genotype and appending it to the beginning of this genotype
    float fB_mut_translocate0 .. 100
    default=4.0
    TranslocationRelative probability of swapping two substrings in the genotype
    revossorC :Bf :sciteneG
    float fB_cross_gene_transfer0 .. 100
    default=0.0
    Horizontal gene transferRelative probability of crossing over by copying a single random gene from each parent to the beginning of the other parent
    float fB_cross_crossover0 .. 100
    default=100.0
    Crossing overRelative probability of crossing over by a random distribution of genes from both parents to both children
    Hf :sciteneG
    float fH_mut_addition0 .. 100
    default=4.0
    Add elementProbability of adding a new element
    float fH_mut_add_joint0 .. 100
    default=4.0
    - add jointProbability of adding a new stick handle
    float fH_mut_add_neuron0 .. 100
    default=3.0
    - add neuronProbability of adding a new neuron handle
    float fH_mut_add_connection0 .. 100
    default=1.0
    - add neural connectionProbability of adding a new neuron connection handle
    float fH_mut_deletion0 .. 100
    default=4.0
    Delete elementProbability of removing an element
    float fH_mut_handle0 .. 100
    default=1.0
    Modify vectors of handlesProbability of changing values in vectors of a handle
    float fH_mut_property0 .. 100
    default=4.0
    Modify properties of handlesProbability of changing properties of handles
    Lf :sciteneG
    int fL_maxdefinedwords0 .. 100
    default=10
    Maximum number of defined wordsMaximum number of words that can be defined in the L-System
    selur dna moixa gnitatum fo seitilibaborP :Lf :sciteneG
    float fL_axm_mut_prob0 .. 100
    default=4.0
    Axiom mutationProbability of performing mutation operations on axiom
    float fL_rul_mut_prob0 .. 100
    default=1.0
    Rule's successor mutationProbability of performing mutation operations on the successor of a random rule
    sepyt noitatum fo seitilibaborP :Lf :sciteneG
    float fL_mut_addition0 .. 100
    default=4.0
    Addition of a word to a sequenceProbability of adding a random existing word to the axiom or to one of successors
    float fL_mut_add_stick0 .. 100
    default=1.0
    - addition of a stickProbability of adding a stick
    float fL_mut_add_neuro0 .. 100
    default=4.0
    - addition of a neuronProbability of adding a neuron
    float fL_mut_add_conn0 .. 100
    default=4.0
    - addition of a neuron connectionProbability of adding a neuron connection
    float fL_mut_add_rot0 .. 100
    default=2.0
    - addition of rotation wordsProbability of adding one of rotation words
    float fL_mut_add_branch0 .. 100
    default=4.0
    - addition of a branched stickProbability of adding a branch with a rotation and a stick
    float fL_mut_add_other0 .. 100
    default=1.0
    - addition of defined wordsProbability of adding another word defined in the genotype
    float fL_mut_worddefaddition0 .. 100
    default=1.0
    Addition of a new word definitionProbability of adding a new word definition to the genotype
    float fL_mut_ruleaddition0 .. 100
    default=1.0
    Addition of a new rule definitionProbability of adding a new rule definition for an existing word
    float fL_mut_rulecond0 .. 100
    default=1.0
    Modification of a rule conditionProbability of modifying a random rule condition
    float fL_mut_changeword0 .. 100
    default=4.0
    Change a random wordProbability of changing a word name or a formula of a random word from an axiom or one of successors
    float fL_mut_changeword_formula0 .. 100
    default=4.0
    - change of a formulaProbability of changing a formula in a word
    float fL_mut_changeword_name0 .. 100
    default=2.0
    - change of a nameProbability of changing a name in a word
    float fL_mut_changeiter0 .. 100
    default=1.0
    Change the number of iterationsProbability of changing the number of iterations of the L-System
    float fL_mut_changeiter_step0 .. 1
    default=1.0
    Step of the iteration changeThe minimal step that should be used for changing iterations in the L-System
    float fL_mut_deletion0 .. 100
    default=4.0
    Deletion of a random wordProbability of deleting a random word from an axiom or a random successor (also deletes the rule if there is only one word in the successor)
    Sf :sciteneG
    float fS_mut_add_part0 .. 100
    default=10.0
    Add partmutation: probability of adding a part
    float fS_mut_rem_part0 .. 100
    default=10.0
    Remove partmutation: probability of deleting a part
    float fS_mut_mod_part0 .. 100
    default=10.0
    Modify partmutation: probability of changing the part type
    float fS_mut_change_joint0 .. 100
    default=10.0
    Change jointmutation: probability of changing a joint
    float fS_mut_add_param0 .. 100
    default=10.0
    Add parammutation: probability of adding a parameter
    float fS_mut_rem_param0 .. 100
    default=10.0
    Remove parammutation: probability of removing a parameter
    float fS_mut_mod_param0 .. 100
    default=10.0
    Modify parammutation: probability of modifying a parameter
    float fS_mut_mod_mod0 .. 100
    default=10.0
    Modify modifiermutation: probability of modifying a modifier
    float fS_mut_add_neuro0 .. 100
    default=10.0
    Add neuronmutation: probability of adding a neuron
    float fS_mut_rem_neuro0 .. 100
    default=10.0
    Remove neuronmutation: probability of removing a neuron
    float fS_mut_mod_neuro_conn0 .. 100
    default=10.0
    Modify neuron connectionmutation: probability of changing a neuron connection
    float fS_mut_add_neuro_conn0 .. 100
    default=10.0
    Add neuron connectionmutation: probability of adding a neuron connection
    float fS_mut_rem_neuro_conn0 .. 100
    default=10.0
    Remove neuron connectionmutation: probability of removing a neuron connection
    float fS_mut_mod_neuro_params0 .. 100
    default=10.0
    Modify neuron paramsmutation: probability of changing a neuron param
    int fS_circle_section0 .. 1 (false/true)
    default=1
    Ensure circle sectionEnsure that ellipsoids and cylinders have circle cross-section
    int fS_use_elli0 .. 1 (false/true)
    default=1
    Use ellipsoids in mutationsUse ellipsoids in mutations
    int fS_use_cub0 .. 1 (false/true)
    default=1
    Use cuboids in mutationsUse cuboids in mutations
    int fS_use_cyl0 .. 1 (false/true)
    default=1
    Use cylinders in mutationsUse cylinders in mutations
    int fS_mut_add_part_strong0 .. 1 (false/true)
    default=1
    Strong add part mutationAdd part mutation will produce more parametrized parts
    sretrevnoC :sciteneG
    int genoconv_f1_f00 .. 1 (false/true)f1 --> f0 : Recursive encoding
    int genoconv_f4_f00 .. 1 (false/true)f4 --> f0 : Developmental encoding
    int genoconv_f8_f10 .. 1 (false/true)f8 --> f1 : (Old) generative encoding
    int genoconv_f9_f00 .. 1 (false/true)f9 --> f0 : Turtle3D-ortho encoding
    int genoconv_fF_f0s0 .. 1 (false/true)fF --> f0s : 10-parameter Foraminifera encoding
    int genoconv_fn_f00 .. 1 (false/true)fn --> f0 : Vector of real values, no phenotype
    int genoconv_fB_fH0 .. 1 (false/true)fB --> fH : Biological encoding
    int genoconv_fH_f00 .. 1 (false/true)fH --> f0 : Similarity encoding
    int genoconv_fL_f00 .. 1 (false/true)fL --> f0 : L-System encoding
    int genoconv_fS_f0s0 .. 1 (false/true)fS --> f0s : Solids tree-structure encoding
    0f ot 1f :sretrevnoC :sciteneG
    int conv_f1_f0_modcompat0 .. 1
  • 0 = Before June 2023
  • 1 = Modern (default)
  • Modifier compatibilityThe modern implementation makes the influence of modifiers more consistent and uniform, and the extreme property values are easier to reach with a lower number of characters, which improves the topology for evolutionary search.
    Previous implementation can be enabled for compatibility, for example when you want to test old genotypes.
    int conv_f1_f0_cq_influence0 .. 1
  • 0 = Before June 2023
  • 1 = Modern (default)
  • 'C' and 'Q' modifier influence'C' and 'Q' modifier semantics was changed in June 2023. Previously they did not affect the stick immediately following the current sequence of modifiers. In the modern implementation, all modifiers consistently start their influence at the very next stick that is being created in the current branch.
    Example:
    In the old interpretation of 'XcXX', only the last stick is rotated, because 'c' starts its influence at the stick that occurs after the current stick. In the modern implementation, the same effect is achieved with 'XXcX', where 'c' immediately bends the first 'X' that appears after it.
    Previous implementation can be enabled for compatibility, for example when you want to test old genotypes.
    int conv_f1_f0_branch_muscle_range0 .. 2
  • 0 = Full/NumberOfBranches (default)
  • 1 = Full/(NumberOfBranches+1)
  • 2 = Full
  • Bending muscle default rangeDetermines how the bending muscle default turning range is limited when the muscle is controlling a stick growing from a branching point that has 'NumberOfBranches' sticks separated by commas. The motivation of the limited range is to keep the neighboring sticks from intersecting when they are bent by muscles. This constraint may degrade the performance (e.g. velocity) of creatures, but this default value can be overridden by providing a specific range property value for the '|' muscle neuron in the genotype.
    - Full/NumberOfBranches - a compromise between the two other settings.
    - Full/(NumberOfBranches+1) - because the originating stick also counts as a branch. This setting guarantees that in the worst case, when at least two neighboring branches have sticks controlled by bending muscles and their controlling signals are at extreme values, the sticks can touch and overlap, but will not intersect. This setting is in most cases too strict because (1) all branches are very rarely controlled by muscles, (2) there are often 'empty' branches - multiple commas with no sticks in-between, and (3) the share of the originating stick is effectively wasted because this stick itself has no muscle at the branching point so it will not bend; the muscle bending range is symmetrical and the default range is equal for all muscles in a branching, but the sticks equipped with muscles in a branching are rarely evenly spaced.
    - Full: Always 1 (the complete angle) - because we do not have to care about the physical plausibility and avoid intersecting sticks, and other genetic representations do not impose such constraints, so this full angle setting can be useful as the default bending range when comparing the performance of various genetic encodings.
    1f ot 8f :sretrevnoC :sciteneG
    int conv_f8_f1_maxlen10 .. 10000
    default=500
    Maximal genotype lengthMaximal length of the resulting f1 genotype, in characters. If the f8 L-system produces longer f1 genotype, it will be considered invalid.
    snorueN :erutaerC
    float randinit0 .. 10
    default=0.01
    Random initializationAllowed range for initializing all neuron states with uniform distribution random numbers and zero mean. Set to 0 for deterministic initialization.
    float nnoise0 .. 1
    default=0.0
    NoiseGaussian neural noise: a random value is added to each neural output in each simulation step. Set standard deviation here to add random noise, or 0 for deterministic simulation.
    float touchrange0 .. 100
    default=1.0
    T receptor range
    noitcefrepmI :erutaerC
    float bnoise_struct0 .. 10
    default=0.0
    Body disturbanceWhen >0, body constructs of creatures (position of Parts) will be randomly disturbed when they are created.
    float bnoise_vel0 .. 10
    default=0.0
    Initial movementRandom velocities will be applied to all body Parts (in MechaStick) or rigid segments (in ODE) of newly created creatures.
    delbanE :snorueN :erutaerC
    int ncl_N0 .. 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 (default 0.8)
    Force (fo) float 0..999 (default 0.04)
    Sigmoid (si) float -99999..99999 (default 2)
    State (s) float -1..1 (default 0)
    int ncl_Nu0 .. 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 (default 0.8)
    Force (fo) float 0..999 (default 0.04)
    Sigmoid (si) float -99999..99999 (default 2)
    State (s) float -1..1 (default 0)
    int ncl_G0 .. 1 (false/true)Gyroscope (G)Tilt sensor.
    Signal is proportional to sin(angle) = most sensitive in horizontal orientation.
    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
    int ncl_Gpart0 .. 1 (false/true)Part Gyroscope (Gpart)Tilt sensor. Signal is directly proportional to the tilt angle.
    0=the part X axis is horizontal
    +1/-1=the axis is vertical

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


    Properties:
    rotation.y (ry) float -6.282..6.282 (default 0)
    rotation.z (rz) float -6.282..6.282 (default 0)
    int ncl_T0 .. 1 (false/true)Touch (T)Touch and proximity sensor (Tcontact and Tproximity combined)
    -1=no contact
    0=just touching
    >0=pressing, value depends on the force applied (not implemented in ODE mode)

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


    Properties:
    Range (r) float 0..1 (default 1)
    rotation.y (ry) float -6.282..6.282 (default 0)
    rotation.z (rz) float -6.282..6.282 (default 0)
    int ncl_Tcontact0 .. 1 (false/true)Touch contact (Tcontact)Touch sensor.
    -1=no contact
    0=the Part is touching the obstacle
    >0=pressing, value depends on the force applied (not implemented in ODE mode)

    Characteristics:
    does not use inputs
    provides output value
    should be located on a Part
    int ncl_Tproximity0 .. 1 (false/true)Touch proximity (Tproximity)Proximity sensor detecting obstacles along the X axis.
    -1=distance is "r" or more
    0=zero distance

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


    Properties:
    Range (r) float 0..1 (default 1)
    rotation.y (ry) float -6.282..6.282 (default 0)
    rotation.z (rz) float -6.282..6.282 (default 0)
    int ncl_S0 .. 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
    int ncl_Constant0 .. 1 (false/true)Constant (*)Constant value

    Characteristics:
    does not use inputs
    provides output value
    does not require location in body
    int ncl_Bend_muscle0 .. 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..1 (default 0.25)
    bending range (r) float 0..1 (default 1)
    int ncl_Rotation_muscle0 .. 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..1 (default 1)
    int ncl_M0 .. 1 (false/true)Muscle for solids (M)Characteristics:
    uses single input
    does not provide output value
    should be located on a Joint


    Properties:
    power (p) float 0..1 (default 1)
    axis (a) integer 0..1 (default 0)
    int ncl_D0 .. 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
    int ncl_Fuzzy0 .. 1 (false/true)Fuzzy system [EXPERIMENTAL!] (Fuzzy)Refer to publications to learn more 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 (default "")
    fuzzy rules (fr) string (default "")
    int ncl_VEye0 .. 1 (false/true)Vector Eye [EXPERIMENTAL!] (VEye)Refer to publications to learn more about this neuron.

    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 (default "")
    perspective (p) float 0.1..10 (default 1)
    scale (s) float 0.1..100 (default 1)
    show hidden lines (h) integer 0..1 (default 0)
    output lines count (each line needs four channels) (o) integer 0..99 (default 0)
    debug (d) integer 0..1 (default 0)
    int ncl_VMotor0 .. 1 (false/true)Visual-Motor Cortex [EXPERIMENTAL!] (VMotor)Must be connected to the VEye and properly set up. Refer to publications to learn more about this neuron.

    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
    int ncl_Sti0 .. 1 (false/true)Sticky [EXPERIMENTAL!] (Sti)Characteristics:
    uses single input
    does not provide output value
    should be located on a Part
    int ncl_LMu0 .. 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 (default 1)
    int ncl_Water0 .. 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
    int ncl_Energy0 .. 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
    int ncl_Ch0 .. 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
    int ncl_ChMux0 .. 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
    int ncl_ChSel0 .. 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
    int ncl_Rnd0 .. 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
    int ncl_Sin0 .. 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 (default 0.0628319)
    time (t) float 0..6.28319 (default 0)
    ytiralimiS :erutaerC
    int simil_type0 .. 2
  • 0 = Graph greedy (vertex degree order and greedy matching)
  • 1 = Graph optimal (flexible criteria order and optimal matching) (default)
  • 2 = Descriptor distribution (EMD on a histogram of descriptor values)
  • Type of similarity measure
    ydeerg hparG :ytiralimiS :erutaerC
    float simil_greedy_parts0 .. 100
    default=0.0
    Weight of parts countDiffering number of parts is also handled by the 'part degree' similarity component.
    float simil_greedy_partdeg0 .. 100
    default=1.0
    Weight of parts' degree
    float simil_greedy_neuro0 .. 100
    default=0.1
    Weight of neurons count
    float simil_greedy_partgeom0 .. 100
    default=0.0
    Weight of parts' geometric distances
    int simil_greedy_fixedZaxis0 .. 1 (false/true)
    default=0
    Fix 'z' (vertical) axis?
    int simil_greedy_weightedMDS0 .. 1 (false/true)
    default=0
    Should weighted MDS be used?If activated, weighted MDS with vertex (i.e., Part) degrees as weights is used for 3D alignment of body structure.
    lamitpo hparG :ytiralimiS :erutaerC
    float simil_parts0 .. 100
    default=0.0
    Weight of parts countDiffering number of parts is also handled by the 'part degree' similarity component.
    float simil_partdeg0 .. 100
    default=1.0
    Weight of parts' degree
    float simil_neuro0 .. 100
    default=0.1
    Weight of neurons count
    float simil_partgeom0 .. 100
    default=0.0
    Weight of parts' geometric distances
    int simil_fixedZaxis0 .. 1 (false/true)
    default=0
    Fix 'z' (vertical) axis?
    int simil_weightedMDS0 .. 1 (false/true)
    default=0
    Should weighted MDS be used?If activated, weighted MDS with vertex (i.e., Part) degrees as weights is used for 3D alignment of body structure.
    noitubirtsid rotpircseD :ytiralimiS :erutaerC
    float simil_density1 .. 100
    default=10.0
    Density of surface sampling
    int simil_bin_num1 .. 1000
    default=128
    Number of bins
    int simil_samples_num1 .. 1048576
    default=10000
    Number of samples
    yrtemmyS :erutaerC
    int symPosSteps2 .. 50
    default=10
    Position samplingDefault number of samples per stick length
    int symAlphaSteps2 .. 50
    default=20
    Angular sampling (1)Default number of samples per full angle (#1)
    int symBetaSteps2 .. 50
    default=20
    Angular sampling (2)Default number of samples per full angle (#2)
    float symResultA ROresulting symmetry plane, coeff. A (set by calculateSymmetry)
    float symResultB ROresulting symmetry plane, coeff. B (set by calculateSymmetry)
    float symResultC ROresulting symmetry plane, coeff. C (set by calculateSymmetry)
    float symResultD ROresulting symmetry plane, coeff. D (set by calculateSymmetry)
    yrtemoeG :erutaerC
    float geom_density0.01 .. 100
    default=3.0
    DensityThe number of samples (per unit length in one dimension) that affects the precision of estimation of geometrical properties.
    stniartsnoc ydoB :erutaerC
    float minjoint0 .. 100
    default=0.0
    Minimal joint length
    float maxjoint0 .. 100
    default=2.0
    Maximal joint length
    snoitcnuF
    function _propertyAdd(string id, string type_description, string name, int flags, string help_text)doesn't return a valueAdd property (id,type,name,help)Using most _property functions is restricted for internal purposes. Use "property:" or "state:" definitions in your script files to change object properties.
    function _propertyAddGroup(string name)doesn't return a valueAdd property groupUsing most _property functions is restricted for internal purposes. Use "property:" or "state:" definitions in your script files to change object properties.
    function _propertyChange(string id, string type_description, string name, int flags, string help_text)doesn't return a valueChange propertyUsing most _property functions is restricted for internal purposes. Use "property:" or "state:" definitions in your script files to change object properties.
    function _propertyClear()doesn't return a valueRemove all propertiesUsing most _property functions is restricted for internal purposes. Use "property:" or "state:" definitions in your script files to change object properties.
    function _propertyExists(string name)returns intCheck for property existence
    function _propertyRemove(int index)doesn't return a valueRemove propertyUsing most _property functions is restricted for internal purposes. Use "property:" or "state:" definitions in your script files to change object properties.
    function _propertyRemoveGroup(int index)doesn't return a valueRemove property groupUsing most _property functions is restricted for internal purposes. Use "property:" or "state:" definitions in your script files to change object properties.
    function area()returns floatarea
    function beep()doesn't return a valueBeepPlays the default system sound.
    function calculateSymmetry(Model model)returns floatCalculate symmetryReturns 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(Model model, int posSteps, int alphaSteps, int betaSteps)returns floatCalculate symmetryReturns 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(Model model, float A, float B, float C, float D)returns floatCalculate symmetryReturns 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 valueNotify that the experiment state was significantly updated.This function was previously called "autosave".
    function checkpointData(untyped any_data)doesn't return a valueNotify that the experiment state was significantly updated + pass data.In the distributed/paralellized scenario the data passed as argument can be received by the controlling entity (onSlaveCheckpoint in multithreaded master experiment, /simulator/expevent in distributed network simulator).
    function crossOver(Geno, Geno)returns GenoCrossoverreturns crossed over genotype
    function eval(string script_statement)doesn't return a valueEvaluate a statementThe argument must be a complete statement, e.g. "return 2+2;" is valid, while "2+2" is not. The Error object is returned for invalid statements.
    Example:
    var statement="function fun(a) {return a*a;} return fun(Math.pi);";
    var result=Simulator.eval(statement);
    if (typeof result=="Error")
    Simulator.print("Error:"+result.message);
    else
    Simulator.print("Result:"+result);
    function evaluateDistance(Geno, Geno)returns floatEvaluate model dissimilarityCalculates dissimilarity between two models created from Geno objects.
    function export(string filename, int options, int genepool, int population)returns untypedExportSave some data to file. Arguments:
    - filename: can be null, which makes export() return saved data as a text string instead of writing it to the file.
    - options: composed of the following bit values:
        1 - experiment (works just like save() and all other option bits are ignored)
        2 - genotypes
        4 - simulator parameters
        8 - simulator stats
        16 - genepool settings
        32 - population settings
        64 - do autosave
        256 - creatures
    - selected genepool, -1 means all genepools
    - selected population, -1 means all populations
    function forModel(Model)returns ModelGeometryThe returned ModelGeometry object can be used to calculate geometric properties (volume, area, sizes) of the associated model. The density is copied from the current global ModelGeometry.geom_density on object creation.
    function getSimplest(string format)returns GenoGet simplest genotypereturns the simplest genotype for a given encoding (format). "0" means f0, "4" means f4, etc.
    function import(string filename, int options)doesn't return a valueimportImport some data from file. Contents can also be imported from string by using specifically formed filename: "string://string_contents_to_be_imported".
    The second optional argument selects what section(s) will be imported:
        1 - experiment (works just like load(), all other bits are ignored, 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)
        256 - creatures

    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 dangerous, 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 import(string filename)doesn't return a valueImportEquivalent to import(filename,2+4+8+16) - imports genotypes, parameters, genepool and population settings.
    function init()doesn't return a valueInitialize experimentPrepares the experiment for running - usually performs initialization procedures such as resetting counters, states, gene pools, etc.
    These actions are defined in the onInit() function of this experiment definition.
    function load(string filename)doesn't return a valueloadLoad 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()". Use "import" if you don't want to lose the old simulator state. Contents can also be loaded from string by using specifically formed filename: "string://string_contents_to_be_loaded".
    function loadexpdef()doesn't return a valueReload experiment definitionResets the simulator to its default state, resets all parameters to default values and then loads this experiment definition.
    function message(string text, int level)doesn't return a valuePrint messageThe second argument can be:
    -1 = debugging message
    0 = information
    1 = warning
    2 = error
    3 = critical error
    function mutate(Geno)returns GenoMutatereturns mutated Geno object from supplied Geno
    function new()returns Simulatorcreate new Simulator
    function operReport()doesn't return a valueOperators reportShow available genetic operators
    function print(string text)doesn't return a valuePrint information messageOne argument: message to be printed.
    function rayIntersection(float position_x, float position_y, float position_z, float direction_x, float direction_y, float direction_z, float max_distance)returns floatray intersection
    function refreshGUI()doesn't return a valueRefresh GUINotify that all populations and gene pools content changed.
    function reloadNeurons()doesn't return a valueReload neuron definitions
    function resetToDefaults()doesn't return a valueReset the simulator stateClears groups and loads default values for simulator parameters, then calls onExpDefLoad() of the current experiment definition.
    function save(string filename)returns untypedSaveSave experiment file (calls onExpSave() in the current experiment definition). Providing null filename makes save() return saved data as a text string instead of writing it to the file.
    function sizesAndAxes()returns VectorsizesAndAxesThe returned vector contains XYZ (sizes) and Orient (axes) objects.
    function sleep(int milliseconds)doesn't return a valueSleepSuspends the execution for a specified interval.
    function sound(int freqency_in_Hz, int length_in_milliseconds)doesn't return a valueSoundGenerates a simple tone on the speaker
    function start()doesn't return a valueStart simulationCalled by the user interface.
    function step()doesn't return a valueDo a single simulation step
    function stop()doesn't return a valueStop simulationThe expdef script calls this function to stop simulation.
    function toHTML(string)returns stringHTMLize a genotypereturns genotype expressed as colored HTML
    function toHTMLshort(string)returns stringHTMLize a genotype, shorten if neededreturns genotype (abbreviated if needed) in colored HTML format
    function toLaTeX(string)returns stringLaTeXize a genotypereturns genotype in colored LaTeX format
    function validate(Geno)returns GenoValidatereturns validated (if possible) Geno object from supplied Geno
    function volume()returns floatvolume
    function voxels()returns VectorvoxelsReturns a Vector of Pt3D objects from a regular 3D grid (sampled according to ModelGeometry.geom_density) that are inside of the Model body (Parts and Joints).
    function wrldchg()doesn't return a valueTrigger world update
    Global context