我需要用最大值和来表示一个约束。我知道这不再是一个线性问题,但我希望有一种方法来伪造或近似它:
model = cp_model.CpModel()
foo = {x: model.NewBoolVar(f"var{x}") for x in range(1, 6)}
bar = {x: model.NewBoolVar(f"var{x}") for x in range(6, 11)}
model.Add(
sum(max(k * v for k, v in variables.items()) for variables in [foo, bar
我试图比较两个双类型变量,它们被舍入到一个特定的小数位,使用BigDecimals和RoundingMode。
例如,当比较3.1456和3.145时,在if语句中四舍五入到小数点3位时,我的if语句只有在这两个值相互等效时才会返回true。
但是,它不适用于我的代码。
BigDecimal one = new BigDecimal(3.1456).setScale(3, RoundingMode.DOWN);
BigDecimal two = new BigDecimal(3.145).setScale(3, RoundingMode.DOWN);
if (one.equals(two))