如何在Pyomo中声明二维和三维向量

时间:2018-08-11 17:44:01

标签: python-3.x nonlinear-optimization pyomo

我正在尝试使用Pyomo解决优化问题。为此,我需要声明一个二维向量和一个三维向量。这两个向量只能存储[0,1]。

  
    

Sri和Xrij

         

R = 3 V = 8 1 <= i,j <= V 1 <= r <= R

  

我试图在pyomo中使用range

model.IDXV = range(v+1)
model.IDXR = range(r+1)
model.x=Var(model.IDXR,model.IDXV,model.IDXV,within=Binary,initialize=0)
model.s=Var(model.IDXR,model.IDXV,within=Binary,initialize=0) 

我正在使用'ipopt'求解器,但是执行后X和S的值是分数而不是0或1。

请帮助我做到这一点。

1 个答案:

答案 0 :(得分:0)

Axel Kemper(在注释中)是正确的。 ipopt是一个非线性规划求解器,它会自动假定您打算放宽离散值。

对于线性离散问题,有cbcglpk个自由求解器。 gurobicplex是主要的商业解决方案。

对于非线性离散问题,couennebonmin是自由求解器。其他几种商业和学术求解器也可用。