我怎么知道CheckSatisfied的变量顺序?

问题描述

我正在尝试使用CheckSatisfied函数为约束编写一些单元测试。我怎么知道输入向量x的可变顺序?

例如

q = prog.NewContinuousVariables(1,'q')
r = prog.NewContinuousVariables(2,'r')
formula = le(q,r[0] + r[1])
constraint = prog.AddConstraint(formula)
assert(constraint.evaluator().CheckSatisfied([0.3,0.5,1]))

我怎么知道哪个变量0.30.51对应?

它是否取决于约束的添加方式,如果是,我如何知道以无数种方式添加的约束的可变顺序?

解决方法

变量的顺序存储在AddConstraint的返回参数中。如果选中constraint.variables(),则会看到变量顺序。伪代码是

constraint = prog.AddConstraint(formula)
print(f"{constraint.variables()}")

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...