iocp.setPresolve(GLPKConstants.GLP_ON);引发错误

时间:2018-09-12 08:33:11

标签: java glpk

这是我的代码:

public void solve(String[] arg) throws FileNotFoundException {
glp_prob lp = null;
glp_tran tran;
glp_iocp iocp;

String fname;
//String res = null;
int skip = 0;
int ret;

// listen to callbacks
GlpkCallback.addListener(this);
// listen to terminal output
GlpkTerminal.addListener(this);

fname = new String(arg[0]);
System.out.println(fname);

lp = GLPK.glp_create_prob();
System.out.println("Problem created");
tran = GLPK.glp_mpl_alloc_wksp();
ret = GLPK.glp_mpl_read_model(tran, fname, skip);
if (ret != 0) {
    GLPK.glp_mpl_free_wksp(tran);
    GLPK.glp_delete_prob(lp);
    System.out.println(ret);
    throw new RuntimeException("Model file not found: " + fname);
}

// generate model
GLPK.glp_mpl_generate(tran, null);
// build model
GLPK.glp_mpl_build_prob(tran, lp);
// set solver parameters
iocp = new glp_iocp();
GLPK.glp_init_iocp(iocp);
iocp.setPresolve(GLPKConstants.GLP_ON);
// do not listen to output anymore
GlpkTerminal.removeListener(this);
    // solve model
ret = GLPK.glp_intopt(lp, iocp);
// postsolve model
if (ret == 0) {
    GLPK.glp_mpl_postsolve(tran, lp, GLPKConstants.GLP_MIP);
    write_lp_solution(lp);
}

// free memory
GLPK.glp_mpl_free_wksp(tran);
GLPK.glp_delete_prob(lp);

// do not listen for callbacks anymore
GlpkCallback.removeListener((GlpkCallbackListener) this);

// check that the hook function has been used for terminal output.
if (!hookUsed) {
    System.out.println("Error: The terminal output hook was not used.");
    System.exit(1);
}
}

我运行它时出现此错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.gnu.glpk.GLPKJNI.GLP_USE_AT_get()I
at org.gnu.glpk.GLPKJNI.GLP_USE_AT_get(Native Method)
at org.gnu.glpk.GLPKConstants.<clinit>(GLPKConstants.java:74)
at glpk.Optimisation.solve(Optimisation.java:58)

第58行对应

iocp.setPresolve(GLPKConstants.GLP_ON);

此代码之前效果很好,但是由于我更改了要解决的模型,所以出现了此错误。 但是当我在终端上运行它时

glpsol --model -mymodel.mod

一切正常,解决了线性问题。 我必须承认我不知道该错误来自何处。 如果有人可以帮助我...

1 个答案:

答案 0 :(得分:0)

类路径中似乎缺少JNI库。看看http://glpk-java.sourceforge.net/architecture.html