bisection
bisection implements a bisection algorithm to solve some simple quasi-convex problems.
The code assumes the constraints are quasi-convex in \(x\) and the scalar \(t\), bilinear in \(t\) and \(x\), \(t=0\) is feasible, and the objective function is \(t\) or \(-t\).
Syntax
diagnostics = bisection(Constraints,Objective,options)
Example
Bisection can either be called as a command (note that node solver has to be specified)
P = sdpvar(2);
sdpvar t
Constraint = [P <= t*P + eye(2), P >= eye(2)/3]
Objective = t;
diagnostics = bisection(Constraint,Objective,sdpsettings('solver','mosek'))
or as any other solver (also here node solver has to be specified)
P = sdpvar(2);
sdpvar t
Constraint = [P <= t*P + eye(2), P >= eye(2)/3]
Objective = t;
diagnostics = bisection(Constraint,Objective,sdpsettings('solver','bisection','bisection.solver','mosek'))
At the moment, YALMIP does not analyze the problem to see if it really is quasi-convex in \(t\) and that your specified solver is applicable for fixed \(t\). Behaviour when you send an incorrect model is unspecified.
See the decay-rate example and the solver specification.