Просматривая stackoverflow + форум IBM + страницу Алекса Флейшера «Как подключиться», мне удается запустить свою проблему со сценарием, меняя параметр на каждой итерации (управление потоком). Однако я хочу сохранить вывод каждой итерации в уникальный файл Excel. Я прочитал ссылки и руководство / руководство пользователя, но я все еще не уверен, как этого достичь.
Перед использованием сценария я использовал SheetWrite в файле .dat для каждой переменной, которую я хочу сохранить.
Как я могу сделать это во время выполнения сценария, чтобы он сохранялся в новый файл Excel для каждой итерации? (У меня есть конечное число итераций около 7 запусков, поэтому мне просто нужно 7 файлов для каждого прогона)
Заранее спасибо ..
main{
var status = 0;
thisOplModel.generate();
var produce = thisOplModel;
var best;
var curr = Infinity;
var maxdisp = produce.allowedwindisp;
var ofile = new IloOplOutputFile("testresult.txt");
while ( maxdisp>=1 ) {
best = curr;
writeln();
writeln("Solve with maxdisp = ",maxdisp);
if ( cplex.solve() ) {
curr = cplex.getObjValue();
writeln("OBJECTIVE: ",curr);
ofile.writeln("Objective with maxdisp = ", maxdisp, " is ", curr);
}
else {
writeln("No solution!");
break;
}
// prepare next iteration
var def = produce.modelDefinition;
var data = produce.dataElements;
if ( produce!=thisOplModel ) {
produce.end();
}
produce = new IloOplModel(def,cplex);
maxdisp--;
data.allowedwindisp = maxdisp;
produce.addDataSource(data);
produce.generate();
}
ofile.close();
status;}
это то, что я сделал, чтобы изменить переменную в каждой итерации, но я не уверен, как связать, чтобы написать новый файл Excel из каждой итерации.
РЕДАКТИРОВАТЬ это мое решение, чтобы получить новый файл Excel для каждого прогона с измененными данными (изменил имена файлов на будьте ближе к примерам Алекса): это main.mod, я изменю переменную с именем delta в коде
main{
var status
var source = new IloOplModelSource("sub.mod");
var cplex = new IloCplex();
var def = new IloOplModelDefinition(source);
var best;
var current = Infinity;
for(var delta = 0;delta<=3;delta++)
{
var opl = new IloOplModel(def,cplex);
var data2= new IloOplDataElements();
data2.fileName="reference_filename"+delta+".xlsx";
opl.addDataSource(data2);
var data1 = new IloOplDataSource("datafile4Input_param.dat");
opl.addDataSource(data1);
var data3 = new IloOplDataElements();
data3.delta_from_reference_input = delta;
opl.addDataSource(data3)
opl.generate();
best = current;
writeln();
writeln("Solve with maxdisp = ",maxdisp);
cplex.tilim = 3600;
if (cplex.solve()) {
current = cplex.getObjValue();
writeln("OBJECTIVE: ",current);
opl.postProcess();
}
else {
writeln("No solution");
}
opl.end();
}
status;
}
надеюсь, это поможет.