gpt4 book ai didi

java - Glpk java 崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:02 25 4
gpt4 key购买 nike

我正在使用 Glpk java 来解决 LP 松弛问题。

奇怪的是,有时它可以工作,但有时 JVM 会崩溃。当它崩溃时,我遇到了这个错误:

# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffedcbb4d92,
pid=16584, tid=17184
#
# JRE version: Java(TM) SE Runtime Environment (8.0_66-b18) (build 1.8.0_66 b18)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.66-b18 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C [ntdll.dll+0x14d92]

有时它会默默地崩溃,当它崩溃时,它是在 glpk DLL 文件中的随机 native 函数上(即 glp_simplex 和 glp_delete_prob)。

这是我的代码的一部分:

        // Allocate memory
ind = GLPK.new_intArray(problem.getNbrConstraints());
val = GLPK.new_doubleArray(problem.getNbrConstraints());

// Create rows
GLPK.glp_add_rows(lp, problem.getNbrConstraints());


// Set row details
for (int i = 0; i < problem.getNbrConstraints(); i++) {
GLPK.glp_set_row_name(lp, i + 1, "c" + (i + 1));
GLPK.glp_set_row_bnds(lp, i + 1, GLPKConstants.GLP_DB, 0, problem.getB(i));

for (int j = 0; j < problem.getNbrVaribles(); j++) {
GLPK.intArray_setitem(ind, j + 1, j + 1);
GLPK.doubleArray_setitem(val, j + 1, problem.getItem(j).getRessource(i));
}
GLPK.glp_set_mat_row(lp, i + 1, problem.getNbrVaribles(), ind, val);
}

// Free memory
GLPK.delete_intArray(ind);
GLPK.delete_doubleArray(val);

// Define objective
GLPK.glp_set_obj_name(lp, "z");
GLPK.glp_set_obj_dir(lp, GLPKConstants.GLP_MAX);
for (int j = 0; j < problem.getNbrVaribles(); j++) {
GLPK.glp_set_obj_coef(lp, j + 1, problem.getItem(j).getProfit());
}

// Write model to file
GLPK.glp_write_lp(lp, null, "lp.lp");

// Solve model
parm = new glp_smcp();
GLPK.glp_init_smcp(parm);
ret = GLPK.glp_simplex(lp, parm);

// Free memory
GLPK.glp_delete_prob(lp);

有什么想法吗?

谢谢。

最佳答案

ind = GLPK.new_intArray(problem.getNbrConstraints());

如 doc/glpk.pdf 中所述,glpk 不使用索引 0。

所以你的数组应该有一个额外的元素

ind = GLPK.new_intArray(problem.getNbrConstraints() + 1);
val = GLPK.new_doubleArray(problem.getNbrConstraints() + 1);

关于java - Glpk java 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46123806/

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