Глубокие копии IloObjective и IloRangeArray. ⇐ C++
-
Гость
Глубокие копии IloObjective и IloRangeArray.
У меня есть среда и модель для создания модели линейного программирования на C++.
IloEnv testenv; Тестовая модель IloModel (testenv); Я добавляю переменные, целевую функцию и ограничения:
IloNumVarArray x = CreateNumVarArray(testenv); IloObjective testobj = IloMaximize(testenv, IloSum(x)); testmodel.add(testobj); IloRangeArray cnstr = CreateRangeArray(testenv); testmodel.add(cnstr); Чтобы создать глубокую копию testmodel, я использую следующий фрагмент кода:
IloModel testmodel1(testenv); for (IloModel::Iterator it(testmodel); it.ok(); ++it) testmodel1.add(*it); Я могу добавить новые ограничения в testmodel1, это не повлияет на исходную модель, testmodel.
IloRangeArray cnstr1 = CreateRangeArray; testmodel1.add(cnstr1); Однако добавление столбцов только в testmodel1 невозможно:
IloNumColumn col(testenv); col += testobj(int); for (int i = 0; i < cnstr.getSize(); ++i) { col += cnstr(int); } IloNumVar newVar (столбец, 0, 1, ILOFLOAT); testmodel1.add(newVar); Возможно, это связано с тем, что у меня нет копий IloObjective и IloRangeArray. Как я могу создать эти копии? Или вообще, как я могу добавить новые столбцы в testmodel1 без изменения testmodel?
У меня есть среда и модель для создания модели линейного программирования на C++.
IloEnv testenv; Тестовая модель IloModel (testenv); Я добавляю переменные, целевую функцию и ограничения:
IloNumVarArray x = CreateNumVarArray(testenv); IloObjective testobj = IloMaximize(testenv, IloSum(x)); testmodel.add(testobj); IloRangeArray cnstr = CreateRangeArray(testenv); testmodel.add(cnstr); Чтобы создать глубокую копию testmodel, я использую следующий фрагмент кода:
IloModel testmodel1(testenv); for (IloModel::Iterator it(testmodel); it.ok(); ++it) testmodel1.add(*it); Я могу добавить новые ограничения в testmodel1, это не повлияет на исходную модель, testmodel.
IloRangeArray cnstr1 = CreateRangeArray; testmodel1.add(cnstr1); Однако добавление столбцов только в testmodel1 невозможно:
IloNumColumn col(testenv); col += testobj(int); for (int i = 0; i < cnstr.getSize(); ++i) { col += cnstr(int); } IloNumVar newVar (столбец, 0, 1, ILOFLOAT); testmodel1.add(newVar); Возможно, это связано с тем, что у меня нет копий IloObjective и IloRangeArray. Как я могу создать эти копии? Или вообще, как я могу добавить новые столбцы в testmodel1 без изменения testmodel?
Мобильная версия