python – GLPK线性编程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – GLPK线性编程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2248字,纯文字阅读大概需要4分钟。
内容图文
我正在研究一些非常大规模的线性规划问题. (矩阵目前大约为1000×1000,这些是’迷你’.)
我以为我的程序运行成功,只是我意识到我得到了一些非常不直观的答案.例如,假设我要使x y z最大化受一组约束x y <10且y z <5.我运行它并获得最佳解决方案.然后,我运行相同的方程但具有不同的约束: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]
ia[x] = 1; ja[x] = x; ar[x] = z
x=len(All_Loops)+1
while x<Num_constraints + len(All_Loops):
for y in range(2, Num_constraints+1):
z=Constraints_for_simplex[y-1][0][0]
ia[x] = y; ja[x] =1 ; ar[x] = z
x+=1
x=Num_constraints+len(All_Loops)
while x <len(All_Loops)*(Num_constraints-1):
for z in range(2,len(All_Loops)+1):
for y in range(2,Num_constraints+1):
if x<len(All_Loops)*Num_constraints+1:
q = Constraints_for_simplex[y-1][0][z-1]
ia[x] = y ; ja[x]=z; ar[x] = q
x+=1
glp_load_matrix(prob, len(All_Loops)*Num_constraints, ia, ja, ar)
glp_exact(prob,None)
Z = glp_get_obj_val(prob)
解决方法:
首先使用不同的求解器解决有问题的实例并检查目标函数值.如果您可以将模型导出为.mps格式(我不知道如何使用GLPK执行此操作,抱歉),您可以将mps文件上传到http://www.neos-server.org/neos/solvers/index.html并使用几个不同的LP解算器解决它.
内容总结
以上是互联网集市为您收集整理的python – GLPK线性编程全部内容,希望文章能够帮你解决python – GLPK线性编程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。