Solving a nonlinear programming using MATLAB?

Hello, experts, just wondering if MATLAB can solve a non-linear programming efficiently. The decision variable is a vector of N, call it a, a is discrete. Has a linear constraint. The objective is p'a+c'max(a-1,0) is nonlinear form.
Can anybody show an example of code? Thanks.

 Accepted Answer

fmincon is not applicable since you have integrality constraints.
The model can easily be converted to a mixed-integer linear problem (if c is non-negative using a standard epigraph reformulation of the max operator, otherwise using a big-M model of it), for which there are many solvers available for MATLAB
The MATLAB toolbox YALMIP makes the modelling easy. Install a MILP solver for good performance (otherwise it uses its own naive implementation)
N = 10;
c = rand(N,1);
p = randn(N,1);
a = intvar(N,1);
solvesdp([-5 <= a <= 5],p'*a+c'*max(a-1,0))
double(a)
Note though, I think you can solve this problem analytically.

3 Comments

Thanks, Johan. Yes, I could transfer it to MILP, and solve it.
Is this toolbox free? Let me find it out.
Matt J
Matt J on 15 Aug 2014
Edited: Matt J on 15 Aug 2014
MATLAB's Optimization Toolbox can solve mixed integer linear programs as of R2014. See intlinprog.

Sign in to comment.

More Answers (0)

Categories

Tags

Asked:

on 15 Aug 2014

Edited:

on 15 Aug 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!