Skip to contentSkip to Content

spires_opt_budget

Struct defining a single budget stage in the AGILE optimizer’s multi-fidelity search.


Definition

struct spires_opt_budget { double data_fraction; int num_seeds; double time_limit_sec; int _reserved_i0; double _reserved_d0; };

Fields

FieldTypeDescription
data_fractiondoubleFraction of the input/target series to use during this budget stage, in the range (0, 1]. A value of 0.25 means the optimizer trains and evaluates each candidate using the first 25% of the time series. Lower fractions make evaluation cheaper, enabling broader exploration.
num_seedsintNumber of independent random reservoir instantiations to evaluate per candidate configuration. Multiple seeds reduce the variance of the performance estimate. Must be at least 1.
time_limit_secdoubleWall-clock time limit in seconds for this budget stage. The optimizer will stop evaluating new candidates in this stage once the time limit is reached, even if not all planned evaluations have completed. Set to 0 or a negative value to disable the time limit.
_reserved_i0intReserved for future use. Must be set to 0.
_reserved_d0doubleReserved for future use. Must be set to 0.

Example

/* Three-stage progressive refinement */ struct spires_opt_budget budgets[] = { { .data_fraction = 0.10, .num_seeds = 50, .time_limit_sec = 15.0 }, { .data_fraction = 0.50, .num_seeds = 10, .time_limit_sec = 60.0 }, { .data_fraction = 1.00, .num_seeds = 3, .time_limit_sec = 300.0 } };

Notes

  • Stage ordering. Budget stages are processed in array order by spires_optimize. It is conventional (but not required) to order stages from cheap (low data_fraction, high num_seeds) to expensive (high data_fraction, low num_seeds). The optimizer eliminates low-performing candidates between stages.
  • Data fraction semantics. The optimizer uses the first floor(data_fraction * series_length) timesteps. It does not perform random subsampling, ensuring that temporal ordering is preserved.
  • Reserved fields. The _reserved_i0 and _reserved_d0 fields exist for ABI forward-compatibility. Always zero-initialize them. Using designated initializers (as in the example above) automatically zeroes unmentioned fields.

See Also

Last updated on