我试图定义一个目标函数,它使用变量的当前值作为整数进行计算(如下所示):
def foo(arg1, arg2, arg3):
return arg1 - arg2 + arg3
def objective_that_does_not_work(x0, x1, x2):
y = foo(x0.solution_value(), x1.solution_value(), x2.solution_value())
return y
def objective_that_works(x0, x1, x2):
y = foo(x0, x1, x2)
return y
其中 x0、x1、x2 是 IntVar。
在我的用例中,函数 foo 的定义方式需要 int 参数。
当我尝试最大化时objective_that_does_not_work,它会随机给出 x0、x1、x2 的上限或下限(每次运行求解器时都有不同的值)。
我的问题:
是否可以根据 IntVar 的值而不是 IntVar 本身来定义目标?
如果是,solution_value()
使用的属性是否正确?从文档来看,它似乎是最合适的,但我可能误解了它的用途。
牛魔王的故事