如何更改 abs() 或 sqrt()?
Posted
技术标签:
【中文标题】如何更改 abs() 或 sqrt()?【英文标题】:How to change abs() or sqrt()? 【发布时间】:2021-09-30 20:09:27 【问题描述】:我想改变|y-R*p|
abs(y[i]-R*p[i])
我想
sqrt((y[i]-Rp[i])* (y[i]-R*p[i]))
我使用了model.addConstr
for i in P:
model.addConstr(sqrt((y[i]-R*p[i])*(y[i]-R*p[i])) == E[i],name="absconstr" %i)
Type Error:must be real number, not gurobipy.QuadExpr
我使用了 model.addConstrAbs。
for i in P:
model.addGenConstrAbs(E[i],y[i]-R*p[i],"absConstr")
AttributeError: 'gurobipy.LinExpr' object has no attribute '__cindex__'
for i in P:
model.addGenConstrAbs(E,y[i]-R*p[i],"absConstr")
AttributeError: 'dict' object has no attribute '__cindex__'
我无法解决问题。 我该怎么办?
【问题讨论】:
你知道,abs
表示绝对值,sqrt
表示平方根,对吧?
@Karina: abs(x) = sqrt(x*x) 实数 x。
您能改写一下这个问题吗?我不明白。如果您有一个希望能够调用 abs()
的自定义类,请为其定义一个 __abs__
方法:blog.finxter.com/python-__abs__
@Ry 哦,是的,当然,愚蠢的我哈哈。我猜
比数学更能引起我的注意
y
和Rp
有哪些类型?
【参考方案1】:
阅读gurobipy documentation,你不妨试试:
model.addGenConstrAbs(x, y[i]-R*p[i], "absconstr")
【讨论】:
我想换字典。我该怎么办?我在目标函数中使用它 我从来没有使用过 gurobi,只是阅读文档来为您指明正确的方向。我想您需要将变量转换为 addGenConstrAbsfunction 中允许的类型。您可以使用list(d.values())
将字典的值转换为列表吗?
model.addGenConstrAbs(E,y[i]-R*p[i],"absConstr") 'dict' 对象没有属性 'cindex'
我做不到。我很高兴改变答案以上是关于如何更改 abs() 或 sqrt()?的主要内容,如果未能解决你的问题,请参考以下文章
R语言数学函数:abs绝对值sqrt平方根ceiling向上近似整数floor向下近似整数trunc去除小数部分round近似到指定小数位signif近似到有效数字三角函数指数对数