simopt.solvers.fcsa

Fully Cooperative Stochastic Approximation (FCSA) solver.

This solver is based on the paper ‘Diagnostic Tools for Evaluating Solvers for Stochastically Constrained Simulation Optimization Problems’ by Felice, N., D. J. Eckman, S. G. Henderson, and S. Shashaani

Module Contents

simopt.solvers.fcsa.EPSILON
class simopt.solvers.fcsa.FCSAConfig

Bases: simopt.base.SolverConfig

Configuration for the FCSA solver.

r: Annotated[int, Field(default=30, gt=0, description='number of replications taken at each solution')]
h: Annotated[float, Field(default=0.1, gt=0, description='difference in finite difference gradient')]
step_type: Annotated[Literal['const', 'decay'], Field(default='const', description='constant or decaying step size?')]
step_mult: Annotated[float, Field(default=0.1, gt=0, description='value of const step size or multiplier of k for decay')]
tolerance: Annotated[float, Field(default=0.01, ge=0, description='tolerance function')]
search_direction: Annotated[Literal['FCSA', 'CSA-N', 'CSA'], Field(default='FCSA', description='determines how solver finds the search direction for the next iteration. Can be FCSA, CSA-N, or CSA')]
normalize_grads: Annotated[bool, Field(default=True, description='normalize gradients used for search direction?')]
feas_const: Annotated[float, Field(default=0.0, ge=0, description='feasibility constant to relax objective constraint')]
feas_score: Annotated[int, Field(default=2, gt=0, description='degree of feasibility score to relax objective constraint')]
report_all_solns: Annotated[bool, Field(default=False, description='report all incumbent solutions?')]
class simopt.solvers.fcsa.FCSA(name: str = '', fixed_factors: dict | None = None)

Bases: simopt.base.Solver

Fully Cooperative Stochastic Approximation (FCSA) solver.

Initialize a solver object.

Parameters:
  • name (str, optional) – Name of the solver. Defaults to an empty string.

  • fixed_factors (dict | None, optional) – Dictionary of user-specified solver factors. Defaults to None.

name: str = 'FCSA'
config_class: ClassVar[type[FCSAConfig]]

Configuration class for the solver.

class_name_abbr: ClassVar[str] = 'FCSA'

Short name of the solver class.

class_name: ClassVar[str] = 'FCSA'

Long name of the solver class.

objective_type: ClassVar[simopt.base.ObjectiveType]

Description of objective types.

constraint_type: ClassVar[simopt.base.ConstraintType]

Description of constraint types.

variable_type: ClassVar[simopt.base.VariableType]

Description of variable types.

gradient_needed: ClassVar[bool] = False

True if gradient of objective function is needed, otherwise False.

solve(problem: simopt.base.Problem) None

Run a single macroreplication of a solver on a problem.

Parameters:

problem (Problem) – Simulation-optimization problem to solve.

Returns:

  • list [Solution]: List of solutions recommended throughout the budget.

  • list [int]: List of intermediate budgets when recommended solutions

    change.

Return type:

tuple