# SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.optimization.multivariate.constrained.convex.sdp.socp.qp.activeset

## Class QPDualActiveSetMinimizer

• java.lang.Object
• com.numericalmethod.suanshu.optimization.multivariate.constrained.convex.sdp.socp.qp.activeset.QPDualActiveSetMinimizer
• All Implemented Interfaces:
Minimizer<QPProblem,IterativeSolution<QPSolution>>, ConstrainedMinimizer<QPProblem,IterativeSolution<QPSolution>>, Optimizer<QPProblem,IterativeSolution<QPSolution>>

public class QPDualActiveSetMinimizer
extends Object
implements ConstrainedMinimizer<QPProblem,IterativeSolution<QPSolution>>
This implementation solves a Quadratic Programming problem using the dual active set algorithm.

The dual active set algorithm first transforms the QP problem into its dual form, which is also a QP problem. Then the transformed QP problem is solved using primal active set algorithm.

The advantages of dual active set algorithm are:

1. The computation of initial feasible solution is avoided;
2. Comparing to the prime problem, the constraints of the dual problem are much simpler. The constraints parameter A is an identity matrix and b is a zero vector;
3. When it is hard to provide a good initial feasible solution for the primal active set algorithm (by good we mean close to the optimal solution), the dual active set algorithm is faster than primal active set algorithm.
"Andreas Antoniou, Wu-Sheng Lu, "Algorithm 13.3.2, Quadratic and Convex Programming," Practical Optimization: Algorithms and Engineering Applications.", QPPrimalActiveSetMinimizer
• ### Nested Class Summary

Nested Classes
Modifier and Type Class and Description
class  QPDualActiveSetMinimizer.Solution
This is the solution to a Quadratic Programming problem using the Dual Active Set algorithm.
• ### Constructor Summary

Constructors
Constructor and Description
QPDualActiveSetMinimizer(double epsilon, int maxIterations)
QPDualActiveSetMinimizer(double epsilon, int maxIterations, boolean containsBoxConstraints)
• ### Method Summary

All Methods
Modifier and Type Method and Description
QPDualActiveSetMinimizer.Solution solve(QPProblem problem)
Solve an optimization problem, e.g., OptimProblem.
• ### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
• ### Constructor Detail

• #### QPDualActiveSetMinimizer

public QPDualActiveSetMinimizer(double epsilon,
int maxIterations)
• #### QPDualActiveSetMinimizer

public QPDualActiveSetMinimizer(double epsilon,
int maxIterations,
boolean containsBoxConstraints)
• ### Method Detail

• #### solve

public QPDualActiveSetMinimizer.Solution solve(QPProblem problem)
throws Exception
Description copied from interface: Optimizer
Solve an optimization problem, e.g., OptimProblem.
Specified by:
solve in interface Optimizer<QPProblem,IterativeSolution<QPSolution>>
Parameters:
problem - an optimization problem
Returns:
a solution to the optimization problem
Throws:
Exception - when there is an error solving the problem