Я пытаюсь решить проблему MIP с помощью cvxpy следующим образом:
проблема:
в зависимости от:
и код (без данных):
# 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()
возвращает "инф"
Я знаю, что эта проблема выполнима, и я попробовал тот же подход на более простых примерах и получил тот же результат. может быть, это слишком много переменных? Что я делаю неправильно ? спасибо!