dense.py


dense.py


#!/usr/bin/env python3.7 # Copyright 2021, 狗万app足彩Gurobi Optimization, LLC #这个例子阐述并解决了以下简单的QP模型:# #最小化x + y + x ^ 2 + x * y + y ^ 2 + y * z + z ^ 2 #受x + 2 y + 3 z > = 4 # x + y > = 1 # x, y, z非负# #稠密矩阵的示例展示了使用存储和Q #(和密集的其他相关数据的向量)。我们不建议您使用密集矩阵,但是如果您已经使用了这种格式的数据,那么这个示例可能会有所帮助。import sys import gurobipy as gp from gurobipy import GRB def dense_optimization (rows, cols, c, Q, A, sense, rhs, lb, ub, vtype, solution): model = gp. model() #为j在range(cols)中添加变量:vars = []addVar(lb=lb[j], ub=ub[j], vtype=vtype[j])) # Populate A matrix for i in range(rows): expr = gp.LinExpr() for j in range(cols): if A[i][j] != 0: expr += A[i][j]*vars[j]模型。addLConstr (expr[我],rhs[我])#填充目标obj = gp.QuadExpr()因为我范围(关口):j的范围(关口):如果Q[我][j] ! = 0: obj + =问[我][j] * vars[我]* var的j [j]范围(关口):如果c [j] ! = 0: obj + = c [j] * var [j] model.setObjective (obj) #解决model.optimize model.write() #模型写入一个文件(dense.lp)如果模型。状态= =伽马线暴。最佳:x =模型。将模型数据放入密集矩阵c = [1,1,0] Q = [1,1,0], [0,1,1], [0,0,1], A = [1,2,3], [1,1,0], [1,1,0], sense = [GRB。GREATER_EQUAL伽马线暴。rhs = [4,1] lb = [0,0,0] ub = [GRB.]无穷,伽马线暴。无穷,伽马线暴。vtype = [GRB。连续,伽马线暴。连续,伽马线暴。CONTINUOUS] sol = [0]*3 # Optimize success = dense_optimize(2, 3, c, Q, A, sense, rhs, lb, ub, vtype, sol) if success: print('x: %g, y: %g, z: %g' % (sol[0], sol[1], sol[2]))