2 def __init__(self
, dimension
):
3 self
._dimension
= dimension
9 class NonnegativeOrthant(SymmetricCone
):
12 class IceCream(SymmetricCone
):
15 class SymmetricPSD(SymmetricCone
):
18 class CartesianProduct(SymmetricCone
):
19 def __init__(self
, *factors
):
20 self
._factors
= factors
25 def cvxopt_dims(self
):
26 d
= { 'l':0, 'q':[], 's':[] }
27 d
['l'] += sum([ K
.dimension() for K
in self
.factors()
28 if isinstance(K
, NonnegativeOrthant
) ])
29 d
['q'] = [ K
.dimension() for K
in self
.factors()
30 if isinstance(K
, IceCream
) ]
31 d
['s'] = [ K
.dimension() for K
in self
.factors()
32 if isinstance(K
, SymmetricPSD
) ]
36 return sum([ f
.dimension() for f
in self
.factors() ])