Смешанное целочисленное программирование cvxpy возвращает "inf" - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь решить проблему MIP с помощью cvxpy следующим образом:

проблема: enter image description here

в зависимости от:

enter image description here

и код (без данных):

# 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()

возвращает "инф"

Я знаю, что эта проблема выполнима, и я попробовал тот же подход на более простых примерах и получил тот же результат. может быть, это слишком много переменных? Что я делаю неправильно ? спасибо!

1 Ответ

0 голосов
/ 22 февраля 2019

Та же проблема обнаружена. Я также использую CVXPY для решения проблемы MILP, однако он возвращает только «inf». И как только я переформулирую в непрерывную переменную, она мгновенно решается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...