为了账号安全,请及时绑定邮箱和手机立即绑定

线性规划两组约束 CPLEX Python API

线性规划两组约束 CPLEX Python API

弑天下 2021-06-07 00:19:58
我正在尝试使用 IBM 的 CPLEX Python API 解决线性规划问题。它涉及两组等式约束。当我们使用两组约束中的任何一组时,下面的代码工作正常,但在使用两组约束时无法找到解决方案。约束条件是: 第一个约束条件: Wx' = c', where W = [[20,0,0],[0,20,30]], x = [a,b,c],c=[20,30] 第二个约束条件:Vx' = e', where V = [[1,1,0],[0,0,1]], x = [a,b,c],c=[1,1]目标函数: minimize a + c满足两组约束的一种解决方案是a=1, b=0, c=1。我在 Cplex Python 中引入两组约束的方式存在错误。我的代码如下。要检查代码本身是否适用于任一组约束,请注释掉一组约束。import cplexfrom cplex.exceptions import CplexErrorimport sysdef populatebynonzero(prob):    my_obj      = [1.0, 0.0, 1.0]    my_ub       = [1.0] * len(my_obj)    my_lb       = [0.0] * len(my_obj)    my_colnames = ["a", "b", "c"]    prob.objective.set_sense(prob.objective.sense.minimize)    prob.variables.add(obj = my_obj, ub = my_ub, lb = my_lb ,names = my_colnames)    # first set of equality constraints: Wx' = c', where W = [[20,0,0],[0,20,30]], x = [a,b,c], c=[20,30]    my_rhs      = [20.0, 30.0]    my_rownames = ["c1", "c2"]    my_sense    = "E" * len(my_rownames)    rows = [0,1,1]     cols = [0,1,2]    vals = [20.0,20.0,30.0]    prob.linear_constraints.add(rhs = my_rhs, senses = my_sense,names = my_rownames)    prob.linear_constraints.set_coefficients(zip(rows, cols, vals))         # second set of equality constraints: Vx' = e', where V = [[1,1,0],[0,0,1]], x = [a,b,c], c=[1,1]    my_rhs      = [1.0, 1.0]    my_rownames = ["e1", "e2"]    my_sense    = "E" * len(my_rownames)    rows = [0,0,1]     cols = [0,1,2]    vals = [1.0,1.0,1.0]    prob.linear_constraints.add(rhs = my_rhs, senses = my_sense,names = my_rownames)    prob.linear_constraints.set_coefficients(zip(rows, cols, vals))def lpex1():    try:        my_prob = cplex.Cplex()        handle = populatebynonzero(my_prob)        my_prob.solve()    except CplexError, exc:        print exc        return    numrows = my_prob.linear_constraints.get_num()    numcols = my_prob.variables.get_num()
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 365 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信