Подключите файл Excel к Cplex

Я должен решить проблему оптимизации, используя Cplex.

В моем файле.dat я использую SheetConnection my_sheet("ExcelFile.xls") связать файл Excel с моей программой cplex, и после этого я использую SheetRead() читать данные из файла Excel.

Но после запуска моей конфигурации я получил следующую ошибку:

"sheet data not supported on this platform"
"Processing failed"

Я обнаружил, что чтение таблицы Excel в студии оптимизации ILOG CPLEX не поддерживается в Linux

Есть идеи, пожалуйста?

2 ответа

Решение

У меня такая же проблема. Моим решением было преобразовать мои данные в csv и использовать IloOplInputFile, чтобы прочитать их. Пример:

Предположим, у вас есть следующий файл export.cvs:

Nicolas;2; 
Alexander;3;

Вы можете использовать следующий код, чтобы преобразовать его в ваши данные.

tuple t
{
   string firstname;
   int number;
}

{t} s={};

execute
{
   var f=new IloOplInputFile("export.csv");
   while (!f.eof){
      var str=f.readline();
      var ar=str.split(";");
      if (ar.length==3) s.add(ar[0],Opl.intValue(ar[1]));
   }
   f.close();
}

execute
{
    writeln(s);
}

Который будет читать CSV-файл и вычислять набор кортежей s:

{<"Николас" 2> <"Александр" 3>}

Как вы можете видеть в ответе на форуме IBM.

Существуют классы Java, например, классы Apache POI, которые могут читать и записывать файлы Excel. Вы можете использовать эти классы для реализации внешнего / пользовательского источника данных и вызывать его через IloOplCallJava. Затем вы можете либо напрямую вызвать файл.mod в блоке execute, либо использовать его из файла.dat через "prepare" и "invoke". Я сделал первое в прошлом, и это сработало хорошо.

Я также использовал Python для преобразования файлов Excel в то, что легче использовать с OPL на платформах, на которых OPL не поддерживает Excel.

Другие вопросы по тегам