Добро пожаловать в SX!У меня была похожая проблема, но с переменными в порядке по возрастанию .Я использовал ограничение линейного неравенства, которое можно легко адаптировать, учитывая, что используемый оптимизатор принимает ограничения линейного неравенства.
lengthOfVar = length(initialValues);
% Inequality Constraint: Second slot after first slot etc.
A = [diag(ones(lengthOfVar,1), 0) - diag(ones(lengthOfVar-1,1), 1), zeros(lengthOfVar)];
A(lengthOfVar, lengthOfVar) = -1;
b = -ones(lengthOfVar, 1);
Затем передайте A
и b
оптимизатору, например так:
x = fmincon(objFun, x0, A, b)