diff options
Diffstat (limited to 'sumofsquares/init/initinteriorconstraint.py')
-rw-r--r-- | sumofsquares/init/initinteriorconstraint.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/sumofsquares/init/initinteriorconstraint.py b/sumofsquares/init/initinteriorconstraint.py new file mode 100644 index 0000000..3daa44e --- /dev/null +++ b/sumofsquares/init/initinteriorconstraint.py @@ -0,0 +1,28 @@ +import polymatrix + +from sumofsquares.abc.sosexpr import SOSExpr +from sumofsquares.impl.interiorconstraintimpl import InteriorConstraintImpl +from sumofsquares.init.initsosexpr import init_param_expr_from_reference + + +def init_interior_constraint( + name: str, + h: SOSExpr, + w: SOSExpr | polymatrix.Expression, +): + sos_constraints = tuple() + + gamma = init_param_expr_from_reference( + name=f'gamma_{name}', + reference=h, + multiplicand=w, + ) + + sos_constraints += gamma.sos_constraints + sos_constraints += (h - gamma * w).sos_constraints + + return InteriorConstraintImpl( + name=name, + gamma=gamma, + sos_constraints=sos_constraints, + ) |