为什么yamilp中binvar变量有小数?

如题:
在matlab中yamilp调用gurobi时,设置了01变量,binvar,结果却显示有小数,很接近1,但不是1,大约0.99998左右。这是为什么?

Gurobi在求解问题时使用了浮点数算法,而浮点数算法会引入舍入误差。
一种解决方法是将该变量的容忍度(tol)值设置为一个非常小的值,例如1e-9,这可以通过在定义变量时使用'b' + num2str(tol)的形式来实现,例如:
x = binvar(n,1,'full','b1e-9');
这样可以在一定程度上减少数值误差的影响。另外也可以在Gurobi的参数设置中调整求解器的精度参数,例如将FeasibilityTol和IntFeasTol参数设置为更小的值,可以提高求解器的精度。