Как использовать 'IloOplOutputFile' в Cplex для записи переменных с более чем одним индексом? - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь записать данные результатов во внешний файл из-за ошибки, полученной после выполнения кода в течение 16 часов.

Я нашел код выше, он работает для переменных с одним индексом, но мои переменные не с одним индексом.Есть даже переменные с 4 индексами.Как я могу адаптировать этот код к моей ситуации?

execute{
  var ofile = new IloOplOutputFile("modelRun.txt");
  ofile.writeln("Data:");
  for(var i in thisOplModel.r){
     ofile.writeln("d["+i+"+"]="+thisOplModel.d[i]]);
  }
  ofile.writeln("Optimal objective value="+cplex.getObjValue());
  ofile.writeln("Optimal variable values:");
  for(i in thisOplModel.r){
     ofile.writeln("x["+i+"]="+thisOplModel.x[i]);
  }
  ofile.close();
}

Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

об отображении 4D массивов:

range r=1..2;
int x[i in r][j in r][k in r][l in r]=i+j+k+l;

execute
{
writeln("x=",x);
}

, что дает

x= [[[[4 5]
                 [5 6]]
             [[5 6]
                 [6 7]]]
         [[[5 6]
                 [6 7]]
             [[6 7]
                 [7 8]]]]

привет

0 голосов
/ 14 февраля 2019

если x является 4D-массивом вместо

for(i in thisOplModel.r){
     ofile.writeln("x["+i+"]="+thisOplModel.x[i]);
  }

, вы можете напрямую написать

ofile.writeln("x="+thisOplModel.x);

regards

...