summaryrefslogtreecommitdiffstats
path: root/sumofsquares/init/initinteriorconstraint.py
diff options
context:
space:
mode:
Diffstat (limited to 'sumofsquares/init/initinteriorconstraint.py')
-rw-r--r--sumofsquares/init/initinteriorconstraint.py28
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,
+ )