QP - quadratic programming
minimizex (1/2)xTPx+qTx+r s.t.
Gx ≤ h
Ax = b,
where P ∈ S+n, G ∈ RmXn and A ∈ RpXn
is called a quadratic program (QP). In a quadratic program we minimize a (convex) quadratic objective function with affine constraint functions. Quadratic programs include linear program as a special case by taking P=0.
2D example
Consider the problem graphically represented hereafter:
// Objective function
double[][] P = new double[][] {{ 1., 0.4 }, { 0.4, 1. }};
PDQuadraticMultivariateRealFunction objectiveFunction = new PDQuadraticMultivariateRealFunction(P, null, 0);
//equalities
double[][] A = new double[][]{{1,1}};
double[] b = new double[]{1};
//inequalities
ConvexMultivariateRealFunction[] inequalities = new ConvexMultivariateRealFunction[2];
inequalities[0] = new LinearMultivariateRealFunction(new double[]{-1, 0}, 0);
inequalities[1] = new LinearMultivariateRealFunction(new double[]{0, -1}, 0);
//optimization problem
OptimizationRequest or = new OptimizationRequest();
or.setF0(objectiveFunction);
or.setInitialPoint(new double[] { 0.1, 0.9});
//or.setFi(inequalities); //if you want x>0 and y>0
or.setA(A);
or.setB(b);
or.setToleranceFeas(1.E-12);
or.setTolerance(1.E-12);
//optimization
Solver4J opt = new Solver4J();
opt.setOptimizationRequest(or);
opt.optimize();
double[] sol = opt.getOptimizationResponse().solution; sol[0] = 0.5 sol[1] = 0.5

