Solving a nonlinear programming using MATLAB?

5 次查看(过去 30 天)
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.

采纳的回答

Johan Löfberg
Johan Löfberg 2014-8-15
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 个评论
Matt J
Matt J 2014-8-15
编辑:Matt J 2014-8-15
MATLAB's Optimization Toolbox can solve mixed integer linear programs as of R2014. See intlinprog.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Linear Programming and Mixed-Integer Linear Programming 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by