Houdini 13.0 Nodes

interface version 1

A Wedge ROP variant that implements a genetic (evolutionary) algorithm.

Genetic Algorithm (GA)

  • "Mutation! Kill the muto!" (Waterworld)

How the genetic/evolutionary algorithm works

It is based on natural selection. After an initial population is randomly generated, the genetic algorithm (GA) mimics the evolutionary process through three operators:

  1. Selection – the “fittest” entities will have their genes mixed

  2. Crossover – represents mating between individuals

  3. Mutation – adds small, unique random modifications to each child

Steps explained

  1. Selection

    The key idea: give preference to “better” individuals, allowing them to pass on their genes to the next generation. “Better” may be determined by some objective function or by a subjective judgement.

  2. Crossover

    Two parents are chosen, whose genes will be recombined into children, using one of several methods (see parameters below). Note that the two parents always have two children.

  3. Mutation

    Its purpose is to maintain diversity within the population and inhibit premature convergence. (For each new child, a few parameters will be slightly modified in a random fashion.)

Tip

Don’t let the original terminology scare you. Just give it a try and follow instructions carefully. The concepts are very simple, and you’ll understand it very quickly.

How it works in Houdini

The following sections explain how the theory is turned into practice in Houdini.

(TODO: what we want (lookdev), how (find the proper parameter values), GA will adjust the parameter values for us)

Terminology

  • An entity or individual is simply a list of node parameters (along with their values)

  • A gene is a single parameter from the list (along with its value)

  • A population is a bunch of entities (parameter lists)

Steps explained

This is an iterative process, where each iteration creates a new population from the previous one.

  • Initial population

  1. Selection

    ...

Effects of the various operations

  • Selection alone will tend to fill the population with copies of the best individual from the population.

  • Selection and crossover operators will tend to cause the algorithms to converge on a good but sub-optimal solution.

  • Mutation alone induces a random walk through the search space.

  • Selection and mutation creates a parrallel, noise-tolerant, hill climbing algorithm.

(Source: Genetic Algorithms)

Usage Notes

  • population count can be changed between generations

  • keep in mind that each parent pair will add 2 kids to the next population

Parameters

...

To Do

  • aborting should restore original (pre-wedge) param values

  • use ROP network connections to represent generations (branches, etc.)

  • tools for quickly previewing of all entities in a generation

  • support for changing parameter ranges between generations

    • the one node per generation provides that

    • should save parm list for each generation (?)

    • ...

  • on delete, it should ask if it should delete files of related generation (just like waypoint)

  • ...

Release Notes

interface version 1

2014-09-18
  • Added variables $WEDGEGEN (generation string: index+label), $WEDGENUM2...$WEDGENUM4 (zero-padded variants of $WEDGENUM)

  • Added “Run Input ROP(s)” toggle

  • Fixed logic bug in parent couples' selection (parent index 0 was treated as “no parent”)

  • Fixed bug in filename assembly (generation+label)

  • Fixed bug in finding parent generation files (uses the branch label of the upstream ROP node now, which is the correct behaviour)

  • Added some note presets

2014-09-17
  • Added basic branch support (to be tested, esp. filenames!)

  • Fixed bug: it stopped on non-existing output driver (even if Run Output Driver was disabled)

  • Error messages are now properly propagated to asset container

2014-09-15
  • Added input connector (“Previous Generation”)

  • Added basic functionality for building generation history in ROP network

2014-09-14
  • First working prototype

  • (Hopefully) all important logic bugs are fixed

  • Muto: see Waterworld or Godzilla ;)