小编Hil*_*ark的帖子

55
推荐指数
4
解决办法
11万
查看次数

GLPK 线性规划

我正在研究一些非常大规模的线性规划问题。(矩阵目前大约为 1000x1000,这些是“迷你”矩阵。)

我以为我的程序运行成功了,但我才意识到我得到了一些非常不直观的答案。例如,假设我要在一组约束 x+y<10 和 y+z <5 下最大化 x+y+z。我运行它并获得最佳解决方案。然后,我运行相同的方程,但有不同的约束:x+y<20 和 y+z<5。然而在第二次迭代中,我的最大化减少了!

我已经煞费苦心地经历了,并向自己保证约束加载正确。

有谁知道问题可能是什么?

我在关于 lpx_check_kkt 的文档中找到了一些东西,它似乎告诉你你的解决方案何时可能是正确的或高可信度(或低可信度),但我不知道如何使用它。

我尝试并收到错误消息 lpx_check_kkt 未定义。

我正在添加一些代码作为附录,希望有人能找到错误。这样做的结果是它声称已经找到了一个最佳解决方案。然而,每次我提高上限时,它都会变得不太理想。
我已经确认我的界限是上升而不是下降。

    size = 10000000+1
    ia = intArray(size)
    ja = intArray(size)
    ar = doubleArray(size)
    prob = glp_create_prob()

    glp_set_prob_name(prob, "sample")
    glp_set_obj_dir(prob, GLP_MAX)
    glp_add_rows(prob, Num_constraints)
    for x in range(Num_constraints):
            Variables.add_variables(Constraints_for_simplex)
            glp_set_row_name(prob, x+1, Variables.variers[x])
            glp_set_row_bnds(prob, x+1, GLP_UP, 0, Constraints_for_simplex[x][1])
            print 'we set the row_bnd for', x+1,' to ',Constraints_for_simplex[x][1]
    glp_add_cols(prob, len(All_Loops))
    for x in range(len(All_Loops)):
            glp_set_col_name(prob, x+1, "".join(["x",str(x)]))
            glp_set_col_bnds(prob,x+1,GLP_LO,0,0)
            glp_set_obj_coef(prob,x+1,1)
    for x in range(1,len(All_Loops)+1):
            z=Constraints_for_simplex[0][0][x-1] …
Run Code Online (Sandbox Code Playgroud)

python linear-programming python-2.7 glpk

5
推荐指数
1
解决办法
1909
查看次数

标签 统计

python ×2

glpk ×1

linear-programming ×1

math ×1

python-2.7 ×1