У меня есть две отдельные модели Cplex, где вторая модель зависит от решения первой.
Я хочу решить модели, используя ILOG Script в Optimization Studio.
До сих пор я находился в следующем для моего основного файла, который контролирует выполнение обеих моделей.
// Stage 1
var source = new IloOplModelSource("TwoStage_Stage1.mod");
var cplex = new IloCplex();
var def = new IloOplModelDefinition(source);
var modelInstance = new IloOplModel(def, cplex);
var data = new IloOplDataSource("TwoStage.dat");
modelInstance.addDataSource(data);
modelInstance.generate();
cplex.solve();
modelInstance.postProcess();
// Stage 2
var source2 = new IloOplModelSource("TwoStage_Stage2.mod");
var cplex2 = new IloCplex();
var def2 = new IloOplModelDefinition(source2);
var modelInstance2 = new IloOplModel(def2, cplex2);
var x_fromStage1 = new IloOplDataElements();
var y_fromStage1 = new IloOplDataElements();
x_fromStage1.xbest = modelInstance.xbest;
y_fromStage1.ybest = modelInstance.ybest;
modelInstance2.addDataSource(x_fromStage1);
modelInstance2.addDataSource(y_fromStage1);
var data2 = new IloOplDataSource("TwoStage.dat");
modelInstance2.addDataSource(data2);
modelInstance2.generate();
cplex2.solve();
На этапе 2 я пытался прочитать в решении переменных решения xbest и ybest от первой модели экземпляра. xbest и ybest не являются фактическими переменными решения из первой модели, а являются копией, которую я сделал в постобработке в первой модели, как предлагалось в нескольких других потоках. xbest - это двумерный массив, а ybest - трехмерный. Я объявил обе эти переменные в .mod-файле для второй модели как
int xbest[set1][set2];
int ybest[set3][set4][set5];
Я получаю следующие сообщения об ошибках:
- элемент xbest не определен
- недопустимое выражение инициализации для xbest
Я на правильном пути для передачи переменных из одной модели в другую или она работает совершенно иначе?
Большое спасибо ,