【发布时间】:2021-01-08 16:15:52
【问题描述】:
我正在尝试使用 Gurobi 解决线性规划问题,尽管我遇到了在我的第一个约束中已经存在不兼容维度的问题。我的向量 b 的形状为 (3, 1),我的决策变量 lamb_obj 的形状为 (3,)。 有人可以帮我解决这个维度不兼容的问题吗?
picture 描述了我的线性规划问题。
第一个约束是向量乘法由两个相乘值之和相加。我的代码如下所示:
import gurobipy as gp
from gurobipy import GRB
from gurobipy import *
import numpy as np
import numpy.random as rd
import matplotlib.pyplot as plt
import pandas as pd
import math
# Parameters of the lot-sizing problem
N = 2
c = [3.901260342, 1.948694185]
t = np.array([[0, 8.40717256], [2.550951155, 0]])
dmax = 20
Gamma = 20*np.sqrt(N)
b = np.array(([20],[20],[Gamma]))
I = np.identity(2)
A = np.vstack((I, [1,1]))
model = gp.Model('RO') # Define a model
x = model.addVars(N, lb=0, ub=20, vtype=GRB.CONTINUOUS, name='x')
V = model.addVars(N, N, vtype=GRB.CONTINUOUS, name='v')
u = model.addVars(N, N, vtype=GRB.CONTINUOUS, name='u')
tau = model.addVar(name='tau')
lamb_obj = model.addMVar((N + 1,), lb=0, vtype=GRB.CONTINUOUS, name='lamb_obj')
lamb_1 = model.addMVar((N, N + 1), ub=0, vtype=GRB.CONTINUOUS, name='lamb_1')
lamb_2 = model.addMVar((N, N, N + 1), ub=0, vtype=GRB.CONTINUOUS, name='lamb_2')
model.addConstrs(b.T @ lamb_obj + quicksum(t[(i,j)]*u[(i,j)] for i in range(N) for j in range(N)) <= tau, name='blambobj')
model.optimize()
编辑:问题似乎在尺寸为 (1,) 的 (b.T@lamb_obj) 部分和 quicksum(t[(i,j)]*u[(i,j) 之间)] 部分应该是一个标量。
【问题讨论】:
标签: python numpy linear-algebra linear-programming gurobi