Options
Options are set and read back through the solver instance entry points; a solver declares the ones it accepts in fznso_<name>_option_list, each with a type and a default.
Setting one it did not declare fails with a message.
Signatures are written ident: type = default, where the type is an FznsoType and absent is FznsoValueAbsent.
7 options
all_solutions
Section titled “all_solutions”all_solutions: bool = falseContinue searching after an optimal solution, to report the others that share its objective value.
With no objective set this option has no effect: every solution is reported anyway.
It is independent of intermediate, which controls whether solutions found on the way to the optimum are reported.
Setting both reports the improving sequence and then every solution tied with the last of them.
fixed_search
Section titled “fixed_search”fixed_search: bool = falseFollow the search order given by the model’s annotations exactly, rather than treating it as advice.
intermediate
Section titled “intermediate”intermediate: bool = falseReport each improving solution as it is found, rather than only the final one.
Only meaningful for a model with an objective.
The solver keeps searching after each report, until it finds a better solution or proves none exists, so the run still ends with FznsoComplete if it finished.
Improving solutions arrive in order, which the serial callback contract guarantees.
random_seed
Section titled “random_seed”random_seed: opt int = absentSeed for the solver’s random number generator; absent means the solver chooses.
Solvers are encouraged to vary the seed by default, so that repeated runs diversify.
threads
Section titled “threads”threads: int = How many threads a multi-threaded solver may search with.
A value above 1 puts the threading contract into effect: the application’s model must be safe to read concurrently, and its should_stop safe to call concurrently.
time_limit
Section titled “time_limit”time_limit: opt int = absentAbandon the search after this many milliseconds; absent means no limit.
Must be positive.
The type carries no range, so a solver rejects a non-positive value through option_set rather than through the type system.
Prefer this over polling a clock in should_stop: a solver told its budget up front can plan its search around it (sizing restart schedules, budgeting between portfolio strategies) in a way one merely being interrupted cannot.
verbose
Section titled “verbose”verbose: bool = falseEmit additional information about the search through the log message scope.