Skip to content

Objectives and Constraints

Objectives define what to optimize. Constraints define what is acceptable.

Losses

FlowDesign includes:

  • EnergyLoss
  • TargetLoss
  • UpperBoundLoss
  • LowerBoundLoss
  • CompositeLoss

Example:

objectives = [
    EnergyLoss(target="CD", mode="minimize", weight=1.0),
]

Constraints

Constraints can be soft or hard:

constraints = [
    CLConstraint(target=0.5, tolerance=0.02, mode="soft", weight=20.0),
    CDConstraint(max_value=0.015, mode="soft", weight=10.0),
    ThicknessConstraint(min_thickness=0.08, mode="hard"),
]

Each constraint exposes:

evaluate(x, outputs=None)
penalty(x, outputs=None)
is_satisfied(x, outputs=None)

Soft constraints contribute penalties to problem.loss(x). Hard constraints are used by problem.is_feasible(x) and result filtering.