File Exchange

## Quadratic Programming with Nonlinear Programming Solvers

version 1.0.0.0 (20 KB) by John Hedengren

### John Hedengren (view profile)

Similar interface to quadprog but solution with NLP solvers such as APOPT and IPOPT

Updated 09 Feb 2015

y = apm_quadprog(H,f,A,b,Aeq,beq,LB,UB,X0) writes a quadratic programming model in APMonitor Modeling Language and attempts to solve the quadratic programming problem:

min 0.5*x'*H*x + f'*x subject to: A*x <= b, Aeq*x = beq
x

lb and ub are a set of lower and upper bounds on the design variables, x, so that the solution is in the range lb <= x <= ub. Use empty matrices for any of the arguments. Set lb(i) = -1e20 if x(i) has no lower limit and set ub(i) = 1e20 if x(i) has no upper limit. x0 is the initial guess and starting point to x. This is similar to the Matlab quadprog solver but uses different solvers such as IPOPT, APOPT, and BPOPT to solve the QP. Additional nonlinear constraints can be added to the qp.apm model for nonlinear programming solution with support for possible mixed-integer variables.

The solution is returned in the structure y with y.names (variable names), y.values (variable values), y.nvar (number of variables), and y.x (a structure containing each variable and value).

Example usage is below:

clear all; close all; clc

H = [1 -1; -1 2];
f = [-2; -6];
A = [1 1; -1 2; 2 1];
b = [2; 2; 3];
Aeq = [];
beq = [];
lb = zeros(2,1);
ub = [];
x0 = [];

%% generate APMonitor QP model

%% compare solution to quadprog (MATLAB)

disp('Validate Results with MATLAB linprog')
for i = 1:nx,
disp(['x[' int2str(i) ']: ' num2str(y1.values(i)) ' = ' num2str(y2(i))])
end

### Cite As

John Hedengren (2019). Quadratic Programming with Nonlinear Programming Solvers (https://www.mathworks.com/matlabcentral/fileexchange/49596-quadratic-programming-with-nonlinear-programming-solvers), MATLAB Central File Exchange. Retrieved .

John Hedengren

### John Hedengren (view profile)

The server is available for download from http://apmonitor.com/wiki/index.php/Main/APMonitorServer (Windows) or http://apmonitor.com/wiki/index.php/Main/APMonitorServerLinux (Linux). By default, this program uses a public web-server as others have commented. However, users can also download and use a local server (no Internet connection required).

raiyea

### raiyea (view profile)

Documentation should be clear that the data are sent to a web server for computation there and not performed locally.！！！！

Greig

### Greig (view profile)

Documentation should be clear that the data are sent to a web server for computation there and not performed locally.

##### MATLAB Release Compatibility
Created with R2014b
Compatible with any release
##### Platform Compatibility
Windows macOS Linux