Example 2.1 of [AP12]

Contributed by: Benoît Legat

The JSR is 1.

[AP12] A. Ahmadi, and P. Parrilo Joint spectral radius of rank one matrices and the maximum cycle mean problem. CDC, 731-733, 2012.

using SwitchOnSafety
A1 = [0 1
      0 0]
A2 = [0 0
      1 0]
s = discreteswitchedsystem([A1, A2])
Hybrid System with automaton OneStateAutomaton(2)

Pick an SDP solver from this list.

import CSDP
optimizer_constructor = optimizer_with_attributes(CSDP.Optimizer, MOI.Silent() => true);

We can see that we obtain the value of the JSR as upper and lower bound already with a CQLF. This is to be expected since the problem can be reduced to a maximum cycle mean problem which is easy to solve [AP12].

lb, ub = soslyapb(s, 1, optimizer_constructor=optimizer_constructor, tol=1e-4)
(0.7070636241307345, 1.0)

From the infeasibility certificate of the last infeasible SemiDefinite Program (SDP) solved by in order to obtain the upper bound, we find the lower bound $\rho(A_1A_2)^{1/2} \approx 1$.

seq = sosbuildsequence(s, 1, p_0=:Primal)
psw = findsmp(seq)
PSW(1.0, [2, 1])

In fact, this same maximum cycle mean problem can be used to find the lower bound certificate as the infeasibility certificate of $\gamma$ close to 1 returned by the SDP solver contains atomic measures. The discrete problem formulated on the atoms is a maximum cycle means problem which gives the smp.

psw = sosextractcycle(s, 1, ranktols=1e-4)
PSW(1.0, [2, 1])

This page was generated using Literate.jl.