simopt.solvers.fcsa =================== .. py:module:: simopt.solvers.fcsa .. autoapi-nested-parse:: 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 --------------- .. py:data:: EPSILON .. py:class:: FCSAConfig Bases: :py:obj:`simopt.base.SolverConfig` Configuration for the FCSA solver. .. py:attribute:: r :type: Annotated[int, Field(default=30, gt=0, description='number of replications taken at each solution')] .. py:attribute:: h :type: Annotated[float, Field(default=0.1, gt=0, description='difference in finite difference gradient')] .. py:attribute:: step_type :type: Annotated[Literal['const', 'decay'], Field(default='const', description='constant or decaying step size?')] .. py:attribute:: step_mult :type: Annotated[float, Field(default=0.1, gt=0, description='value of const step size or multiplier of k for decay')] .. py:attribute:: tolerance :type: Annotated[float, Field(default=0.01, ge=0, description='tolerance function')] .. py:attribute:: search_direction :type: 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')] .. py:attribute:: normalize_grads :type: Annotated[bool, Field(default=True, description='normalize gradients used for search direction?')] .. py:attribute:: feas_const :type: Annotated[float, Field(default=0.0, ge=0, description='feasibility constant to relax objective constraint')] .. py:attribute:: feas_score :type: Annotated[int, Field(default=2, gt=0, description='degree of feasibility score to relax objective constraint')] .. py:attribute:: report_all_solns :type: Annotated[bool, Field(default=False, description='report all incumbent solutions?')] .. py:class:: FCSA(name: str = '', fixed_factors: dict | None = None) Bases: :py:obj:`simopt.base.Solver` Fully Cooperative Stochastic Approximation (FCSA) solver. Initialize a solver object. :param name: Name of the solver. Defaults to an empty string. :type name: str, optional :param fixed_factors: Dictionary of user-specified solver factors. Defaults to None. :type fixed_factors: dict | None, optional .. py:attribute:: name :type: str :value: 'FCSA' .. py:attribute:: config_class :type: ClassVar[type[FCSAConfig]] Configuration class for the solver. .. py:attribute:: class_name_abbr :type: ClassVar[str] :value: 'FCSA' Short name of the solver class. .. py:attribute:: class_name :type: ClassVar[str] :value: 'FCSA' Long name of the solver class. .. py:attribute:: objective_type :type: ClassVar[simopt.base.ObjectiveType] Description of objective types. .. py:attribute:: constraint_type :type: ClassVar[simopt.base.ConstraintType] Description of constraint types. .. py:attribute:: variable_type :type: ClassVar[simopt.base.VariableType] Description of variable types. .. py:attribute:: gradient_needed :type: ClassVar[bool] :value: False True if gradient of objective function is needed, otherwise False. .. py:method:: solve(problem: simopt.base.Problem) -> None Run a single macroreplication of a solver on a problem. :param problem: Simulation-optimization problem to solve. :type problem: Problem :returns: - list [Solution]: List of solutions recommended throughout the budget. - list [int]: List of intermediate budgets when recommended solutions change. :rtype: tuple