Python PyOMO:二进制域的变量正在优化为浮点值b/w 0和1

Python PyOMO:二进制域的变量正在优化为浮点值b/w 0和1,python,pyomo,Python,Pyomo,我目前正在尝试使用Xpress Solver使用几个非负变量和几个二进制变量优化我的成本方程。 我有以下问题: 解算器返回b/w 0和1中的浮点值,而预期输出为0或1 我假设在声明变量时出现了问题。有人能指出错误吗 变量定义 约束条件 优化 可以显示解算器日志吗?将解算器更改为“amplxpress”刚刚解决了我的问题。我认为“xpress”解算器无法处理二进制变量。 M.U1=Var(M.T, domain=Boolean, bounds=(0,1), initialize=1) M.U2=V

我目前正在尝试使用Xpress Solver使用几个非负变量和几个二进制变量优化我的成本方程。 我有以下问题:

  • 解算器返回b/w 0和1中的浮点值,而预期输出为0或1
  • 我假设在声明变量时出现了问题。有人能指出错误吗
  • 变量定义 约束条件 优化
    可以显示解算器日志吗?将解算器更改为“amplxpress”刚刚解决了我的问题。我认为“xpress”解算器无法处理二进制变量。
    M.U1=Var(M.T, domain=Boolean, bounds=(0,1), initialize=1)
    M.U2=Var(M.T, domain=Boolean, bounds=(0,1), initialize=1)
    M.U3=Var(M.T, domain=Boolean, bounds=(0,1), initialize=1)
    M.U4=Var(M.T, domain=Boolean, bounds=(0,1), initialize=1)
    
    M.aL=Constraint(expr=M.a[t]>=constraint_data['Minimum Stable Output - Pmin (MW)'][0]*M.U1[t])
    M.aU=Constraint(expr=M.a[t]<=constraint_data['Maximum Stable Output - Pmax (MW)'][0]*M.U1[t])
    M.bL=Constraint(expr=M.b[t]>=constraint_data['Minimum Stable Output - Pmin (MW)'][1]*M.U2[t])
    M.bU=Constraint(expr=M.b[t]<=constraint_data['Maximum Stable Output - Pmax (MW)'][1]*M.U2[t])
    M.cL=Constraint(expr=M.c[t]>=constraint_data['Minimum Stable Output - Pmin (MW)'][2]*M.U3[t])
    M.cU=Constraint(expr=M.c[t]<=constraint_data['Maximum Stable Output - Pmax (MW)'][2]*M.U3[t])
    M.dL=Constraint(expr=M.d[t]>=constraint_data['Minimum Stable Output - Pmin (MW)'][3]*M.U4[t])
    M.dU=Constraint(expr=M.d[t]<=constraint_data['Maximum Stable Output - Pmax (MW)'][3]*M.U4[t])
    
    M.C1=Constraint(expr=(M.a[t]+M.b[t]+M.c[t]+M.d[t])==data['Utility Load (MW)'][t])
    
     expression1=M.U1[t]*M.a[t]*cost_data['Price ($/MWh)'][0]+M.U2[t]*M.b[t]*cost_data['Price ($/MWh)'] [1]+M.U3[t]*M.c[t]*cost_data['Price ($/MWh)'][1]+M.U4[t]*M.d[t]*cost_data['Price ($/MWh)'][2]
     M.obj = Objective(expr=expression1 ,sense= minimize)
    
    optimizer=SolverFactory('xpress')
    optimizer.solve(M)