#optimization #constraints #julia
#оптимизация #ограничения #джулия
Вопрос:
как мне правильно написать это ограничение в Julia?
@constraint(adwords, sum(x[i] * priceofhome1[i] for i=1:4)
sum(y[i] * priceofhome2 for i=1:4) sum(z[i] * priceofhome3 for i=1:4) <= 12)
Я пытаюсь сказать, что сумма всех этих значений должна быть меньше или равна 12.
Я пробовал писать этот код различными способами
@constraint(adwords, sum(x[i] * priceofhome1[i] for i=1:4)
sum(y[i] * priceofhome2 for i=1:4) sum(z[i] * priceofhome3 for i=1:4) <= 12)
Я получаю сообщение об ошибке ниже…….
ОШИБКА: операторы <=, >= и == могут использоваться только для указания скалярных ограничений. Если вы пытаетесь добавить векторизованное ограничение, вместо этого используйте поэлементные операторы сравнения точек (.<=, .>= или .==)
Комментарии:
1. Вы пишете
priceofhome1[i]
, но позже пишете простоpriceofhome2
без индексации. Я предполагаюpriceofhome2
, что это тоже массив. Это создаетsum(y[i] * priceofhome2 for i=1:4)
sum(z[i] * priceofhome3 for i=1:4)
массивы и, а не скаляры, отсюда и ошибка. Если это так, добавление индексации,sum(y[i] * priceofhome2[i] for i=1:4) sum(z[i] * priceofhome3[i] for i=1:4)
, должно исправить эту ошибку. Я не пользователь JuMP, поэтому я не знаю, есть ли какие-либо другие ошибки.
Ответ №1:
Добро пожаловать в StackOverflow!
Как предположил @hckr в своем комментарии, ваша ошибка, вероятно, заключается в том, что priceofhome2 и 3 могут быть массивами. Кроме того, ошибка, которую вам дала Джулия, поддерживает эту идею.
@constraint(adwords, sum(x[i]*priceofhome1[i] y[i]*priceofhome2[i]
z[i]*priceofhome3[i] for i in 1:4) <= 12)