Optimization xpress的优化结果不符合指定的变量类型

Optimization xpress的优化结果不符合指定的变量类型,optimization,mixed-integer-programming,xpress-optimizer,Optimization,Mixed Integer Programming,Xpress Optimizer,我发现xpress的优化结果不符合指定的变量类型时出现了一些问题。当我创建xpress变量时,我设置了vartype=xp.binary,但有些结果的值为0.13333、0.36667、0.5 我发现这是由其中一个限制因素造成的。当我禁用大多数约束时,值都是二进制的。然后,我一个接一个地启用了约束,并找到了一组导致值为非二进制的约束 以前有人看到过吗?关于如何强制变量值为二进制的建议 谢谢 为了完整起见,将欧文·卡韦拉根的评论扩展为一个答案: 整数变量的分数值通常在问题不可行时出现。 在solv

我发现xpress的优化结果不符合指定的变量类型时出现了一些问题。当我创建xpress变量时,我设置了vartype=xp.binary,但有些结果的值为0.13333、0.36667、0.5

我发现这是由其中一个限制因素造成的。当我禁用大多数约束时,值都是二进制的。然后,我一个接一个地启用了约束,并找到了一组导致值为非二进制的约束

以前有人看到过吗?关于如何强制变量值为二进制的建议


谢谢

为了完整起见,将欧文·卡韦拉根的评论扩展为一个答案: 整数变量的分数值通常在问题不可行时出现。 在
solve()
返回后,您需要检查
attributes.mipstatus
以确保您确实有可用的解决方案(另请参见MIP status的潜在值):


获取问题状态的另一种方法是函数
p。getProbStatus()

可能该模型是整数不可行的。检查解算器日志,确保其显示“最优”。@ErwinKalvelagen,你说得对,谢谢!
p = xp.problem()
...
p.solve()
print(p.getProbStatus(), p.getProbStatusString())
if p.attributes.mipstatus == xp.mip_solution or \
   p.attributes.mipstatus == xp.mip_optimal:
    print(p.getProbStatusString())
    print(p.getSolution())
else:
    print('No feasible solution', p.getProbStatusString())