Создайте пустой ограничительный массив оптимизации
constr = optimconstr(N)
constr = optimconstr(cstr)
constr = optimconstr(cstr1,N2,...,cstrk)
constr = optimconstr({cstr1,cstr2,...,cstrk})
constr = optimconstr([N1,N2,...,Nk])
создает массив пустых ограничений оптимизации, которые индексируются массивом ячеек из символьных векторов или представляют векторы в виде строки constr
= optimconstr(cstr
)cstr
.
Если cstr
1 ncstr
, где n, cstr
является числом элементов cstr
, то constr
также 1 ncstr
. В противном случае constr
является n cstr
-by-1.
Каждое ограничительное выражение в проблеме должно использовать то же сравнение. Например, следующий код приводит к ошибке, потому что cons1
использует сравнение <=
, cons2
использует сравнение >=
, и cons1
и cons2
находятся в том же выражении.
prob = optimproblem; x = optimvar('x',2,'LowerBound',0); cons1 = x(1) + x(2) <= 10; cons2 = 3*x(1) + 4*x(2) >= 2; prob.Constraints = [cons1;cons2]; % This line throws an error
Можно избежать этой ошибки при помощи отдельных выражений для ограничений.
prob.Constraints.cons1 = cons1; prob.Constraints.cons2 = cons2;
Обычно более эффективно создать ограничения по векторизованным выражениям, а не циклам. Смотрите Создают Эффективные Задачи оптимизации.
OptimizationConstraint
| OptimizationExpression
| OptimizationProblem
| OptimizationVariable
| optimexpr