4.4. 使用 Python 语言调用 MindOpt¶
本节通过一个简单的示例展示如何使用 Python 语言调用 MindOpt 实现优化模型的读取与求解。
4.4.1. 安装mindoptpy库¶
MindOpt 的 Python 库可通过两种方式进行安装。在正式安装之前,请留意以下注意事项。
备注
建议通过 conda 创建虚拟环境,并在该虚拟环境下安装 MindOpt 软件包 (conda的安装请参考: conda文档)。
对于使用 conda 环境的 macOS 用户,需保持 conda 和 macOS 的架构信息相符,可通过判断
conda info输出的__archspec字段与uname -m的输出是否一致进行判断。
conda info
uname -m
确认 conda info 输出中的 __archspec 字段的值和 uname -m 的输出一致。
4.4.1.1. 方式一:通过 pip install 安装 (推荐)¶
此安装方式适用于 0.24.1 及之后的版本,执行以下指令安装 mindoptpy 库:
pip install mindoptpy
若已经安装了旧版本的 mindoptpy 包,可以执行以下指令以升级到最新 mindoptpy 包:
pip install --upgrade mindoptpy
4.4.2. 编辑.py文件¶
以下我们将展示如何在 .py 文件中调用 MindOpt Python API 读取优化问题模型文件并进行求解。
首先导入 Python 模块:
1from mindoptpy import *
然后创建环境和启动环境:
17    env = Env()
18    env.start()
使用 read()  来读取 MPS/LP 格式的优化问题:
18    model = read(filename, env)
最后,使用 optimize() 来求解问题,并通过模型属性 ObjVal 来查看最优解的目标函数值。
21        model.optimize()
22        print(model.objval)
以下为完整的源代码文件 read_mps.py。
 1from mindoptpy import *
 2import argparse
 3
 4
 5if __name__ == "__main__":
 6
 7    # Register arguments.
 8    parser = argparse.ArgumentParser(description='Run MindOpt.')
 9    parser.add_argument('--filename', type=str, default='../data/afiro.mps', help='Input LP/MPS filename.')
10    args = parser.parse_args()
11    filename = args.filename
12
13    print("Started MindOpt.")
14    print(" - Filename  : {0}".format(filename))
15
16    env = Env()
17    env.start()
18    model = read(filename, env)
19
20    try:
21        model.optimize()
22        print(model.objval)
23
24    except MindoptError as e:
25        print("Received MindOpt exception.")
26        print(" - Code          : {}".format(e.errno))
27        print(" - Reason        : {}".format(e.message))
28    except Exception as e:
29        print("Received exception.")
30        print(" - Reason        : {}".format(e))
31    finally:
32        model.dispose()
在安装路径 <MDOHOME>/<VERSION>/examples/python 下中可以找到更多 Python 语言相关示例文件。
4.4.3. Linux和macOS上执行¶
我们在安装路径 <MDOHOME>/<VERSION>/examples/python 下提供了示例文件。执行以下指令运行示例代码以完成优化求解:
cd <MDOHOME>/examples/python
python read_mps.py --filename=../data/afiro.mps
4.4.4. Windows平台上执行¶
我们在安装路径 <MDOHOME>\<VERSION>\examples\python  下提供了示例文件。执行以下指令运行示例代码以完成优化求解:
cd <MDOHOME>\examples\python
python read_mps.py --filename=..\data\afiro.mps