Name

genr8

Synopsis

genr8 [flags]

ReturnValue

Description

Generate a scaffold using a reactive growth model in a user-defined environment

Flags

-n/steps unsigned
The number of growth steps. Note, since the growth is exponential, each step will take approximately twice as long as the previous.
Default: 4
-s/scale double 
How much the design will be scaled on each growth step.
Default: 1.5.
-sx/scaleX double
How much the design will be scaled in the X-direction.
Default: same as scale.
-sy/scaleY double
How much the design will be scaled in the Y-direction.
Default: same as scale.
-sz/scaleZ double
How much the design will be scaled in the Z-direction.
Default: same as scale.
-p/polygons 
Draw polygons instead of nurbs.
Default: off.
-fp/fixedPerimeter 
Keep the perimeter fixed. If this is on, the perimeter will be fixed and the surface will behave more like a membrane.
-fc/fixedCenter 
Keep the center fixed to the starting position.
-ds/drawEachStep
If this flag is set GENR8 will draw each growth step, otherwise the scaffold is not drawn until it is finished. If the populationSize is 1 and this flag is used, each step will be drawn in its own layer.
-sp/startPosition double double double
The coordinates for the centre at the start.
Default: origin (0, 0, 0).
-sl/startLength double
Set the side length of the seed. The seed is always a regular polygon.
Default: 1.
-ba/branchAngle unsigned
Set the angle (in degrees, ie between 0 and 90) for the cone that is used when trying to match branches.
Default: 30.
-bl/branchLength double
Set a limit to the maximum distance for when branches can be connected. This is not an absolute value, but a multiple of the characteristic length of the scaffold. The characteristic length is defined as the startLength, multiplied by the scale for each step. A value of -1 means infinite range.
Default: -1.
-g/gravity x|y|z double
Apply a gravitational force in the desired direction. The second argument gives the magnitude, where a negative value means in the negative direction.
Default: no gravity.
-a/attractor double double double 
Place an attractor at the given coordinates. This argument can be used multiple times.
-r/repellor double double double 
Place a repellor at the given coordinates. This argument can be used multiple times.
-aw/activeWalls 
If the walls should push back vertices growing towards it or simply cut them off if they try to move outside. If this is off and you have a small bounding box there is a risk that a lot of vertices will pile up at the walls.
-rn/randomNoise double
Add a noise component to the system. The growth will be affected by a random perturbation.
Default: 0.
-rr/randomRewrite unsigned
This is similar to the -rn flag. Its value should be between 0 and 100 and it is the probability that a segment will get another type than the rewriterule indicated.
Default: 0.
-wc/wallConstant double
Set c in the attractorequation, c/d^e. Only used when aw is on.
Default: 50.
-we/WallExponent unsigned
Set e in the attractorequation, c/d^e. Only used when aw is on.
Default: 2.
-co/cutOff 
Determines the behaviour when a vertex hits a wall. If this is on, it stops dead at the wall, if off, it slides along the wall and continues to grow.
-rp/repellingPoints double unsigned
Make the vertices repelling, this means that there will be an internal feedback throughout the system. The vertices will move away from each other, making the cellsizes more uniform. This function has quadratic complexity, while the other functions are linear, thus this function could slow down the program significantly.
-rns/randomSeed unsigned
Set the seed of the random number generator to this value (good if you want to get the same run again).
-t/tiles 3|4
Use a predefined grammar that generates square tiles. If you use the four sided tiles, GENR8 will try to create a nurbs-surface. Since the two first steps are of degree one and the latter of degree three, the transition between these steps can look odd.
-kc/kochCurve 
Use a predefined grammar to draw a Koch-curve (snowflake fractal).
-qk/quadraticKoch 
Use a predefined grammar to draw a variant of the Koch curve.
-rv/reversible 
If this flag is set, the grammar will be generated from a more restricted BNF. Then it will always be possible to reverse the grammar produced with regn8. This flag should also be used when you are loading a genome that was produced by regn8.
-syb/symmetricBNF 
If this flag is set the BNF will be constrained so that it only produces grammars that generate symmetric scaffolds. The symmetric BNFs are a subset of the reversible BNFs.
-pr/probabilistic 
If this flag is used, genr8 will produce grammars that have probabilistic rewrite rules.
-frr/fullRandomRewrite unsigned
If this flag is set the probabalistic rules will behave in a different way. If the flag is not used, every segment gets rewritten by the same rule (during each step), if it is set each segment will get a separate rule, which most likely results in a more random structure.
-mbd/maxBNFDepth unsigned
This limits the depth of the expansion of the grammar when the evolutionary algorithm interprets the genome.
Default: 5.
-met/maxEdgeTypes unsigned
This enables you to set a maximum for the number of edge types that can be produced by the evolutionary algorithm.
-lg/loadGrammar string
Use a grammar that has been specified in the file in string. If you do not specify the entire path to the file, GENR8 looks for it in the same directory that GENR8 is stored in. For more info on how you should write your grammar file, please read this section.
-sg/saveGrammar string
Save the grammars used (all of them) in the file specified by string. GENR8 will automatically place it in the same directory as it is installed in if you do not specify the entire path.
-ps/populationSize unsigned
If you do not use the predefined tiles or fractals, GENR8 will do an evolutionary search for good grammars. This specifies the population size, and it must be at least 1 (even if you are using tiles). Each individual is drawn in its own layer.
Default: 1.
-ge/generations unsigned
How many generations should be evolved. Each scaffold will grow steps times before being evaluated (and it may take a while if steps, populationSize or generations is high).
Default: 0.
-mr/mutationRate unsigned
Set the mutation rate for the genetic engine. This is the probability that a gene is mutated and the value should be between 0 and 100.
Default: 2.
-ts/tournamentSize unsigned
Set the size of the tournament used by the EA. A high value means more elitism.
Default: 4.
-e/elites unsigned
Set the number of elites. Elites are automatically copied into the next generation. In order to maintain diversity, this value should be kept low.
Default: 1.
-gl/genomeLength unsigned
Set the genomelength to this value, all individuals have the same length. Unless the genome is very short, the value does not really make a big difference.
Default: 50.
-e/elites unsigned
Set the number of elites. Elites are automatically copied into the next generation. In order to maintain diversity, this value should be kept low.
Default: 1.
-vi/viewIndividual unsigned
Just view the individual with rank unsigned instead of the entire population.
-ci/copyIndividual unsigned unsigned
The first argument is the rank of the individual that is going to be copied and the second is the number of copies. The new copies will be inserted at the end of the population. Note that you copy the individual with the specified rank and not the ID!
-sdp/seedPopulation unsigned unsigned
This is similar to the -ci flag. But instead of making exact copies, the copies will be mutated.
-c/continue 
Continue with the same genetic material as in your last run. The genome is read from the file genome.txt. In this way, you can change your settings and parameters after running a few generations.
-lge/loadGenome string
Load genome from the file string.
-sge/saveGenome string
Save the genome in the file string. If you do not specify the whole path, it will be saved in the same directory as GENR8. By default, the genome is saved in the file genome.txt.
-sf/setFitness unsigned double
Set the fitness of individual unsigned to double. This is a good way to give the EA a kick in the direction you want it to go. This flag can be used multiple times.
-si/size double double
Desired size in the x- and y-direction.
Default: 10 10.
-siw/sizeWeight double
Set the weight for the size fitness criterion.
Default: 1.
-sm/smoothness double
This parameter is used when determining the fitness for a design. The value is how much you wish the z-values of the vertices to vary. 0 means that the surface is completely flat and a high value will give a rugged surface.
Default: 0.
-smw/smoothnessWeight double
Set the weight for the smoothness fitness criterion.
Default: 1.
-sbw/softBoundaryWeight double
If this weight is greater than 0, the boundaries will not stop growth, instead there will be a fitness penalty proportional to the number of vertices that are outside the boundaries.
Default: 0.
-su/subdivisions double
This parameter should be between 0 and 1 and is the desired amount of subdivisions on the surface. A value of 1 means that there are no subdivisions and the lower the value is, the more subdivisions should be generated.
Default: 0.
-suw/subdivisionsWeight double
Set the weight for the subdivisions fitness criterion.
Default: 1.
-sy/symmetry double
Desired level of symmetry. The value should be between 0 and 1 where 0.5 represents a symmetrical design and the extreme values something totally unsymmetric.
Default: 0.5.
-syw/symmetryWeight double
Set the weight for the symmetry fitness criterion.
Default: 1.
-un/undulation double
The undulation fitness criteria specify how much variation in the z-value we desire on a global level (smoothness is a local criterion). A value of 0 strives for a flat surface and positive values allows for more varition in z-values.
Default: 0
-unw/undulationWeight double
Set the weight for the undulation fitness criterion.
Default: 1.
-dy/displayStats 
Use this flag to get the output window.

Examples

    

Related Commands

degenr8, regenr8, regn8, repellor