Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何最小化等值函数_Matlab_Mathematical Optimization - Fatal编程技术网

Matlab 如何最小化等值函数

Matlab 如何最小化等值函数,matlab,mathematical-optimization,Matlab,Mathematical Optimization,我试图最小化matlab中的函数,如下所示: function [c, ceq] = const_slot( x ) c = []; % Nonlinear equality constraints ceq = [sum(x)-1]; end [x,fval] = fmincon(@func_slot, x0,[],[],[],[],lb,ub,@const_slot,options) 但是,我需要计算fval的值,它在指定的值内,或者是正值。我该怎么做呢?我理解你的问题,你想对函数@f

我试图最小化matlab中的函数,如下所示:

function [c, ceq] = const_slot( x )
c = [];
% Nonlinear equality constraints
ceq = [sum(x)-1];
end



[x,fval] = fmincon(@func_slot, x0,[],[],[],[],lb,ub,@const_slot,options)

但是,我需要计算fval的值,它在指定的值内,或者是正值。我该怎么做呢?

我理解你的问题,你想对函数@func_slot施加约束,我假设它是非线性的

我们发现:

可以使用@const\u slot问题中的nonlcon参数设置非线性约束。这些约束应定义为:

function [c,ceq] = mycon(x)
c = ...     % # Compute nonlinear inequalities at x.
ceq = ...   % # Compute nonlinear equalities at x.
例如,当您希望函数@func_slot大于零时,可以将@const_slot中的不等式约束c定义为函数的负数

编辑

如果我理解正确,则需要函数值大于零但小于指定的限制。那样的话,你可以试试这个

function [c, ceq] = const_slot( x )

% # Nonlinear inequality constraints
upperLimit = 10;
c = [-func_slot(x);
     -upperLimit + func_slot(x)];

% # Nonlinear equality constraints
ceq = [sum(x)-1];

end

从您的评论来看,似乎您正在尝试查找域lb中的func_槽的所有零。您的问题不清楚:fval是一个输出。你的意思是你很难找到x0——优化的初始点吗?我已经对x值使用了约束。函数[c,ceq]=const_slot x c=[];ceq=[sumx-1];结束我需要将值fval保持在零或指定的值,函数的值而不是变量x。
function [c, ceq] = const_slot( x )

% # Nonlinear inequality constraints
upperLimit = 10;
c = [-func_slot(x);
     -upperLimit + func_slot(x)];

% # Nonlinear equality constraints
ceq = [sum(x)-1];

end
function [c, ceq] = const_slot( x )
c = [];
ceq = func_slot(x) - desired_fval;