Для чтения данных из любого текстового формата файла вы можете использовать сценарии и IloOplInputFile . Это позволяет читать файл построчно. Затем можно разбить строку на разделителе CSV и извлечь необходимые поля.
Вы можете найти пример на форуме CPLEX здесь :
Предполагая, что у вас есть этот файл demand.csv
(где первое поле дает первый индекс, второе поле - второй индекс, а третье поле - значение)
1;1;5
1;2;10
1;3;15
2;1;20
2;2;25
2;3;30
Этот код инициализирует массив d
:
range demands = 1..2;
range facilities = 1..3;
float d[demands][facilities];
execute {
var f = new IloOplInputFile("demand.csv");
while (!f.eof) {
var data = f.readline().split(";");
if (data.length == 3) // Beware of empty lines
d[Opl.intValue(data[0])][Opl.intValue(data[1])] = Opl.floatValue(data[2]);
}
writeln(d);
}
Аналогично для массива d
.