gpt4 book ai didi

java - 如何从 Java 调用 cplex .mod 和 .data

转载 作者:行者123 更新时间:2023-12-02 09:40:31 28 4
gpt4 key购买 nike

我有一个在 IBM ILOG CPLEX Optimization Studio 中建模和编写的优化问题。我想从 Java 调用 .mod 和 .dat。我找到了一些例子来做到这一点。但是,我遇到了一些错误。

我的代码如下所示。我还添加了所有 cplex 和 opl 库

package cplexJava;
import ilog.concert.*;
import ilog.cplex.*;
import ilog.opl.*;


public class main {

public static void main(String[] args) {
// TODO Auto-generated method stub
model();
}
public static void model() {
int status = 127;

IloOplFactory.setDebugMode(true);
IloOplFactory oplF = new IloOplFactory();
IloOplErrorHandler errHandler = oplF.createOplErrorHandler();
IloOplModelSource modelSource = oplF.createOplModelSource("D:/Cplex project/Example_2/Example_2.mod");
IloOplSettings settings = oplF.createOplSettings(errHandler);
IloOplModelDefinition def = oplF.createOplModelDefinition(modelSource,settings);
IloCplex cplex = oplF.createCplex();
cplex.setOut(null);
IloOplModel opl = oplF.createOplModel(def, cplex);
IloOplDataSource dataSource = oplF.createOplDataSource("D:/Cplex project/Example_2/Example_2.dat");
opl.addDataSource(dataSource);
opl.generate();
if (cplex.solve())
{
System.out.println("OBJECTIVE: " + opl.getCplex().getObjValue());
opl.postProcess();
opl.printSolution(System.out);
}
else
{
System.out.println("No solution!");
}
oplF.end();
status = 0;

System.exit(status);
}
}

在我的代码中,错误来自 oplF.createCplex()cplex.solve()。当我尝试运行它时,这是我收到的错误。 enter image description here我无法弄清楚为什么我从 oplF.createCplex()cplex.solve() 收到错误,尽管我已经添加了 cplex opl

最佳答案

实际上,您的 IDE 会告诉您问题是什么:可能会抛出 IloException,但您没有处理它们。您需要用 try catch block 包围您的代码,或者您的 main 方法应该在签名中包含“抛出 IloException”:

package cplexJava;
import ilog.concert.*;
import ilog.cplex.*;
import ilog.opl.*;


public class main {

public static void main(String[] args) {
// TODO Auto-generated method stub
model();
}
public static void model() {
int status = 127;
try {

IloOplFactory.setDebugMode(true);
IloOplFactory oplF = new IloOplFactory();
IloOplErrorHandler errHandler = oplF.createOplErrorHandler();
IloOplModelSource modelSource = oplF.createOplModelSource("D:/Cplex project/Example_2/Example_2.mod");
IloOplSettings settings = oplF.createOplSettings(errHandler);
IloOplModelDefinition def = oplF.createOplModelDefinition(modelSource,settings);
IloCplex cplex = oplF.createCplex();
cplex.setOut(null);
IloOplModel opl = oplF.createOplModel(def, cplex);
IloOplDataSource dataSource = oplF.createOplDataSource("D:/Cplex project/Example_2/Example_2.dat");
opl.addDataSource(dataSource);
opl.generate();
if (cplex.solve())
{
System.out.println("OBJECTIVE: " + opl.getCplex().getObjValue());
opl.postProcess();
opl.printSolution(System.out);
}
else
{
System.out.println("No solution!");
}
oplF.end();
} catch (IloException ilx) {
// log error message or something like that
}
status = 0;

System.exit(status);
}
}

并且请使用首字母大写的类名称和全部小写的包名称。

关于java - 如何从 Java 调用 cplex .mod 和 .data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57118151/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com