OptimizationProblemSpec

@Serializable
data class OptimizationProblemSpec(val problemName: String? = null, val modelIdentifier: String? = null, val objectiveResponseName: String, val inputs: List<OptimizationInputSpec>, val responseNames: List<String> = emptyList(), val optimizationType: OptimizationType = OptimizationType.MINIMIZE, val indifferenceZoneParameter: Double = 0.0, val objectiveGranularity: Double = 0.0, val linearConstraints: List<LinearConstraintSpec> = emptyList(), val responseConstraints: List<ResponseConstraintSpec> = emptyList(), val defaultLinearPenalty: PenaltyFunctionSpec = PenaltyFunctionSpec.DynamicPolynomial(), val defaultResponsePenalty: PenaltyFunctionSpec = PenaltyFunctionSpec.WithMemory())(source)

Serializable counterpart to a ksl.simopt.problem.ProblemDefinition.

Holds only persisted, plain-data fields needed to construct a problem definition during run preparation. Single-field and local cross-field domain invariants are enforced in init. Cross-reference checks (e.g. response-constraint names must resolve against the built model; decision-variable names must not collide with fixed baseline controls) require additional context and remain the responsibility of ksl.app.validation.OptimizationConfigurationValidator.

Constructors

Link copied to clipboard
constructor(problemName: String? = null, modelIdentifier: String? = null, objectiveResponseName: String, inputs: List<OptimizationInputSpec>, responseNames: List<String> = emptyList(), optimizationType: OptimizationType = OptimizationType.MINIMIZE, indifferenceZoneParameter: Double = 0.0, objectiveGranularity: Double = 0.0, linearConstraints: List<LinearConstraintSpec> = emptyList(), responseConstraints: List<ResponseConstraintSpec> = emptyList(), defaultLinearPenalty: PenaltyFunctionSpec = PenaltyFunctionSpec.DynamicPolynomial(), defaultResponsePenalty: PenaltyFunctionSpec = PenaltyFunctionSpec.WithMemory())

Properties

Link copied to clipboard

problem-level default penalty function applied to any LinearConstraintSpec whose own LinearConstraintSpec.penaltyFunction is null; mirrors ksl.simopt.problem.ProblemDefinition.defaultLinearPenalty

Link copied to clipboard

problem-level default penalty function applied to any ResponseConstraintSpec whose own ResponseConstraintSpec.penaltyFunction is null; mirrors ksl.simopt.problem.ProblemDefinition.defaultResponsePenalty

Link copied to clipboard

smallest objective-function difference considered practically meaningful; must be >= 0 and finite; defaults to 0.0

Link copied to clipboard

decision variables controlled by the solver; must be non-empty and have unique OptimizationInputSpec.name values

Link copied to clipboard

optional linear constraints over decision variables

Link copied to clipboard

optional model identifier; non-blank when non-null

Link copied to clipboard

granularity applied to the objective function value; must be >= 0 and finite; 0.0 means full precision

Link copied to clipboard

name of the model response that is optimized; must be non-blank and must match a response on the built model

Link copied to clipboard

minimize or maximize

Link copied to clipboard

optional human-readable name; non-blank when non-null

Link copied to clipboard

optional response constraints

Link copied to clipboard

additional response names that may be referenced by response constraints; every entry must be non-blank and the list must contain no duplicates; the objective response is implied and need not be repeated here