#ampl
#ampl
Вопрос:
В MATLAB, если у меня есть два вектора a=[a_1,..,a_n], b=[b_1,..,b_n]
, я могу получить другой вектор c = [a_1/b_1,..,a_n/b_n]
с помощью a./b
. Как я могу добиться этого в AMPL?
Ответ №1:
Вы можете использовать что-то вроде этого:
set S := {1,2,3};
param p{S};
var x{S};
var y{i in S} = x[i]*p[i];
или поочередно:
set S := {1,2,3};
param p{S};
var x{S};
var y{S};
s.t. c1{i in S}: y[i] = x[i]*p[i];
Однако ваша способность делать это может быть ограничена ограничениями, поддерживаемыми вашим решателем, например, если вы определяете отношение, которое подразумевает нелинейное ограничение при использовании нелинейного решателя.