模型添加的约束条件有 涉及变量的1.75次方的约束方程和涉及变量本身的约束方程
from gurobipy import *
import math
#创建模型
m=gurobipy.Model('test')
#创建变量
q1=m.addVar(vtype=GRB.CONTINUOUS,name='q1')
q2=m.addVar(vtype=GRB.CONTINUOUS,name='q2')
#设置目标函数
m.setObjective(q1+q2,GRB.MAXIMIZE)
#添加约束条件
# 约束1 1<q1<10
m.addConstr(q1>=1)
m.addConstr(q1<=10)
# 约束2 q2=q1^1.75
m.addConstr(q2==q1**(1.75))
m.optimize()
会报错
Traceback (most recent call last):
File "E:\python\总收益最大program\study\test_gurobiby_variable_calculate.py", line 27, in
m.addConstr(q2=q1**(1.75))
TypeError: unsupported operand type(s) for ** or pow(): 'Var' and 'float'
下面改成对数形式
from gurobipy import *
import math
#创建模型
m=gurobipy.Model('test')
#创建变量
q1=m.addVar(vtype=GRB.CONTINUOUS,name='q1')
q2=m.addVar(vtype=GRB.CONTINUOUS,name='q2')
#设置目标函数
m.setObjective(q1+q2,GRB.MAXIMIZE)
#添加约束条件
# 约束1 1<q1<10
m.addConstr(q1>=1)
m.addConstr(q1<=10)
# 约束2 q2=q1^1.75
# m.addConstr(q2==q1**(1.75))
m.addConstr(math.log(q2)==1.75*q1)
m.optimize()
还是会报错
Traceback (most recent call last):
File "E:\python\总收益最大program\study\test_gurobiby_variable_calculate.py", line 28, in
m.addConstr(math.log(q2)==1.75*q1)
TypeError: must be real number, not Var
以上是我举得小例子
实际项目的报错在变量类型上还有一点点不同
Traceback (most recent call last):
File "E:\python\总收益最大program\temp_invalid syntax.py", line 193, in
temp1=math.log(pressure_node_month[(i,Pipe_Start[pipe]-1)]-pressure_node_month[(i,Pipe_End[pipe]-1)])
TypeError: must be real number, not gurobipy.LinExpr
实在是快晕了o(╥﹏╥)o。。第一次在此提问orz
请问楼主解决了吗,同样遇到了这样的问题,在想是不是要用高数的,按照展开式进行分解,如果楼主解决了麻烦回个消息,可以有尝
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。