The solver generated by CVXGEN does not explicitly handle infeasible or
unbounded problems. In both cases, the solver will perform ## Handling infeasibilityIf you wish to avoid infeasibility altogether, change your model so it is always
feasible. One method is to replace
constraints with penalty terms for constraint violation. For example, instead of
an equality constraint , you could add a penalty term to the objective
, with (in CVXGEN,
For an inequality constraint , add a penalty term to the objective
(in CVXGEN, ## Using a phase I methodFor total control over the behavior of your solver when no feasible point is available, consider creating an additional solver. Here, you would describe a second problem where the original constraints are replaced with constraint violation terms (as described above). This solver then provides a way to choose a point that is a compromise between feasibility and optimality in the original formulation. See Boyd and Vandenberghe, 11.4, for some details and examples. Here you might solve problems first with the phase I method, then, if the problem is feasible and bounded, use your original CVXGEN solver. Alternatively, you might use the original solver first, then upon failure to converge, switch to the alternative ‘phase I’ solver. ## Handling unboundednessTo avoid unbounded problems, add additional constraints; perhaps lower and upper bounds on some or all variables. Make these sufficiently large that they do not affect ‘normal’ solution. You could then check the tightness of these constraints to determine solution behavior. |