Как правильно использовать @constraintref? На языке Джулии

ребята, я написал код и получил следующую ошибку: @constraint не определен. Что я не так сделал. Как это исправить? Спасибо

@constraintref restrição[1:2]
for j=1:2
@constraint(m, restrição[j], sum(A[j,i]*x[i] for i=1:3) <= b[j])`
end
```

person Rodrigo Costa    schedule 27.07.2020    source источник


Ответы (1)


Вы используете старый синтаксис, который действовал в JuMP 0.18 (вы можете увидеть ссылку для более подробной информации)

С сегодняшнего дня вы можете просто использовать оператор присваивания вместо макроса @constraintref, и ваш код может выглядеть так:

using GLPK
m = Model(with_optimizer(GLPK.Optimizer))
@variable(m, x[1:5] >= 0)
myCons = Vector{ConstraintRef}(undef, 5)
for i = 1:5
    myCons[i] = @constraint(m, x[i] >= i)
end
person Przemyslaw Szufel    schedule 27.07.2020
comment
Мне было непонятно, где находятся ограничения в матричной форме. Не могли бы вы подробнее рассказать о своем объяснении. Я новичок. Я был бы очень признателен. Спасибо. - person Rodrigo Costa; 28.07.2020
comment
Как вы думаете, мне лучше скачать длинную стабильную версию вместо версии 1.4-2? У меня столько проблем с этой версией. Все примеры, с которыми я сталкиваюсь для изучения, в этой версии возвращают ошибку - person Rodrigo Costa; 28.07.2020
comment
Проблема в версии JuMP, а не в версии Юлии. Вам следует использовать последнюю версию JuMP, и, возможно, время от времени вы будете сталкиваться с учебными пособиями для старой версии (API JuMP полностью изменился с версией 0.19, и вам нужно искать учебные пособия, созданные после июля 2019 г.) - person Przemyslaw Szufel; 28.07.2020
comment
Мне было непонятно, где находятся ограничения в матричной форме - все ограничения и данные хранятся в объекте m типа JuMP.Model. Есть много способов их извлечь. Взгляните на этот вопрос SO: stackoverflow.com/questions/62782287/ - person Przemyslaw Szufel; 28.07.2020