мудрое моделирование колонок в технологии концертов - генерация колонн - PullRequest
0 голосов
/ 20 мая 2019

Я хочу использовать подход, основанный на столбцах, для моделирования моей проблемы в рамках создания столбцов. Сама IBM предоставляет простой пример с двумя ограничениями и тремя переменными для этого (см. Пример ниже). В этом примере сначала создаются ограничения диапазона, а затем создаются переменные и добавляются в диапазоны.

Мой вопрос заключается в том, как мне написать такую ​​модель параметрическим способом, предполагая, что у нас есть m переменных и n ограничений? Мне нужно написать эту модель параметрическим способом, так как в моей модели может быть множество ограничений и переменных, и невозможно просто создать переменную, как указано в примере Cplex.

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

    IloNumArray lowerbound(env,0 , 0, ILOINT);
    IloNumArray upperbound(env,1,1, ILOINT);

IloRangeArray  JobsAssignments = IloAdd(MasterModel, IloRangeArray(env, lowerbound, upperbound));
    IloNumVarArray Assignment(env);

    IloNumVarArray temp(env);

    for (j = 0; j < nbJobs; j++)
    {
        temp.add(JobsAssignments[j](x));//assigning a coefficient to the variable "JobsAssignments" for each constraint j
    }

    Assignment.add(IloNumVar(TotalProfit(x) + temp));//assignment constraint

Пример, предоставленный IBM в каталоге Cplex:

    IloEnv env = model.getEnv();

   IloObjective obj = IloMaximize(env);
   c.add(IloRange(env, -IloInfinity, 20.0, "constraint 1"));
   c.add(IloRange(env, -IloInfinity, 30.0, "constraint 2"));

   x.add(IloNumVar(obj(1.0) + c[0](-1.0) + c[1]( 1.0), 0.0, 40.0));
   x.add(IloNumVar(obj(2.0) + c[0]( 1.0) + c[1](-3.0)));
   x.add(IloNumVar(obj(3.0) + c[0]( 1.0) + c[1]( 1.0)));
   x[0].setName("x1");
   x[1].setName("x2");
   x[2].setName("x3");

   model.add(obj);
   model.add(c);

1 Ответ

1 голос
/ 23 мая 2019

Превращение моего комментария в ответ: пример cutstock.cpp, поставляемый с CPLEX, показывает гораздо более сложный способ колонного моделирования.В частности, он показывает моделирование с количеством строк / столбцов, которое не предопределено, а зависит от входных данных.Надеюсь, этот пример отвечает на ваши вопросы.

...