• 常用求解器安装


    1 建模语言pyomo

    Pyomo是一个Python建模语言,用于数学优化建模。它可以与不同的求解器(如Gurobi,CPLEX,GLPK,SCIP等)集成使用,以求解各种数学优化问题。可以使用Pyomo建立数学优化模型,并将其发送到求解器来求解。要使用SCIP求解器,您需要安装SCIP软件包并将其配置为Pyomo的求解器之一。然后,您可以在Pyomo中指定SCIP作为您的求解器,并使用Pyomo接口将模型发送到SCIP以求解。

    另外,Pyomo可以使用启发式算法来求解优化问题。Pyomo提供了一个插件pyomo.contrib.hybrid,它允许用户将Pyomo模型与任何启发式算法集成。您可以使用以下步骤在Pyomo中调用启发式算法:

    (1)安装所需的启发式算法库,例如Particle Swarm Optimization(PSO),Simulated Annealing(SA)或Tabu Search(TS)。
    (2)在Pyomo模型中定义目标函数和约束条件。
    (3)使用pyomo.contrib.hybrid插件将Pyomo模型转换为适合启发式算法求解的问题。
    (4)使用所选的启发式算法库来求解转换后的问题。

    pyomo教程:

    • https://jckantor.github.io/ND-Pyomo-Cookbook/notebooks/04.01-Introduction_to_Disjunctive_Programming.html

    2 求解器安装

    cplex安装

    商用求解器

    进入https://www.ibm.com/cn-zh/products/ilog-cplex-optimization-studio?utm_content=SRCWW&p1=Search&p4=43700074800244505&p5=2&gclid=CMa2nZ7KooEDFXNDwgUd1t0KIg&gclsrc=ds 下载试用版

    https://blog.csdn.net/weixin_46034036/article/details/126813229?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169443599016800211562125%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=169443599016800211562125&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-2-126813229-null-null.142v93control&utm_term=cplex%20python&spm=1018.2226.3001.4187

    • cplex22.1.1
      打开anaconda cmd
    conda create -n cplexEnv python=3.9.16
    activate cplexEnv
    D:
    cd D:\Program Files\IBM\ILOG\CPLEX_Studio_Community2211\python
    python setup.py install
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里直接安装在了base环境(python3.9),安装后,测试一下

    from docplex.mp.model import Model
    m = Model(name='single variable')
    x = m.continuous_var(name="x", lb=0)
    c1 = m.add_constraint(x >= 2, ctname="const1")
    m.set_objective("min", 3*x)
    m.print_information()
    m.solve()
    m.print_solution()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    gurobi安装

    商用求解器

    reference:https://blog.csdn.net/weixin_41596280/article/details/89112302

    • 打开https://www.gurobi.com/downloads/,注册账号后,下载Gurobi Optimizer
      请添加图片描述
      请添加图片描述

    • 下载64位msi,然后安装

    • 注册Gurobi 获取注册码 学术的是免费的,由于申请时会识别ip地址,所以需要连接校园网。免ip申请方式:

      如果您是学生,需要申请学术许可,请去 http://www.gurobi.cn/NewsView1.Asp?id=4 网站按照步骤提示,提交资料申请一个免IP 验证学术许可。

      如果您是企业人士,需要申请商业试用许可,或者商业资料,请去 http://www.gurobi.cn/NewsView1.Asp?id=9 , 填写表格后从公司邮箱发给我们。

      请添加图片描述

    • python安装Gurobi

      打开anaconda cmd

      conda create -n gurobiEnv python=3.9.16
      activate gurobiEnv
      D:
      cd D:\gurobi1002\win64
      python setup.py install
      
      • 1
      • 2
      • 3
      • 4
      • 5

    glpk安装

    reference:https://pyomo.readthedocs.io/en/stable/installation.html

    conda install -c conda-forge ipopt glpk
    
    • 1

    SCIP安装

    reference:

    https://mp.weixin.qq.com/s/d92ds2wryk0T1lb2uPu_PA

    http://www.taodudu.cc/news/show-3777585.html?action=onClick

    https://github.com/scipopt/PySCIPOpt/blob/master/INSTALL.md

    • 打开https://scipopt.org/index.php#download,下载64位exe,然后一路往下点,改存储文件夹。

    • 还需要下载visual C++的一个东西:https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2013-vc-120

      请添加图片描述

      请添加图片描述

    • 新建系统变量:

      • 变量名:SCIPOPTDIR
      • 变量值:D:\Program Files\SCIPOptSuite 8.0.4
    • 在系统变量的path中添加“%SCIPOPTDIR%\bin”,“%SCIPOPTDIR%\include”,“%SCIPOPTDIR%\lib”

    • 在用户变量的path中添加“%SCIPOPTDIR%\bin”

    • 看看自己添加成功否,win+R打开 cmd,输入 scip.exe,如果可以打开,说明变量成功添加到路径里了。

    • activate opt
      python -m pip install pyscipopt==4.3.0 # python-V=3.9.16
      
      • 1
      • 2

    SCIP小例子

    min ⁡ x + y 2 x − y 2 ≥ 0 x ≥ 0 , y ∈ Z \min x+y\\ 2x - y^2\geq 0\\ x\geq 0,y\in \Z minx+y2xy20x0,yZ

    import pyscipopt
    from pyscipopt import Model
    
    """
    min x+y
    2x - y^2 >=0
    x>=0, y\in \Z
    
    """
    
    
    if __name__ == '__main__':
        model = Model("Example")
        x = model.addVar("x")
        y = model.addVar("y", vtype="INTEGER")
        model.setObjective(x + y)
        model.addCons(2*x - y*y >= 0)
        model.optimize()
        sol = model.getBestSol()
        print("x: {}".format(sol[x]))
        print("y: {}".format(sol[y]))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 相关阅读:
    大模型如何赋能智能客服
    spark算子讲解
    直播场景视频和特效解决方案
    “第五十三天”
    js事件对象
    扩展期权定价模型到二元期权定价
    quarkus实战之八:profile
    时间复杂度讲解(数据结构)
    【面试经典150 | 数组】跳跃游戏
    NoSQL Redis
  • 原文地址:https://blog.csdn.net/weixin_45699092/article/details/133648970