【问题标题】:cvxpy mixed integer programming returns "inf"cvxpy 混合整数编程返回“inf”
【发布时间】:2018-08-29 09:17:27
【问题描述】:

我正在尝试使用 cvxpy 解决 MIP 问题,如下所示:

问题:

受制于:

和代码(不含数据):

# declaring variables
x_ijk = {}
for i in stores:
    for j in models:
        for k in sizes.index:
            x_ijk[(i,j,k)] = cvx.Int()
y_jk = {}
for j in models:
    for k in sizes.index:
        y_jk[(j,k)] = cvx.Variable()

# function to minimize
alpha,beta, gamma = 1,1,1
error = cvx.Minimize(alpha*sum([(y_jk[(j,k)]-shoe_quantity[j]*sizes_[k])**2 for j in models for k in sizes.index]))
error += cvx.Minimize(beta*sum([(x_ijk[(i,j,k)]-shop_distribution[i]*shoe_quantity[j]*sizes_[k])**2 for i in stores for j in models for k in sizes.index]))
for i in stores:
    for j in models:
        error += cvx.Minimize((sum([x_ijk[(i,j,k)] for k in sizes.index])-shop_distribution[i]*shoe_quantity[j])**2)

# subject to
constrains = []
for i in stores:
    for k in sizes.index:
        constrains += [sum([x_ijk[(i,j,k)] for j in models]) >= 1]
for j in models:
    constrains += [sum([x_ijk[(i,j,k)] for i in stores for k in sizes.index]) == shoe_quantity[j]] 
for j in models:
    for k in sizes.index:
        if k in above_one_percent:
            constrains += [y_jk[(j,k)] == sum([x_ijk[(i,j,k)] for i in stores])]

然后

prob = cvx.Problem(error,constrains)
prob.solve()

返回“inf”

我知道这个问题是可行的,我在更简单的示例上尝试了相同的方法并得到了相同的结果。也许变量太多了?我究竟做错了什么 ?谢谢!

【问题讨论】:

    标签: optimization integer-programming cvxpy


    【解决方案1】:

    遇到同样的问题。我也在使用 CVXPY 来解决 MILP 问题,但是,它只返回“inf”。一旦我将其重新表述为一个连续变量,它就会立即解决。

    【讨论】:

    • 这是答案还是只是评论?
    • 很可能是他的代表发表的评论
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2021-04-09
    • 2021-02-13
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多