matlab中的非线性约束

时间:2016-10-20 14:08:57

标签: matlab optimization constraints solver nonlinear-optimization

我在matlab中使用求解器fmincon,我想添加一个非线性约束,使得要优化的变量具有固定数量的非零元素。此数字等于25并固定,如下面的函数所示。

因此,我将非线性约束设置如下:

nonlcon = @limitSizeBasket;

function [c,ceq] = limitSizeBasket(x,maskTop,maskBottom)
%This function limit the size of the basket

    c = sum(any(x(1,:),1)) - 25;
    ceq = [];
end

x = fmincon(@(x)fun(x,scoreTop,scoreBottom),x0,A,b,Aeq,beq,lb,ub,@(x)nonlcon(x,maskTop,maskBottom),options)';

不幸的是,x的结果值似乎根本不考虑这个约束,因为所有x都是非零的。这里我有x是70个元素的向量,我将非零元素的数量限制为最多25个。我定义约束的方式是否存在问题,或者问题来自其他问题?

0 个答案:

没有答案
相关问题