Skip to content

Historical: Fixed development and experimental node-model search

The archived evolution interface searches coordinates for one fixed neural design. Its configuration declares the search strategy, budget, random seed, measure, direction, initialisation and strategy options. This is not an active Python API; see version history.

Any registered node that declares a reviewed Evolution.NodeDesignSpec can use this operation. The Falandays design searches seven bounded coordinates and keeps online plasticity enabled; learn_on is not a coordinate. Structured and Dense CTRNNs supply 220-coordinate and 404-coordinate designs for experimental shared-task searches.

Each design fixes its parameter schema during a search. Evolution does not add nodes, alter topology, change body components, or change receptor and effector ports.

Shared CTRNN search protocol

The protocol uses one design across the full versioned task list. Each candidate is evaluated on Tracking, Pong, CartPole, and delayed cue. The genome, 200-node count, construction policy, integration settings, and input gain remain the same across tasks.

Read the archived commands and examples.

The archived validation command checks the plan without starting the search. measure=:benchmark_profile keeps native task coordinates separate. Tracking error is negated so that higher is better for every NSGA-II objective. Raw coordinates, outcome keys, and normalised outcomes remain in the trial records. A scalar average across incompatible units is rejected for this measure.

Typed CTRNN parameters include dt, substeps, hill_tau, hill_reset, link_p, rho, k_rec, k_in, output_fanout, init_random, and state_scale. Exact connection counts override the probability-derived counts. output_fanout fixes the number of source nodes per effector; its default retains the seeded mask policy. Integration uses forward Euler. Five substeps per neural frame is the default, not a guarantee of numerical accuracy.

The archived runtime caches static model coefficients and owns reusable scratch buffers. Its genome-replacement and cache rules are retained in the archived instructions above.

The archived pilot tooling first measures warmed costs and selects an initialisation scale from paired synthetic input diagnostics. It then runs three search seeds per family, two generations, four candidates, and two development blocks per task, under a combined two-hour wall-time budget. It then nominates one shared design per family and tests its saved artifact on fresh development blocks. These small pilots test software and search readiness, not competitive success.

Search strategies

One typed search-strategy registry provides:

  • :sepcma for one scalar objective and one selected model;
  • :nsga2 for an ordered Pareto set;
  • :cmame for an ordered quality-diversity archive.

Every archived run uses explicit seeded normal initialisation. The instructions above retain the configuration examples.

search_seed controls search randomness. Evaluation targets retain their own declared root seeds. These streams answer different questions and must remain separate.

SepCMA writes the stable model role selected. NSGA-II and CMA-ME do not choose an implicit champion. They write ordered model IDs such as pareto-0001 and cell-0001. A later operation must name the model that it evaluates.

Records and continuation

An evolution operation writes the standard full record, including the submitted and resolved plans, realised seeds, authoritative tables, model artifacts, provenance, and checksums. It also records a continuation point at each completed generation.

Candidate history retains compact trial and seed rows rather than full simulation objects. Each completed generation writes an atomic, checksummed data directory. Older flat-table records remain readable. Completed runs also provide the usual flat CSV tables.

If execution stops, Evolution.resume validates the record and continues the same directory from the last complete generation. It reruns incomplete generation work. A successful record contains DONE and contains neither INCOMPLETE nor FAILED.

run_operation(plan; max_seconds=7200) and Evolution.resume(path; max_seconds=7200) check the wall-time budget between episodes. A running episode can finish after the limit. A budget stop retains INCOMPLETE; continuation requires at least one complete generation and matching source/environment provenance. Non-finite CTRNN dynamics are recorded as invalid candidate evaluations. Unexpected software errors still stop the operation.

Training and held-out realised world seeds must be disjoint. Search randomness uses a separate stream. Development selection and confirmation remain the study author’s explicit responsibility; software validation is not a sealed-data service.

The archived model-reference interface carries one recorded artifact into later calibration and benchmark targets. Each task receives the model unchanged. Its configuration instructions remain in the archived source, not the active Python API.

Read the CTRNN readiness record for the implementation audit, measured costs, pilot results, and remaining search risks.

The first bounded pilot completed three searches per family and evaluated one saved nominee per family on eight fresh development blocks per task. Neither produced a competitive shared design. Most initial models were insensitive to the synthetic input probe, and many candidate recall responses tied. Further development should address input sensitivity and coverage of all delay lengths before increasing the search budget.

Evidence boundary

The feature is integrated experimental software. This readiness statement is not scientific evidence.

One search run does not measure search variance or establish optimality. A selected model remains development output until a later, frozen protocol evaluates it with suitable comparisons and independent randomised blocks. Task performance does not establish cognition, biological fidelity, or general capability.