Programación cuadrática José F. Nieves Mathematical methods research MATH 6350 Prof. Balbino García
La programación cuadrática es un problema de optimización matemática. La cual busca minimizar o maximizar una función cuadrática con diferentes variables sujeto a limitaciones lineales sobre estas variables. Definición
La programación cuadrática se puede formular de la siguiente forma: Se asume que x representa . .Q es una matriz simétrica nxn y que c es cualquier vector nx1.
Examples Find values of x that minimize subject to x1 + x2 ≤ 2–x1 + 2x2 ≤ 22x1 + x2 ≤ 30 ≤ x1, 0 ≤ x2. First, note that this function can be written in matrix notation as where Enter these coefficient matrices. H = [1 -1; -1 2] f = [-2; -6] A = [1 1; -1 2; 2 1] b = [2; 2; 3] lb = zeros(2,1) Next, invoke a quadratic programming routine. [x,fval,exitflag,output,lambda] = ... quadprog(H,f,A,b,,,lb) This generates the solution x = 0.6667 1.3333 fval = -8.2222 exitflag = 1 output = iterations: 3 algorithm: 'medium-scale: active-set' firstorderopt:  cgiterations:  message: 'Optimization terminated.' lambda = lower: [2x1 double] upper: [2x1 double] eqlin: [0x1 double] ineqlin: [3x1 double] lambda.ineqlinans = 3.1111 0.4444 0 lambda.lowerans = 0 0 Nonzero elements of the vectors in the fields of lambda indicate active constraints at the solution. In this case, the first and second inequality constraints (in lambda.ineqlin) are active constraints (i.e., the solution is on their constraint boundaries). For this problem, all the lower bounds are inactive Ejemplos
Quadratic programming codes: BQPD from Roger Fletcher CPLEX Barrier/QP solver CPLEX Simplex/QP solver CPLEX Mixed-integer QP solver The Xpress-MP Newton-barrier QP solver from Dash Optimization HOPDM from JacekGondzio and Anna Altman LINDO The packages QPC, QPB and QPA from GALAHAD The packages VE02, VE09, VE17, HSL_VE12 and HSL_VE19 from HSL (formerly known as the Harwell Subroutine Library) LOQO from Bob Vanderbei MINQ for convex general and non-convex bound constrained problems, in Matlab, by Arnold Neumaier CirCut for finding approximate solutions to certain binary quadratic programs, including the Max-Cut and the Max-Bisection problems, by Yin Zhang The subroutines E04NCF, E04NFF, E04NKF, H02CBF and H02CEF from the NAG fortran library The package nag_qp_sol from the NAG fl90 library The subroutines nag_opt_lin_lsq and nag_opt_sparse_convex_qp from the NAG C library KNITRO from Ziena Optimization Inc. is highly QP-capable. LSSOL from SOL Optimization Software OOQP by Mike Gertz and Steve Wright QPOPT again from SOL Optimization Software The C/Python QP package which is part of CVXOPT The package IQP, by Linda Kaufman and Jessica Hodgins, from the PORT Mathematical Subroutine Library The MOSEK package from Erling and Knud Andersen The subroutine HSQP from John Betts, which is Algorithm 559 from the Collected Algorithms of the ACM The COPL_QP package of Xiong Zhang and Yinyu Ye BerwinTurlach'sQuadProg, a Fortran 77 package for convex QP based on Goldfarb and Idnani's dual active-set method. QuadProg++, a C++ solver for (strictly) convex problems from Luca Di Gaspero The exact solver QP_solver, part of the Computational Geometry Algorithms Library (CGAL) Codigos