当前位置: 首页>>代码示例>>Python>>正文


Python gurobipy.quicksum方法代码示例

本文整理汇总了Python中gurobipy.quicksum方法的典型用法代码示例。如果您正苦于以下问题:Python gurobipy.quicksum方法的具体用法?Python gurobipy.quicksum怎么用?Python gurobipy.quicksum使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在gurobipy的用法示例。


在下文中一共展示了gurobipy.quicksum方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: fit

# 需要导入模块: import gurobipy [as 别名]
# 或者: from gurobipy import quicksum [as 别名]
def fit(array, convex=1):
    """Fit a smooth line to the given time-series data"""
    N = len(array)
    m = gurobipy.Model()
    fv = m.addVars(N)
    if convex == 1:
        m.addConstrs(fv[i] <= fv[i-1] for i in range(1,N))
        m.addConstrs(fv[i] + fv[i-2] >= 2*fv[i-1] for i in range(2,N))
    else:
        m.addConstrs(fv[i] >= fv[i-1] for i in range(1,N))
        m.addConstrs(fv[i] + fv[i-2] <= 2*fv[i-1] for i in range(2,N))
    m.setObjective(
        gurobipy.quicksum([fv[i] * fv[i] for i in range(N)])
        - 2 * gurobipy.LinExpr(array,fv.values())
    )
    m.Params.outputFlag = 0
    m.optimize()
    return [fv[i].X for i in range(N)] 
开发者ID:lingquant,项目名称:msppy,代码行数:20,代码来源:statistics.py

示例2: _subtourelim

# 需要导入模块: import gurobipy [as 别名]
# 或者: from gurobipy import quicksum [as 别名]
def _subtourelim(model, where):
  """  Callback - use lazy constraints to eliminate sub-tours """
  if where == GRB.callback.MIPSOL:
    # make a list of edges selected in the solution
    X = model.cbGetSolution(model._vars)
    n = int(sqrt(len(X)))
    selected = [(i,j) for i in xrange(n) for j in xrange(n) if X[(i,j)]>0.5]

    # find the shortest cycle in the selected edge list
    tour = _subtour(selected,n)
    if len(tour) < n:
      # add a subtour elimination constraint
      expr = quicksum(model._vars[tour[i], tour[j]]
          for i in xrange(len(tour))
              for j in xrange(i+1, len(tour)))
      model.cbLazy(expr <= len(tour)-1)

# closures that include n 
开发者ID:yorak,项目名称:VeRyPy,代码行数:20,代码来源:tsp_solver_gurobi.py

示例3: _set_objective_function

# 需要导入模块: import gurobipy [as 别名]
# 或者: from gurobipy import quicksum [as 别名]
def _set_objective_function(self):
        # Similar to constraints, saving the costs expressions as attributes
        # can give you the chance to retrieve their values at the end of the optimization
        self.total_holding_cost = self.input_params['holding_cost'] * grb.quicksum(self.inventory_variables.values())

        self.total_production_cost = grb.quicksum(row['production_cost'] * self.production_variables[index]
                                                  for index, row in self.input_data.iterrows())

        objective = self.total_holding_cost + self.total_production_cost
        self.model.setObjective(objective, grb.GRB.MINIMIZE)

    # ================== Optimization ================== 
开发者ID:ekhoda,项目名称:optimization-tutorial,代码行数:14,代码来源:optimization_model_gurobi.py

示例4: _add_set_covering_constraints

# 需要导入模块: import gurobipy [as 别名]
# 或者: from gurobipy import quicksum [as 别名]
def _add_set_covering_constraints(m, N, K, X_j, X_j_keys, X_j_node_sets, X_j_forbidden_combos):
    # c1, the convering constraint, each node mus be served exactly by 
    #  one route
    c1_constrs = []
    for i in xrange(1,N):
        active_vars_sum = quicksum([X_j[j]
                                   for j, ns in enumerate(X_j_node_sets)
                                   if i in ns])
        c1c = m.addConstr( active_vars_sum == 1, "c1_n%d"%i )
        c1_constrs.append(c1c);
        
    # c2, the forbid constraints that do not allow some petal combinations
    c2_constrs = []
    for i, fc in enumerate(X_j_forbidden_combos):
        # sum_{i \in S } x_i - sum_{j \in \not{S} } x_j < |S| 
        combo_sum = quicksum([X_j[j] if (j in fc) else -X_j[j]
                                    for j in X_j_keys])
        c2c = m.addConstr( combo_sum  <= len(fc)-1, "c2_n%d"%i )
        c2_constrs.append(c2c);
    
    # c3, number of vehicles constraint
    c3_constrs = []
    if K:
        active_vars_sum = quicksum(X_j)
        c3c = m.addConstr( active_vars_sum <= K, "c3" )
        c3_constrs.append(c3c)
        
    return c1_constrs, c2_constrs, c3_constrs 
开发者ID:yorak,项目名称:VeRyPy,代码行数:30,代码来源:petalvrp.py

示例5: regularize

# 需要导入模块: import gurobipy [as 别名]
# 或者: from gurobipy import quicksum [as 别名]
def regularize(self, center, norm, a, b, i):
        """Regularize a stochastic model.

        Parameters
        ----------

        center: array-like
            The regularization center with length n_states.

        norm: 'L1'/'L2'
            The norm to use for regularization.

        a,b,i: float,float,integer (a>0, 0<b<1, i>0)
            The coefficient of the regularization term is a*b^{i}, where i is
            the index of iteration.
        """
        self.rgl = self._model.addVar(
            lb=0,
            obj=self.modelsense*b**i,
            name='rgl'
        )
        if norm == 'L1':
            self.rgl_constr = self._model.addConstrs(
                (self.rgl >= a*(self.states[i] - center[i])
                for i in range(self.n_states)),
                name = 'rgl'
            ).values()
        elif norm == 'L2':
            self.rgl_constr = [self._model.addQConstr(
                self.rgl -
                a*gurobipy.QuadExpr(
                    gurobipy.quicksum([
                        self.states[i] * self.states[i]
                        - self.states[i] * 2 * center[i]
                        + center[i] * center[i]
                        for i in range(self.n_states)
                    ])
                )
                >=0,
                name = 'rgl'
            )]
        self._model.update() 
开发者ID:lingquant,项目名称:msppy,代码行数:44,代码来源:sp.py

示例6: _binarize

# 需要导入模块: import gurobipy [as 别名]
# 或者: from gurobipy import quicksum [as 别名]
def _binarize(self, precision, n_binaries, transition=0):
        # Binarize StochasticModel. StochasticModel at transition stage keeps
        # states in original space while binarzing local_copies
        self.n_states_original_space = self.n_states
        self.local_copies_original_space = self.local_copies
        self.states_original_space = self.states
        if transition == 0:
            self.states = []
            self.n_states = 0
        self.local_copies = []
        for i, (x, y) in enumerate(
            zip(self.states_original_space, self.local_copies_original_space)
        ):
            if transition == 0:
                states = self.addVars(
                    n_binaries[i], vtype=gurobipy.GRB.BINARY, name=x.varName
                ).values()
            local_copies = self.addVars(
                n_binaries[i], vtype=gurobipy.GRB.BINARY, name=y.varName
            ).values()
            self.update()
            if transition == 0:
                temp1 = gurobipy.quicksum(
                    pow(2, i) * states[i] for i in range(n_binaries[i])
                )
            temp2 = gurobipy.quicksum(
                pow(2, i) * local_copies[i] for i in range(n_binaries[i])
            )
            # Assume bounds are the same over time!
            if x.vtype not in ["I","B"]:
                if transition == 0:
                    self.addConstr(
                        temp1 == precision * (x - x.lb),
                        name="binarize_states_{}".format(i),
                    )
                self.addConstr(
                    temp2 == precision * (y - y.lb),
                    name="binarize_local_copies_{}".format(i),
                )
            else:
                x.lb = math.ceil(x.lb)
                y.lb = math.ceil(y.lb)
                if transition == 0:
                    self.addConstr(
                        temp1 == x - x.lb,
                        name="binarize_states_{}".format(i),
                    )
                self.addConstr(
                    temp2 == y - y.lb,
                    name="binarize_local_copies_{}".format(i),
                )
            if transition == 0:
                self.states += states
                self.n_states += n_binaries[i]
            self.local_copies += local_copies 
开发者ID:lingquant,项目名称:msppy,代码行数:57,代码来源:sp.py

示例7: gurobi_tsp

# 需要导入模块: import gurobipy [as 别名]
# 或者: from gurobipy import quicksum [as 别名]
def gurobi_tsp(distance_matrix):
    """
    Solves tsp problem.
    :param distance_matrix: symmetric matrix of distances, where the i,j element is the distance between object i and j
    :return: matrix containing {0, 1}, 1 for each transition that is included in the tsp solution
    """
    n = len(distance_matrix)
    m = Model()
    m.setParam("OutputFlag", False)
    m.setParam("Threads", 1)

    # Create variables
    vars = {}
    for i in range(n):
        for j in range(i + 1):
            vars[i, j] = m.addVar(
                obj=0.0 if i == j else distance_matrix[i][j], vtype=GRB.BINARY, name="e" + str(i) + "_" + str(j)
            )
            vars[j, i] = vars[i, j]
        m.update()

    # Add degree-2 constraint, and forbid loops
    for i in range(n):
        m.addConstr(quicksum(vars[i, j] for j in range(n)) == 2)
        vars[i, i].ub = 0
    m.update()

    # Optimize model
    m._vars = vars
    m.params.LazyConstraints = 1

    def subtour_fn(model, where):
        return subtourelim(n, model, where)

    m.optimize(subtour_fn)
    solution = m.getAttr("x", vars)
    selected = [(i, j) for i in range(n) for j in range(n) if solution[i, j] > 0.5]
    result = np.zeros_like(distance_matrix)
    for (i, j) in selected:
        result[i][j] = 1

    return result 
开发者ID:martius-lab,项目名称:blackbox-backprop,代码行数:44,代码来源:travelling_salesman.py

示例8: create_model

# 需要导入模块: import gurobipy [as 别名]
# 或者: from gurobipy import quicksum [as 别名]
def create_model(instance):
  """
  Creates a simple MIP model for a set cover instance.

  Creates one binary decision variable s_i for each set. The objective
  function is simply the sum over the c_i * s_i. The constraints
  are that each item is captured by at least one set that is taken.

  Args:
    instance: The set cover instance as created by read().

  Returns:
    A pair of the Gurobi MIP model and the mapping from the sets
    in the instance to the corresponding Gurobi variables.
  """
  name, nitems, sets = instance
  model = grb.Model(name)

  # One variable for each set. Also remember which sets cover each item.
  covered_by = [[] for i in range(nitems)]
  vars = []
  for i, set in enumerate(sets):
    cost, covers = set
    vars.append(model.addVar(obj=cost, vtype=grb.GRB.BINARY, name="s_{0}".format(i)))

    for item in covers:
      covered_by[item].append(vars[i])
  model.update()

  # Constraint: Each item covered at least once.
  for item in range(nitems):
    model.addConstr(grb.quicksum(covered_by[item]) >= 1)

  # We want to minimize. Objective coefficients already fixed during variable creation.
  model.setAttr("ModelSense", grb.GRB.MINIMIZE)

  # Tuning parameters derived from sc_330_0
  model.read("mip.prm")

  model.setParam("Threads", 3)
  model.setParam("MIPGap", 0.001)  # 0.1% usually suffices

  return model, vars 
开发者ID:discreteoptimization,项目名称:setcover,代码行数:45,代码来源:mip.py


注:本文中的gurobipy.quicksum方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。