diff options
-rw-r--r-- | sumofsquares/__init__.py | 93 |
1 files changed, 58 insertions, 35 deletions
diff --git a/sumofsquares/__init__.py b/sumofsquares/__init__.py index 39504a4..54aec7e 100644 --- a/sumofsquares/__init__.py +++ b/sumofsquares/__init__.py @@ -7,41 +7,62 @@ This is a package to solve sum-of-squares optimization problems. Module Overview --------------- -Class diagram, arrows denote inheritance, whereas diamonds indicate composition. +Class diagram: Arrows denote inheritance, diamonds indicate composition. :: - - ┏━━sumofsquares package━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ - ┃ ┌─.abc──────────────────────────────────────────────────────────────────────────────────────────┐ ┃ - ┃ │ ┌────────────┐ ┌──────────────┐ ┌─────────┐ ┌───────┐ ┌──────────────┐ │ ┃ - ┃ │ │ SolverInfo │◇─┐ │ Solver(Enum) │ │ Problem │ │ Set │ │ Constraint │ │ ┃ - ┃ │ └────────────┘ │ └──────────────┘ └─────────┘ └───────┘ └──────────────┘ │ ┃ - ┃ │ ▲ │ ▲ ▲ ▲ │ ┃ - ┃ └────────┼────────┼─────────────────────────┼─────────────┼───────────────┼─────────────────────┘ ┃ - ┃ │ │ ┌────────────┘ ┌──┘ ├─────────────┐ ┃ - ┃ │ │ │ │ │ │ ┃ - ┃ ┌─.cvxop│t─────┐ │ ┌─.problems┼──────────┐ ┌─.constrai│nts───────────────┼─────────────┼───────┐ ┃ - ┃ │ │ │ │ │ │ │ │ │ │ │ │ ┃ - ┃ │ ┌──────────┐ │ │ │ ┌─────────────────┐ │ │ ┌────────────────┐ ┌───────────┐ ┌───────────┐ │ ┃ - ┃ │ │CVXOptInfo│ │ │ │ │PutinarSOSProblem│ │ │ │ ArchimedeanSet │◇───│NonNegative│ │EqualToZero│ │ ┃ - ┃ │ └──────────┘ │ │ │ └─────────────────┘ │ │ └────────────────┘ └───────────┘ └───────────┘ │ ┃ - ┃ │ │ │ │ ┌────────┐ │ │ │ ┃ - ┃ │ │ └─┼─│ Result │ │ │ │ ┃ - ┃ │ │ │ └────────┘ │ │ │ ┃ - ┃ └──────────────┘ └─────────────────────┘ └───────────────────────────────────────────────────┘ ┃ - ┃ ┌─.variable─────────────────┐ ┃ ┏━━━polymatrix package━━━━━━━━━┓ - ┃ │ │ ┃ ┃ ┃ - ┃ │ ┌───────────┐ │ ┃ ┃ ┌──────────┐ ┌──────────┐ ┃ - ┃ │ │OptVariable│──────────┼──╋──╋─▶│ Variable │ │Expression│ ┃ - ┃ │ └───────────┘ │ ┃ ┃ └──────────┘ └──────────┘ ┃ - ┃ │ ▲ │ ┃ ┃ │ ┃ - ┃ │ │ │ ┃ ┃ ┌─────────┘ ┃ - ┃ │ │ │ ┃ ┃ ◇ ┃ - ┃ │ ┌────────────────┐ │ ┃ ┃ ┌─────────────────────┐ ┃ - ┃ │ │OptVariableMixin│────────┼──╋──╋─▶│ ExpressionBaseMixin │ ┃ - ┃ │ └────────────────┘ │ ┃ ┃ └─────────────────────┘ ┃ - ┃ └───────────────────────────┘ ┃ ┃ ┃ - ┃ ┃ ┃ ┃ - ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + ┏━━sumofsquares package━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ ┃ + ┃ ┌─.abc──────────────┐ ┌─.problems────────────────────────────────────────────────────┐ ┃ + ┃ │ ┌──────────────┐ │ │ │ ┃ + ┃ │ │ Problem │◀─┼───┼────────────┬───────────────────┬──────────────────┐ │ ┃ + ┃ │ └──────────────┘ │ │ │ │ │ │ ┃ + ┃ │ │ │ │ ┌───────────────────┐ ┌────────────┐ ┌──────────────────┐ │ ┃ + ┃ │ ◇ │ │ │ ConicProblem │ │ SOSProblem │ │InternalSOSProblem│ │ ┃ + ┃ │ ┌──────────────┐ │ │ └───────────────────┘ └────────────┘ └──────────────────┘ │ ┃ + ┃ │ │ Solver(Enum) │ │ │ ▲ │ ┃ + ┃ │ └──────────────┘ │ │ ┌────┴────────────────┐ │ ┃ + ┃ │ │ │ │ │ │ ┃ + ┃ │ ┌──────────────┐ │ │ ┌─────────────┐ ┌─────────────────┐ ┌────────────────────┐ │ ┃ + ┃ │ │ Result │◀─┼───┼─│ ConicResult │ │PutinarSOSProblem│ │SchmuedgenSOSProblem│ │ ┃ + ┃ │ └──────────────┘ │ │ └─────────────┘ └─────────────────┘ └────────────────────┘ │ ┃ + ┃ │ │ │ └──────────────────────────────────────────────────────────────┘ ┃ + ┃ │ │ │ ┃ + ┃ │ ◇ │ ┌─.solvers.cvxopt──┐ ┌─.solvers.scs─────┐ ┌─.solvers.mosek───┐ ┃ + ┃ │ ┌──────────────┐ │ │ │ │ │ │ │ ┃ + ┃ │ │ SolverInfo │◀─┼───┼───────┬──────────┼──┼──────┬───────────┼──┼──────┐ │ ┃ + ┃ │ └──────────────┘ │ │ │ │ │ │ │ │ │ │ ┃ + ┃ │ │ │ ┌──────────┐ │ │ ┌─────────┐ │ │ ┌─────────┐ │ ┃ + ┃ │ │ │ │CVXOptInfo│ │ │ │ SCSInfo │ │ │ │MosekInfo│ │ ┃ + ┃ │ │ │ └──────────┘ │ │ └─────────┘ │ │ └─────────┘ │ ┃ + ┃ │ │ └──────────────────┘ └──────────────────┘ └──────────────────┘ ┃ + ┃ │ │ ┃ + ┃ │ │ ┌─.constraints──────────────────────────────────────────────────────┐ ┃ + ┃ │ ┌──────────────┐ │ │ │ ┃ + ┃ │ │ Constraint │◀─┼───┼───────────────────────────┬────────┬──────────┬─────────┐ │ ┃ + ┃ │ └──────────────┘ │ │ │ │ │ │ │ ┃ + ┃ │ ┌──────────────┐ │ │ ┌───────────────────────┐ │ ┌───────────┐ │ ┌───────────────┐ │ ┃ + ┃ │ │ Set │◀─┼───┼─│ BasicSemialgebraicSet │ │ │EqualToZero│ │ │ExponentialCone│ │ ┃ + ┃ │ └──────────────┘ │ │ └───────────────────────┘ │ └───────────┘ │ └───────────────┘ │ ┃ + ┃ │ │ │ ◇ │ │ │ ┃ + ┃ │ │ │ │ ┌───────────┐ ┌────────────────────┐ │ ┃ + ┃ │ │ │ └───────│NonNegative│ │PositiveSemiDefinite│ │ ┃ + ┃ │ │ │ └───────────┘ └────────────────────┘ │ ┃ + ┃ │ │ │ │ ┃ + ┃ │ │ │ │ ┃ + ┃ └───────────────────┘ └───────────────────────────────────────────────────────────────────┘ ┃ + ┃ ┃ + ┃ ┌─.variable─────────────────┐ ┃ ┏━━━polymatrix package━━━━━━━━━┓ + ┃ │ │ ┃ ┃ ┃ + ┃ │ ┌───────────┐ │ ┃ ┃ ┌──────────┐ ┌──────────┐ ┃ + ┃ │ │OptVariable│──────────┼──╋───╋─▶│ Variable │ │Expression│ ┃ + ┃ │ └───────────┘ │ ┃ ┃ └──────────┘ └──────────┘ ┃ + ┃ │ ▲ │ ┃ ┃ │ ┃ + ┃ │ │ │ ┃ ┃ ┌─────────┘ ┃ + ┃ │ │ │ ┃ ┃ ◇ ┃ + ┃ │ ┌────────────────┐ │ ┃ ┃ ┌─────────────────────┐ ┃ + ┃ │ │OptVariableMixin│────────┼──╋───╋─▶│ ExpressionBaseMixin │ ┃ + ┃ │ └────────────────┘ │ ┃ ┃ └─────────────────────┘ ┃ + ┃ └───────────────────────────┘ ┃ ┃ ┃ + ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ """ from typing import Iterable @@ -54,8 +75,10 @@ from .abc import Problem, Result, Set, Constraint, Solver from .constraints import BasicSemialgebraicSet, NonNegative from .problems import PutinarSOSProblem from .utils import partition -from .variable import OptVariable, from_names +from .variable import OptVariable, from_names as internal_from_names +# export function +from_names = internal_from_names def make_sos_constraint(expr: Expression, domain: Set | None = None) -> NonNegative: return NonNegative(expr, domain) |