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.