In addition to running single simulation runs, HASH enables simultaneous simulation runs with different parameters. In HASH, experiments are defined in the experiments.json
file. Currently supported are:
linspace
- vary a single parameter within a range
arange
- vary a parameter based on an increment
values
- manually enter values for a specific parameter
monte-carlo
- generate random numbers according to a distribution
group
- group together multiple experiment types into a single experiment
For example, this values
experiment will run seven experiments, setting a different value of [0..6] in the radius field in each one.
experiments.json{"Sweep values": {"type": "values","field": "radius","values": [0,1,2,3,4,5,6],"steps": 100}}
To run an experiment, click the "Experiment Runner" button in the runner controls, denoted with a beaker icon. The option "Sweep Values" will be available in the selector.
If you want to run an experiment from another users published simulation - for instance an example simulation - first save a copy to your drive and then click the experiment runner.
Running this experiment will generate 7 new simulations, each with a slightly different globals.json. If we run the simulation, we can see exactly which parameters get changed in the sidebar:
To access the changed varied parameter from within the simulation, we simply access that parameter in globals:
const behavior = (state, context) => {const { radius } = context.globals();};
Now, any behaviors that rely on the "radius" parameter from globals will use the corresponding value.
You can run experiments locally or in hCloud