3.3 Feasible Design Space
Feasibility comes before preference¶
The feasible set is the collection of designs satisfying every constraint:
Optimization searches for the preferred point inside . A low objective value outside this set is not a candidate design. This distinction is especially important in CCD because stability, saturation, displacement, temperature, and stress constraints can carve out a narrow or disconnected feasible region.
For the suspension, small may violate displacement limits, large may degrade ride response, and small may make the required feedback action impossible. The controller changes the location of these boundaries; the feasible plant set is therefore not fixed independently of control design.
Constraint violation as a diagnostic¶
Define the nonnegative violation measure
A value indicates feasibility under the chosen scaling and tolerances. During debugging, reporting each contribution is more informative than reporting only a solver’s success flag.
import numpy as np
# Illustrative algebraic screening model, not a suspension simulation.
def screen_design(k, fmax):
ride = (k / 18_000.0) ** 2 + (2200.0 / fmax) ** 2
travel = 0.11 * (12_000.0 / k) + 35.0 / fmax
g = {
"travel": travel - 0.13,
"authority": 1800.0 + 0.03 * k - fmax,
}
feasible = all(value <= 0 for value in g.values())
return ride, g, feasible
for design in [(12_000, 1800), (15_000, 2800), (24_000, 3000)]:
print(design, screen_design(*design))