file - 一个文件夹中的不同文件作为 opl 模型的多个数据
问题描述
我在 IBM ILOG CPLEX 优化工作室中有一个 opl 模型。每次在此模型中导入两个 CSV 文件。有 272 个文件,所以这个模型应该运行 136 次。每次导出一个 CSV 输出作为结果。我需要一个解决方案来每次自动读取这两个文件中的每一个,获取结果并导入接下来的两个文件,直到所有文件都被读取。我添加了一些文件的图片,以便您查看它们的命名方式。我怎样才能自动做到这一点。另外,我的问题的第二部分是:例如,我的文件名之一是: pmed1_DP=10_P=5_n=100 ,我需要获取 DP、P 和 n 作为我的代码的输入。有什么方法可以使用文件名并获得我们所需的输入?文件名
解决方案
对于您的第一个问题,您可以使用 main 设置不同的输出 csv 文件。让我给你一个小例子:
测试模块
tuple t
{
string firstname;
int number;
}
{t} s={<"Nicolas",2>,<"Alexander",3>};
string csvOutput=...;
execute
{
var f=new IloOplOutputFile(csvOutput);
for(var i in s)
{
f.writeln(i.firstname,";",i.number,";");
}
f.close();
}
然后是 main.mod
{string} csvOutputs={"csv1.csv","csv2.csv"};
main {
var source = new IloOplModelSource("test.mod");
var cplex = new IloCplex();
var def = new IloOplModelDefinition(source);
for(var o in thisOplModel.csvOutputs)
{
var opl = new IloOplModel(def,cplex);
var data2= new IloOplDataElements();
data2.csvOutput=o;
opl.addDataSource(data2);
opl.generate();
if (cplex.solve()) {
opl.postProcess();
writeln("OBJ = " + cplex.getObjValue());
} else {
writeln("No solution");
}
opl.end();
}
}
这将生成 2 个 csv 文件,csv1 和 csv2。
对于您的第二个问题,您可以通过这样的 main 发送参数,也可以多次调用 oplrun 并使用参数更改-D
参数:
oplrun -DcsvOutput="csv3.csv" test.mod
这将生成csv3.csv
.
推荐阅读
- python - 将包含 "b'...'" 的字符串转换为 unicode
- email - LogicApp:在触发新电子邮件后触发后使用 office365 Outlook 发送电子邮件操作无法发送附加的 msg 文件。我怎样才能避免它?
- python - 是否有用于发送数百个机器人的好的 Python 模块?
- python - Sklearn 模型的大小不断增加
- python - Pandas 数据框中每 X 行满足条件的所有行的平均数据
- android - 如何在 Git Bash 中打开文件 Android Studio?
- c++ - 阅读时间 - 代码之前工作正常,现在给出错误
- javascript - Javascript - DOMParser.parseFromString()getElementById().innerHTML 显示空白标签的值
- apache-storm - 如何在 Apache Storm 中设置拓扑指标的发布间隔?
- c# - MailboxNotEnabledForRESTAPI 错误 om Graph Api 但在 Graph Explorer 中有效