Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Glpk java崩溃_Java_Dll_Jvm_Native_Glpk - Fatal编程技术网

Glpk java崩溃

Glpk java崩溃,java,dll,jvm,native,glpk,Java,Dll,Jvm,Native,Glpk,我正在使用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 R

我正在使用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文件(即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());
val=GLPK.new_doubleArray(problem.getNbrConstraints());
//创建行
GLPK.glp_添加_行(lp,problem.getNbrConstraints());
//设置行详细信息
对于(int i=0;i
有什么想法吗

多谢各位

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);
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);

我也看到了同样的问题。在我的情况下,在删除问题的过程中会引发异常。也许添加崩溃日志会帮助其他人给你提示,我也看到了同样的问题。在我的情况下,在删除问题的过程中会引发异常。也许添加崩溃日志会帮助其他人给你提示