Skip to content

Commit b52f933

Browse files
authored
Add API reference (#348)
* Add doc * Add API reference * Fixes
1 parent 40ce2a4 commit b52f933

25 files changed

+249
-274
lines changed

docs/make.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ makedocs(
4444
"Sum-of-Squares Programming" => "sumofsquares.md",
4545
"Variables" => "variables.md",
4646
"Constraints" => "constraints.md",
47+
"API Reference" => [
48+
"reference/standard_form.md",
49+
"reference/constraints.md",
50+
"reference/certificate.md",
51+
"reference/internal.md",
52+
],
4753
"Tutorials" => map(
4854
subdir ->
4955
subdir => map(

docs/src/constraints.md

Lines changed: 3 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ This approach adds the flexibility to choose the default cone for
110110
which is the cone given as default to `PolyJuMP.NonNegPolyMatrix`.
111111

112112
For instance, to use the diagonally-dominant-sum-of-squares cone (see
113-
[Definition 2, AM17]) for the first type of contraints, do
113+
[Ahmadi2017; Definition 2](@cite)) for the first type of contraints, do
114114
```jldoctest constraint-pq
115115
julia> PolyJuMP.setdefault!(model, PolyJuMP.NonNegPoly, DSOSCone)
116116
DSOSCone (alias for NonnegPolyInnerCone{SumOfSquares.DiagonallyDominantConeTriangle})
@@ -151,7 +151,7 @@ julia> @constraint(model, α * x^2 + β * y^2 ≥ (α - β) * x * y)
151151
```
152152
where `α` and `β` are JuMP decision variables and `x` and `y` are polynomial
153153
variables. Since the polynomial is a quadratic form, the sum-of-squares
154-
certificate is also a quadratic form (see [Section~3.3.4, BPT12]). Hence the
154+
certificate is also a quadratic form (see [Blekherman2012; Section~3.3.4](@cite)). Hence the
155155
default polynomial basis used for the [Nonnegative polynomial variables]
156156
certificate is `MonomialBasis([x, y])`, that is, we search for a positive
157157
semidefinite matrix `Q` such that
@@ -215,7 +215,7 @@ the output of `dual` only contains the moments corresponding to monomials of `p`
215215
while the output of `moments` may give the moments of other monomials if `s(x)`
216216
has more monomials than `p(x)`. Besides, if the domain contains polynomial,
217217
equalities, only the remainder of `p(x) - s(x)` modulo the ideal is constrained
218-
to be zero, see Corollary 2 of [CLO13]. In that case, the output `moments` is
218+
to be zero, see Corollary 2 of [Cox2015](@cite). In that case, the output `moments` is
219219
the dual of the constraint on the remainder so some monomials may have different
220220
moments with `dual` or `moments`.
221221

@@ -232,134 +232,6 @@ a sum of Dirac measures) that has the moments given in the the moment matrix
232232
or stability analysis (see
233233
[this notebook](https://github.com/blegat/SwitchOnSafety.jl/blob/master/examples/LPJ17e43.ipynb)).
234234

235-
### References
236-
237-
[BPT12] Blekherman, G.; Parrilo, P. A. & Thomas, R. R.
238-
*Semidefinite Optimization and Convex Algebraic Geometry*.
239-
Society for Industrial and Applied Mathematics, **2012**.
240-
241-
[CLO13] Cox, D., Little, J., & OShea, D.
242-
*Ideals, varieties, and algorithms: an introduction to computational algebraic geometry and commutative algebra*.
243-
Springer Science & Business Media, **2013**.
244-
245-
[AM17] Ahmadi, A. A. & Majumdar, A.
246-
*DSOS and SDSOS Optimization: More Tractable Alternatives to Sum of Squares and Semidefinite Optimization*.
247-
ArXiv e-prints, **2017**.
248-
249-
## API Reference
250-
251-
Default choice for the `maxdegree` keyword:
252-
```@docs
253-
SumOfSquares.default_maxdegree
254-
```
255-
256-
Special case that is second-order cone representable:
257-
```@docs
258-
SumOfSquares.PositiveSemidefinite2x2ConeTriangle
259-
```
260-
261-
Inner approximations of the PSD cone that do not require semidefinite
262-
programming:
263-
```@docs
264-
SumOfSquares.DiagonallyDominantConeTriangle
265-
SumOfSquares.ScaledDiagonallyDominantConeTriangle
266-
```
267-
268-
Approximations of the cone of nonnegative polynomials:
269-
```@docs
270-
SumOfSquares.NonnegPolyInnerCone
271-
SumOfSquares.SOSCone
272-
SumOfSquares.SDSOSCone
273-
SumOfSquares.DSOSCone
274-
```
275-
276-
Approximations of the cone of positive semidefinite polynomial matrices:
277-
```@docs
278-
SumOfSquares.PSDMatrixInnerCone
279-
SumOfSquares.SOSMatrixCone
280-
```
281-
282-
Approximations of the cone of convex polynomials:
283-
```@docs
284-
SumOfSquares.ConvexPolyInnerCone
285-
SumOfSquares.SOSConvexCone
286-
```
287-
288-
Approximations of the cone of copositive matrices:
289-
```@docs
290-
SumOfSquares.CopositiveInner
291-
```
292-
293-
Types of sparsity
294-
```@docs
295-
SumOfSquares.Certificate.Sparsity.Variable
296-
SumOfSquares.Certificate.Sparsity.Monomial
297-
SumOfSquares.Certificate.Sparsity.SignSymmetry
298-
SumOfSquares.Certificate.Sparsity.XORSpace
299-
```
300-
301-
Ideal certificates:
302-
```@docs
303-
SumOfSquares.Certificate.MaxDegree
304-
SumOfSquares.Certificate.FixedBasis
305-
SumOfSquares.Certificate.Newton
306-
SumOfSquares.Certificate.Remainder
307-
SumOfSquares.Certificate.Sparsity.Ideal
308-
SumOfSquares.Certificate.Symmetry.Ideal
309-
```
310-
311-
Preorder certificates:
312-
```@docs
313-
SumOfSquares.Certificate.Putinar
314-
SumOfSquares.Certificate.Sparsity.Preorder
315-
```
316-
317-
Attributes
318-
```@docs
319-
SumOfSquares.PolyJuMP.MomentsAttribute
320-
SumOfSquares.MultivariateMoments.moments(::SumOfSquares.JuMP.ConstraintRef)
321-
GramMatrix
322-
SumOfSquares.GramMatrixAttribute
323-
gram_matrix
324-
gram_operate
325-
SumOfSquares.MomentMatrixAttribute
326-
moment_matrix
327-
SumOfSquares.CertificateBasis
328-
certificate_basis
329-
certificate_monomials
330-
SumOfSquares.LagrangianMultipliers
331-
lagrangian_multipliers
332-
SOSDecomposition
333-
SOSDecompositionWithDomain
334-
SumOfSquares.SOSDecompositionAttribute
335-
sos_decomposition
336-
```
337-
338-
Bridges are automatically added using the following utilities:
339-
```@docs
340-
SumOfSquares.PolyJuMP.bridgeable
341-
SumOfSquares.PolyJuMP.bridges
342-
```
343-
344-
Chordal extension:
345-
```@docs
346-
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.neighbors
347-
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.fill_in
348-
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.is_clique
349-
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.LabelledGraph
350-
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.add_node!
351-
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.add_edge!
352-
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.add_clique!
353-
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.completion
354-
```
355-
356-
Bridges for polynomial optimization
357-
```@docs
358-
PolyJuMP.ScalarPolynomialFunction
359-
PolyJuMP.Bridges.Objective.ToPolynomialBridge
360-
PolyJuMP.Bridges.Constraint.ToPolynomialBridge
361-
```
362-
363235
### SAGE extension
364236

365237
To use the SAGE cone in place of the Sum-of-Squares cone for an inequality constraints
@@ -368,21 +240,3 @@ between polynomials, use the following:
368240
import PolyJuMP
369241
PolyJuMP.setpolymodule!(model, PolyJuMP.SAGE)
370242
```
371-
372-
```@docs
373-
SumOfSquares.PolyJuMP.SAGE.Polynomials
374-
SumOfSquares.PolyJuMP.SAGE.Decomposition
375-
SumOfSquares.PolyJuMP.SAGE.Signomials
376-
SumOfSquares.PolyJuMP.SAGE.DecompositionAttribute
377-
SumOfSquares.PolyJuMP.SAGE.SignomialsBridge
378-
SumOfSquares.PolyJuMP.SAGE.AGEBridge
379-
```
380-
381-
### Internal functions
382-
383-
```@docs
384-
SumOfSquares.Certificate.Symmetry.orthogonal_transformation_to
385-
SumOfSquares.Certificate.Symmetry._reorder!
386-
SumOfSquares.Certificate.Symmetry._rotate_complex
387-
PolyJuMP.QCQP._subs_ensure_moi_order
388-
```

docs/src/reference/certificate.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Certificate
2+
3+
Default choice for the `maxdegree` keyword:
4+
```@docs
5+
SumOfSquares.default_maxdegree
6+
```
7+
8+
Types of sparsity
9+
```@docs
10+
SumOfSquares.Certificate.Sparsity.Variable
11+
SumOfSquares.Certificate.Sparsity.Monomial
12+
SumOfSquares.Certificate.Sparsity.SignSymmetry
13+
SumOfSquares.Certificate.Sparsity.XORSpace
14+
```
15+
16+
Ideal certificates:
17+
```@docs
18+
SumOfSquares.Certificate.MaxDegree
19+
SumOfSquares.Certificate.FixedBasis
20+
SumOfSquares.Certificate.Newton
21+
SumOfSquares.Certificate.Remainder
22+
SumOfSquares.Certificate.Sparsity.Ideal
23+
SumOfSquares.Certificate.Symmetry.Ideal
24+
```
25+
26+
Preorder certificates:
27+
```@docs
28+
SumOfSquares.Certificate.Putinar
29+
SumOfSquares.Certificate.Sparsity.Preorder
30+
```
31+
32+
Chordal extension:
33+
```@docs
34+
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.neighbors
35+
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.fill_in
36+
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.is_clique
37+
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.LabelledGraph
38+
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.add_node!
39+
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.add_edge!
40+
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.add_clique!
41+
SumOfSquares.Certificate.Sparsity.ChordalExtensionGraph.completion
42+
```

docs/src/reference/constraints.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Constraints
2+
3+
## Attributes
4+
5+
```@docs
6+
SumOfSquares.PolyJuMP.MomentsAttribute
7+
SumOfSquares.MultivariateMoments.moments(::SumOfSquares.JuMP.ConstraintRef)
8+
GramMatrix
9+
SumOfSquares.GramMatrixAttribute
10+
gram_matrix
11+
gram_operate
12+
SumOfSquares.MomentMatrixAttribute
13+
moment_matrix
14+
SumOfSquares.CertificateBasis
15+
certificate_basis
16+
certificate_monomials
17+
SumOfSquares.LagrangianMultipliers
18+
lagrangian_multipliers
19+
SOSDecomposition
20+
SOSDecompositionWithDomain
21+
SumOfSquares.SOSDecompositionAttribute
22+
sos_decomposition
23+
```
24+
25+
SAGE decomposition attribute:
26+
```@docs
27+
SumOfSquares.PolyJuMP.SAGE.Decomposition
28+
SumOfSquares.PolyJuMP.SAGE.DecompositionAttribute
29+
```

docs/src/reference/internal.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Internal functions
2+
3+
```@docs
4+
SumOfSquares.Certificate.Symmetry.orthogonal_transformation_to
5+
SumOfSquares.Certificate.Symmetry._reorder!
6+
SumOfSquares.Certificate.Symmetry._rotate_complex
7+
PolyJuMP.QCQP._subs_ensure_moi_order
8+
```
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Standard form
2+
3+
## JuMP variables
4+
5+
```@docs
6+
SumOfSquares.PolyJuMP.Poly
7+
```
8+
9+
## JuMP Sets
10+
11+
Approximations of the cone of nonnegative polynomials:
12+
```@docs
13+
SumOfSquares.NonnegPolyInnerCone
14+
SumOfSquares.SOSCone
15+
SumOfSquares.SDSOSCone
16+
SumOfSquares.DSOSCone
17+
```
18+
19+
Approximations of the cone of positive semidefinite polynomial matrices:
20+
```@docs
21+
SumOfSquares.PSDMatrixInnerCone
22+
SumOfSquares.SOSMatrixCone
23+
```
24+
25+
Approximations of the cone of convex polynomials:
26+
```@docs
27+
SumOfSquares.ConvexPolyInnerCone
28+
SumOfSquares.SOSConvexCone
29+
```
30+
31+
Approximations of the cone of copositive matrices:
32+
```@docs
33+
SumOfSquares.CopositiveInner
34+
```
35+
36+
SAGE cones:
37+
```@docs
38+
SumOfSquares.PolyJuMP.SAGE.Polynomials
39+
SumOfSquares.PolyJuMP.SAGE.Signomials
40+
SumOfSquares.PolyJuMP.SAGE.SignomialsBridge
41+
SumOfSquares.PolyJuMP.SAGE.AGEBridge
42+
```
43+
44+
## MOI Sets
45+
46+
Special cases of positive semidefinite cones:
47+
```@docs
48+
SumOfSquares.EmptyCone
49+
SumOfSquares.PositiveSemidefinite2x2ConeTriangle
50+
```
51+
52+
Inner approximations of the PSD cone that do not require semidefinite
53+
programming:
54+
```@docs
55+
SumOfSquares.DiagonallyDominantConeTriangle
56+
SumOfSquares.ScaledDiagonallyDominantConeTriangle
57+
SumOfSquares.Bridges.Variable.ScaledDiagonallyDominantBridge
58+
```
59+
60+
## Bridges
61+
62+
Bridges are automatically added using the following utilities:
63+
```@docs
64+
SumOfSquares.PolyJuMP.bridgeable
65+
SumOfSquares.PolyJuMP.bridges
66+
```
67+
68+
Bridges for polynomial optimization
69+
```@docs
70+
PolyJuMP.ScalarPolynomialFunction
71+
PolyJuMP.Bridges.Objective.ToPolynomialBridge
72+
PolyJuMP.Bridges.Constraint.ToPolynomialBridge
73+
```

0 commit comments

Comments
 (0)