GLPK for Java - 二进制变量MIP给出小数结果

时间:2017-11-03 09:58:19

标签: java binary-data linear-programming glpk

我尝试使用GLPK for Java(http://glpk-java.sourceforge.net/)解决基于二进制变量的线性规划问题,但计算结果给出了变量的小数结果。

我省略了大部分代码,但重要的部分如下,我将变量定义为二进制

= '[{"vendor":"3", "status":"paid"}]';

数据是一个包含系数的表。

如果我尝试使用预变器解决问题

SELECT * FROM

结果是错误

WHERE

如果我使用simplex添加预处理(如文档所示)

LIKE '[{"vendor":"3"%';

结果是小数

GLPK.glp_add_cols(lp, data.size());
for (int i = 0; i < data.size(); i++) {
            GLPK.glp_set_col_name(lp, i + 1, "x" + (i + 1));
            GLPK.glp_set_col_kind(lp, i + 1, GLPKConstants.GLP_BV);
            }

我如何获得二元解决方案?

1 个答案:

答案 0 :(得分:1)

GLPK为不同类型的求解器(MIP,内点,单纯形)保持单独的结果,因此要获得特定求解器的结果,必须使用相应的函数。

  • 要使用单面解算器获得结果,请使用glp_get函数。
  • 对于内部指针解算器,请使用glp_ipt函数。
  • 对于MIP解算器,请使用glp_mip函数。

该函数名称的其余部分有点不一致。