Объединение множества операторов "И" в NMinimize / NMaximize - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь запустить функцию NMaximize с множеством ограничений. Я создал упрощенную таблицу ограничений, подобную этой

Table[-1 <= vMask[[i]] <= 1, {i, 1, 6}]

Затем я могу использовать их в своей функции NMinimize вот так

eMask = {s[1], s[2], s[3], -1, 1, s[4], s[5], s[6]};
vMask = Array[s, 6];
MaxGradSolution = 
  NMaximize[{GradNorm[0, 0, 150, eMask][[1]], 
    Table[-1 <= vMask[[i]] <= 1, {i, 1, 6}];

Это работает и дает мне Ответ. Чудесно. Проблема, однако, заключается в том, что я пытаюсь добавить еще одно ограничение в эту таблицу ограничений

MaxGradSolution = 
  NMaximize[{GradNorm[0, 0, 150, eMask][[1]], 
    BNorm[0, 0, 150, eMask] <= 10^-3 && Table[-1 <= vMask[[i]] <= 1, {i, 1, 6}] }, vMask];

Если эта таблица явно написана как

-1<= s[1]<=1 && -1<= s[2]<=1 && ...

и добавляется на

BNorm[0, 0, 150, eMask] <= 10^-3 &&

работает. Проблема в том, что я хотел бы иметь возможность добавлять множество ограничений, которые я могу генерировать автоматически! Был бы признателен за умный способ сделать это.

К вашему сведению, оба ограничения работают нормально, когда другое не используется.

...