SCIP求解整数规划实例

SCIP求解整数规划实例

  • 使用开源的求解器scip
  • 以python接口求解整数规划问题demo
  1. 整数规划问题:
    m i n Z = 5 x 1 + 6 x 2 + 23 x 3 + 5 x 4 + 24 x 5 + 6 x 6 + 23 x 7 + 5 x 8 { 2 ∗ x 1 + x 2 + x 3 + x 4 > = 100 2 ∗ x 2 + x 3 + 3 ∗ x 5 + 2 ∗ x 6 + x 7 > = 150 x 1 + x 3 + 3 ∗ x 4 + 2 ∗ x 6 + 3 ∗ x 7 + 5 ∗ x 8 > = 100 x j > = 0 且 为 整 数 ; j = 1 , 2 , . . . , 8 minZ = 5x_1 +6x_2+23x_3+5x_4+24x_5+6x_6+23x_7+5x_8\\ \begin{cases} 2*x_1 + x_2 + x_3 + x_4 >= 100\\ 2*x_2+ x_3 + 3*x_5 + 2*x_6 + x_7 >= 150\\ x_1 + x_3 + 3*x_4 + 2*x_6 + 3*x_7 + 5*x_8 >= 100\\ x_j>=0且为整数;j=1,2,...,8 \end{cases} minZ=5x1+6x2+23x3+5x4+24x5+6x6+23x7+5x82x1+x2+x3+x4>=1002x2+x3+3x5+2x6+x7>=150x1+x3+3x4+2x6+3x7+5x8>=100xj>=0;j=1,2,...,8

  2. demo.py

import pyscipopt as opt

def test_opt():
    model = opt.Model()

    # 定义变量
    x1 = model.addVar(vtype='I', name='x1')
    x2 = model.addVar(vtype='I', name='x2')
    x3 = model.addVar(vtype='I', name='x3')
    x4 = model.addVar(vtype='I', name='x4')
    x5 = model.addVar(vtype='I', name='x5')
    x6 = model.addVar(vtype='I', name='x6')
    x7 = model.addVar(vtype='I', name='x7')
    x8 = model.addVar(vtype='I', name='x8')

    # 定义约束
    model.addCons(2*x1 + x2 + x3 + x4 >= 100)
    model.addCons(2*x2+ x3 + 3*x5 + 2*x6 + x7 >= 150)
    model.addCons(x1 + x3 + 3*x4 + 2*x6 + 3*x7 + 5*x8 >= 100)

    # 设置目标函数
    model.setObjective(5*x1 + 6*x2 + 23*x3 + 5*x4 + 24*x5 + 6*x6 + 23*x7 + 5*x8)
    model.setMinimize()
    model.hideOutput()

    # 优化求解
    model.optimize()

    # 求解状态
    m_gap = model.getGap()
    m_status = model.getStatus()
    print('m_status = ', m_status)
    print('m_gap =', m_gap)

    # 求解值
    print('目标函数值: ', model.getObjVal())
    print('x1 = ', model.getVal(x1))
    print('x2 = ', model.getVal(x2))
    print('x3 = ', model.getVal(x3))
    print('x4 = ', model.getVal(x4))
    print('x5 = ', model.getVal(x5))
    print('x6 = ', model.getVal(x6))
    print('x7 = ', model.getVal(x7))
    print('x8 = ', model.getVal(x8))

if __name__ == '__main__':
    # 求解简单整数规划问题
    test_opt()
  1. 输出结果
    SCIP求解整数规划实例_第1张图片

你可能感兴趣的:(运筹优化,动态规划,机器学习,算法)