【问题标题】:How to use SOS2 on IBM ILOG CPLEX Optimization Studio如何在 IBM ILOG CPLEX Optimization Studio 上使用 SOS2
【发布时间】:2021-03-04 13:02:31
【问题描述】:

请帮助我。我正在使用 IBM ILOG CPLEX Optimization Studio 来解决我的问题,即我的模型中的一些变量是 SOS2 类型。我不知道,如何在 IBM ILOG CPLEX 上使用 SOS2。

【问题讨论】:

    标签: websphere cplex sos


    【解决方案1】:

    这取决于您使用的 API。

    借助 docplex python API,让我分享来自https://github.com/AlexFleischerParis/zoodocplex/blob/master/zoosos2.py 的示例

    from docplex.mp.model import Model
    
    mdl = Model(name='buses')
    
    nbbus30 = mdl.integer_var(name='nbBus30')
    nbbus40 = mdl.integer_var(name='nbBus40')
    nbbus50 = mdl.integer_var(name='nbBus50')
    
    cost = mdl.continuous_var(name='cost')
    
    
    mdl.add_constraint(nbbus50*50+nbbus40*40 + nbbus30*30 >= 300, 'kids')
    
    mdl.add_constraint(cost==nbbus40*500 + nbbus30*400+nbbus50*550)
    mdl.add_constraint(nbbus50==1)
    
    mdl.minimize(cost)
                    
    mdl.solve()
    
    for v in mdl.iter_integer_vars():
        print(v," = ",v.solution_value)
    
    print("The minimum cost is ",cost.solution_value);    
    
    print("and then with sos2   nbbus30,nbbus40,nbbus50")
    
    
    
    mdl.add_sos2([nbbus30,nbbus40,nbbus50])
    
    mdl.minimize(cost)
                    
    mdl.solve( )
    
    for v in mdl.iter_integer_vars():
        print(v," = ",v.solution_value)
    
    print("The minimum cost is ",cost.solution_value);
    

    给了

    nbBus30  =  3.0
    nbBus40  =  4.0
    nbBus50  =  1.0
    The minimum cost is  3750.0
    and then with sos2   nbbus30,nbbus40,nbbus50
    nbBus30  =  0
    nbBus40  =  7.0
    nbBus50  =  1.0
    The minimum cost is  4050.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 2020-10-30
      相关资源
      最近更新 更多