Я пытаюсь наложить нелинейное ограничение в оптимизаторе fmincon. Проблема в том, что нелинейное ограничение должно иметь значение только тогда, когда один из параметров отрицательный. Код такой:
function [c, ceq] = confun_Model11(param)
% Nonlinear inequality constraints: c(x)<=0
if param(6)<0
c = (-4)*param(5)*param(7) + param(6)^2+eps;
else
c = [];
end
%Nonlinear equality constraints: ceq(x)=0
ceq = [];
end
Проблема в том, что например при использовании опции диагностики Matlab говорит, что нелинейных ограничений нет:
Constraints
Number of nonlinear inequality constraints: 0
Number of nonlinear equality constraints: 0
а также при поиске оптимума это нелинейное ограничение нарушается. Может ли кто-нибудь указать, правильно ли я определил нелинейное условное ограничение?
x = fmincon(..,..,..,..,..)
, включая определение всех параметров, было бы полезно. - person Floris   schedule 02.04.2013