Занимаюсь оптимизацией. Для этого некоторые параметры должны принимать разные значения. Я использую уменьшенную сетку Смоляка. У меня 9 реализаций. Я создал код, который включает в каждый набор значения, которые должен принимать параметр в каждой реализации. К сожалению, эти параметры принимают одинаковые значения в разных реализациях, что делает мой код бесполезным. Мне нужен способ заставить усилитель принимать указанные наборы.
В книге усилителя я не нашел ничего полезного в главах, посвященных наборам https://ampl.com/BOOK/CHAPTERS/08-sets1.pdf https://ampl.com/BOOK/CHAPTERS/09-sets2.pdf
Однако я нашел этот вопрос, Ошибка AMPL, повторяющийся номер для набора, в котором происходит нечто подобное. Однако, если я скопирую код, ошибка останется.
Здесь я определяю наборы, и возникает ошибка
param Level=9;
set slM1Set ordered := {45.4236, 45.3191, 45.5438,45.4236, 45.4236, 45.4236, 45.4236, 45.4236, 45.4236};
set slM2Set ordered := {3.8222, 3.8222, 3.8222, 3.8134, 3.8324, 3.8222, 3.8222, 3.8222, 3.8222};
set slP1Set ordered := {-37040,-37040,-37040,-37040,-37040,-47040,-27040, 37040,-37040};
set slP2Set ordered := {0, 0, 0, 0, 0, 0, 0, -577.350, 577.350};
param w_x;
param w_y;
param x1M;
param x2M;
и здесь я их использую
for {a in 1..Level}
{
let w_x := member(a, slM1Set);
let w_y := member(a, slM2Set);
let x1M := member(a, slP1Set);
let x2M := member(a, slP2Set);
solve;
Мне нужно знать, могу ли я изменить свой код, чтобы он работал должным образом, что означает, что цикл будет выполняться 9 раз, во-первых, переменная w_x примет первое значение из slM1Set, w_y из slM2Set, x1M из slP1Set, x2M из slP2Set , при втором выполнении переменная w_x примет второе значение из slM1Set, w_y из slM2Set, x1M из slP1Set, x2M из slP2Set и так далее.