4.4. 使用 Python 语言调用 MindOpt¶
本节通过一个简单的示例展示如何使用 Python 语言调用 MindOpt 实现优化模型的读取与求解。
4.4.1. 安装mindoptpy库¶
MindOpt 的 Python 库可通过两种方式进行安装。在正式安装之前,请留意以下注意事项。
Note
建议通过 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
本安装方式内嵌了一个特定 License,有效期是:2023/01/01 ~ 2024/12/31。不依赖本地安装包,不支持 命令行调用 MindOpt 等其他功能。如需其他功能,请完整安装,参阅 安装说明。
4.4.1.2. 方式二:通过 MindOpt 单机版安装 Python SDK¶
MindOpt 单机版的安装请参阅 安装说明。
首先执行以下指令安装依赖包:
pip install numpy scipy
最后进入 Python SDK 所在目录,执行以下指令安装 mindoptpy
库。以 Linux x86 平台为例:
cd <MDOHOME>/linux64-x86/lib/python
python setup.py install
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