Python 如何在gurobi中定义线性回归的目标函数和约束函数?

Python 如何在gurobi中定义线性回归的目标函数和约束函数?,python,optimization,gurobi,Python,Optimization,Gurobi,我有一个numpy数组x,有10000行*10列和一个向量y。现在我想使用gurobi和python构建一个线性回归模型。我的目标是尽可能减少最坏的绝对误差值 我对古洛比真的很陌生,所以在将所有决策变量(w1,…w10和b)添加到模型中之后,我一直在编写目标函数和约束函数。对于约束函数部分,我认为应该创建一个10000*1 numpy变量z来表示错误 for i in range(10000): m.addConstr(np.dot(x[i],w) + b - y[i] - z[i],

我有一个numpy数组x,有10000行*10列和一个向量y。现在我想使用gurobi和python构建一个线性回归模型。我的目标是尽可能减少最坏的绝对误差值

我对古洛比真的很陌生,所以在将所有决策变量(w1,…w10和b)添加到模型中之后,我一直在编写目标函数和约束函数。对于约束函数部分,我认为应该创建一个10000*1 numpy变量z来表示错误

for i in range(10000):
    m.addConstr(np.dot(x[i],w) + b - y[i] - z[i], "<=" , rhs=0)  
    m.addConstr(-(np.dot(x[i],w) + b - y[i]) - z[i], "<=" , rhs=0)
m.update()

m.optimize()
范围(10000)内的i的

m、 addConstr(np.dot(x[i],w)+b-y[i]-z[i],“
z
必须是一个决策变量,因此不需要初始值。明白了。谢谢。另一个问题是,如果我想得到z中最严重的错误,我可以只使用max(z)吗或者我必须添加另一个变量z_max并添加相应的约束?您不能使用max。您需要根据建模框架的规则来制定它。但老实说:您的规范仍然缺失(人们可能会考虑重新制定,同时牢记这两个部分).是的,你需要一个变量
z_max
和方程
zNb这方面有更好的公式。你可以做的第一件事是替换z[i]通过一个z直接最小化z。
z
必须是一个决策变量,因此不需要初始值。知道了。谢谢。另一个问题是,如果我想得到z中最严重的错误,我可以使用max(z)吗或者我必须添加另一个变量z_max并添加相应的约束?您不能使用max。您需要根据建模框架的规则来制定它。但老实说:您的规范仍然缺失(人们可能会考虑重新制定,同时牢记这两个部分).是的,你需要一个变量
z_max
和方程
zNb这方面有更好的公式。你可以做的第一件事是用一个z替换z[i],并直接最小化z。