Как отобразить значения базы данных в целевой функции в смешанном целочисленном программировании с помощью IBM Cplex?

Я пытаюсь смоделировать задачу студенческого задания с помощью cplex. У меня есть сведения о студенте в базе данных доступа (например, идентификатор и оценки студента). Я смог получить эти значения из db в файл .mod с помощью кортежей.

tuple stuType{
  int id;
  int mark;
}

stuType m[id][mark]=...;

Теперь я хочу использовать эти значения в своей целевой функции.

maximize sum(a in id, b in id, k in mark) m [a] [k] * m [b] [k];

но это обозначение дает мне ошибки в целевой функции. Любая помощь в решении этой проблемы приветствуется.


person Ann    schedule 12.04.2016    source источник
comment
Пожалуйста, покажите всю необходимую информацию, например, какая ошибка выдается?   -  person Uwe Allner    schedule 12.04.2016
comment
Ошибка: Оператор недоступен для ‹id: int, mark: int› * ‹id: int, mark: int›   -  person Ann    schedule 12.04.2016
comment
Как вы думаете, что вы получите, умножив пару кортежей?   -  person TimChippingtonDerrick    schedule 13.04.2016
comment
Я вообще-то не знаю, как ответить на твой вопрос. Я все еще новичок в программировании и cplex :(   -  person Ann    schedule 13.04.2016


Ответы (1)


Ой. Ok. Добро пожаловать в чудесный мир оптимизации. Если вы новичок в программировании в любой форме, это может быть немного сложно; но на самом деле это не так уж сложно, если у вас есть несколько основных идей. Нам просто придется объяснять вещи немного по-другому. Я бы начал с действительно тривиальной модели, которая ничего особенного не делает, но, по крайней мере, позволяет вам просматривать свои данные.

Попробуйте использовать что-нибудь действительно простое после чтения данных, например:

dvar float+ x;
maximize x;
subject to
{
  x <= 10;
};

Эта модель действительно не имеет ничего общего с вашими данными или вашей проблемой, но должна, по крайней мере, работать, а среда студии CPLEX должна, по крайней мере, позволять вам просматривать данные, которые она прочитала. Как только вы узнаете, как на самом деле выглядят ваши данные, у вас больше шансов получить модель, которая будет делать что-то полезное.

person TimChippingtonDerrick    schedule 13.04.2016