Решение Gurobi Jupyter Notebook не отображается

Я ввел следующий код в свой блокнот jupyter, но он не дал мне оптимального решения. Он просто дает мне это изображение. Может ли кто-нибудь мне помочь?

import gurobipy as gp
from gurobipy import GRB

try:

    # Create a new model
    m = gp.Model("Diet")

    # Create variables
    x = m.addVar(vtype="C", name="x")
    y = m.addVar(vtype="C", name="y")
    z = m.addVar(vtype="C", name="z")
    a = m.addVar(vtype="C", name="a")

    # Set objective
    m.setObjective(50*x + 20*y + 30*z + 80*a, GRB.MAXIMIZE)

    # Add constraint:
    m.addConstr(400 * x + 200 * y + 150 * z + 500 * a >= 500, "c0")

    # Add constraint: 
    m.addConstr(3 * x + 2 * y >= 6, "c1")
    
    # Add constraint: 
    m.addConstr(2 * x + 2 * y + 4 * z + 4 * a >= 10, "c2")
    
    # Add constraint: 
    m.addConstr(2 * x + 4 * y + z + 5 * a >= 8, "c3")
    

    # Optimize model
    m.optimize()

    for v in m.getVars():
        print('%s %g' % (v.varName, v.x))

    print('Obj: %g' % m.objVal)

except gp.GurobiError as e:
    print('Error code ' + str(e.errno) + ': ' + str(e))

except AttributeError:
    print('Encountered an attribute error')

person Community    schedule 10.07.2020    source источник


Ответы (1)


Решение не печатает, потому что не нашло оптимального решения. Infeasible or unbounded model означает, что либо это невозможно, т.е. решения не существует, либо оно неограниченно, то есть может продолжать увеличивать / уменьшать значения переменных без ограничений для улучшения цели без ограничений.

Глядя на модель, она действительно кажется безграничной. У вас есть цель

m.setObjective(50*x + 20*y + 30*z + 80*a, GRB.MAXIMIZE)

и нет верхнего предела ни для одной из этих переменных. Если вы измените это на

m.setObjective(50*x + 20*y + 30*z + 80*a, GRB.MINIMIZE)

тогда вы должны получить оптимальное решение для минимизации этой цели.

person lehiester    schedule 10.07.2020
comment
Большое спасибо, сработало после того, как я изменил его на минимизацию. - person ; 10.07.2020