首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cvxpy混合整数编程返回"inf“

cvxpy混合整数编程返回"inf“
EN

Stack Overflow用户
提问于 2018-08-29 17:17:27
回答 1查看 545关注 0票数 0

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

问题是:

受以下条件限制:

和代码(没有数据):

代码语言:javascript
复制
# 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])]

然后

代码语言:javascript
复制
prob = cvx.Problem(error,constrains)
prob.solve()

返回"inf“

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

EN

回答 1

Stack Overflow用户

发布于 2019-02-22 18:42:17

遇到相同的问题。我也使用CVXPY来解决MILP问题,但是,它只返回'inf‘。一旦我重新表示成一个连续的变量,它就会立即求解。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52073815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档