2017-05-19 8 views
0

を追加することはできませんマークされた行にエラーGurobi:コード次の制約

File "model.pxi", line 2469, in gurobipy.Model.addConstr (../../src/python/gurobipy.c:77443) TypeError: unsupported operand type(s) for -: 'bool' and 'NoneType'

を提起

def get_incenter_and_radius(facets): 
    n = len(facets[0]) 
    m = Model() 
    m.setParam('OutputFlag', False) 
    r = m.addVar(lb = -100.0, ub = 100.0, vtype = GRB.CONTINUOUS) 
    center = [m.addVar(lb = -1.0, ub = 1.0, vtype = GRB.CONTINUOUS, name = "x" + str(i)) for i in range(n)] 
    m.update() 
    for facet in facets: 
     norm = sqrt(sum(facet[i]**2 for i in nums(facet))) 
     m.addConstr(r * norm <= get_sp(facet, center)) 
    m.addConstr(r > 0) # ________________ ERROR ___________________ 
    for coord_num in range(n): 
     m.addConstr(center[coord_num] + r <= 1) 
    for coord_num in range(n): 
     m.addConstr(center[coord_num] - r >= -1) 
    m.setObjective(r, GRB.MAXIMIZE) 
    m.optimize() 
    if m.sol_count == 0: 
     return None, None 
    center_val = tuple(elt.X for elt in center) 
    return center_val, r.X 

私は、rのタイプと範囲を指定しているので、エラーの原因は何ですか?

答えて

1

リニアプログラミングでは厳密な不等式(>、<)を使用できません。 > =または< =演算子を使用する必要があります。