我决定参加 并且需要使用包来解决优化问题。 我选择了 Google 工具或-tools,它是不同求解器(或求解器?求解器?)的接口。 它包含多个优化工具,但创建者声称支持多个外部软件包,包括商业 Gurobi 和 CPLEX。 不过,我们不是有钱人,我们会使用免费的 SCIP 和 GLPK(顺便说一下,来自国内开发商)。 令我惊讶的是,我没有找到任何关于如何在 Python 虚拟环境中在我们和英语地区的互联网上实现所有这些精彩功能的说明,我不得不进行一些修改。 对于赶时间的人,请立即阅读 至于其他人,我建议你们看看我那几篇不太靠谱的、描述安装谷歌软件来龙去脉的笔记。哦,对了,我忘了说,所有东西都是安装在 Manjaro 系统上的。 Linux.

第一步骤
所有三个包都存在于 Python 存储库中,因此我们通过 pip 安装它们。
它们每个都有自己的界面,选择 or-tools 只是为了尝试不同的包,而不需要大量重写程序,因此 or-tools 的任务是拾取这些求解器并让它们自行运行。 你觉得怎么样? 通过 pip 或-tools 安装并不会看到通过 pip 安装的求解器,而且他们也看不到它(谁会想到)。 所以,你还是需要看看他们写的是什么 .
文档写道,您需要从源代码构建,以便 or-tools 可以获取外部包。 我们尝试编译它,但没有任何结果,因为通过 pip 安装的求解器不可见。
因此,通过 pip 安装所有软件包的最简单方法不起作用,因为 or-tools 不会拉起求解器,求解器不会按照 or-tools 想要的方式安装库,每个人都会向你抛出错误,称你愚蠢,并且以各种可能的方式笑。
进一步 他们写道,您需要从源代码编译求解器,然后从源代码编译 or-tools 本身。 说到做到! 我安装了 SCIP,安装了 GLPK,但是出现了如何在虚拟环境中安装 or-tools 的问题,文档中没有描述该问题。
在坞站中编写的唯一命令 make python 会在系统上全局安装软件包(令人惊讶,对吧?)。
不过,我很幸运:在使用无尽猴子的方法进行工程搜索时,我不小心输入了 make help 命令,它给了我一个构建或工具的所有选项的列表,其中就有构建轮子的选项包裹。 这是 make python_package 命令(如果有的话)(我将在最后重复一遍)。 那么,现在是组装和发射的时候了吗?

寻找问题
在 or-tools 构建阶段什么都不起作用,它抱怨 GLPK 库不好。

使用文档中的参数使用 SCIP 构建成功,但 or-tools 在导入时仍然拒绝工作。

我自己找不到解决这些问题的方法,所以我去 GitHub 询问开发人员,为什么按照他们的说明安装会在代码中的某个地方产生错误。

嗯,谢谢你的澄清
当我在 Github 上等待答案时,我在互联网上搜索,希望找到一些对我有帮助的东西。 令人惊讶的是,我找到了它。 它是 该项目的团队负责人,他在其中撰写了有关如何将 GLPK 与 or-tools 连接的文章。 而这个方法终于奏效了! 现在,如果您不使用 SCIP 但使用 GLPK 收集所有内容,那么您甚至可以使用它。 已经进步了。
然而or-tools团队的组长并不推荐使用GLPK,说它显示的结果并不重要,我仍然想击败SCIP并使其发挥作用。 邻接 该博客让我了解到 Google 软件包适用于特定版本。 我们看看吧 我们看到有明确的版本 6.0.0 的指示。 尽管 makefile 中标明了版本 6.0.2,但我们还是尝试安装旧版本,瞧!
现在再次介绍操作的工作顺序。
安装顺序
- 下载 SCIP 存档,确保 明确指出了对您正在下载的版本的支持(在我的情况下 )并打开包装。
- 下载 GLPK(在撰写本文时最新版本是 4.65)并解压它。
- 安装 SCIP 命令
make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=<path>/scipoptsuite-6.0.0 - 使用以下命令安装 GLPK:
./configure --prefix=<install_path> --with-pic --enable-shared make make install - 从 Github 下载 OR-Tools
git clone https://github.com/google/or-tools - 使用以下命令安装 OR-Tools:
make third_party make python_package如果最后一个命令不起作用,请使用以下命令安装wheel:
pip install wheel - 要激活虚拟环境,请转到包含 Python 包的文件夹并从那里安装它。
如果您需要的不是在虚拟环境中安装,而是在整个系统中进行全局安装,而不是:
make python_package运行命令:
make python
来源: habr.com
