Python PPL 包装器
项目描述
这个 Python 包为 C++ Parma Polyhedra Library (PPL)提供了一个包装器。
整个软件包最初是Sage软件一小部分的一个分支。
这个怎么运作
对象和方法的名称与库中的名称相同:
>>> import ppl
>>> x = ppl.Variable(0)
>>> y = ppl.Variable(1)
>>> z = ppl.Variable(2)
>>> cs = ppl.Constraint_System()
>>> cs.insert(x >= 0)
>>> cs.insert(y >= 0)
>>> cs.insert(z >= 0)
>>> cs.insert(x + y + z == 1)
>>> poly = ppl.C_Polyhedron(cs)
>>> poly.minimized_generators()
Generator_System {point(1/1, 0/1, 0/1), point(0/1, 1/1, 0/1), point(0/1, 0/1, 1/1)}
ppl Python 模块中可用的对象和函数有:
变量、变量集、线性表达式(在ppl.linear_algebra中定义)
MIP_Problem(在ppl.mip_problem中定义)
C_Polyhedron , NNC_Polyhedron (在ppl.polyhedron中定义)
Generator,Generator_System,Poly_Gen_Relation,point, closure_point,ray,line(在ppl.generator中定义)
Constraint,Constraint_System,Poly_Con_Relation, 不等式,equation,strict_inequality(在ppl.constraint中定义)
安装
该项目在Python Package Index中可用,并且可以使用 pip 安装:
$ pip install pplpy
请注意,如果您在非标准目录中安装了 gmp 和 ppl(例如,您在 MacOSX 上使用 brew),那么您需要在调用pip之前适当地设置变量CFLAGS。例如:
$ export CFLAGS="-I/path/to/gmp/include/ -L/path/to/gmp/lib/ -I/path/to/ppl/include/ -L/path/to/ppl/lib $CFLAGS " $ pip install pplpy
从 Cython 使用
pplpy 中的所有 Python 类都是扩展类型,可以与 Cython 一起使用。每个扩展类型都带有一个属性thisptr ,该属性包含一个指向来自 ppl 的相应 C++ 对象的指针。
文件tests/testpplpy.pyx和tests/setup.py提供了一个完整的示例。
资源
您可以在 gitlab 上找到最新版本的源代码: https ://gitlab.com/videlec/pplpy
文档
该文档的在线版本可在http://www.labri.fr/perso/vdelecro/pplpy/latest/获得
编译 html 文档需要 make 和sphinx。在构建文档之前,您需要安装 pplpy 包(sphinx 使用 Python 自省)。文档源代码包含在存储库文档中,其中有一个带有目标html的标准 Makefile 。在docs存储库中运行make html会在docs/build/html中构建文档。有关更多配置选项,请运行make help。
执照
pplpy 是根据自由软件基金会发布的 GNU 通用公共许可证 (GPL) 条款分发的;许可证的第 3 版,或(由您选择)任何更高版本。请参阅http://www.gnu.org/licenses/。
要求
在 Debian/Ubuntu 系统上,这些可以安装:
$ sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev libppl-dev cython $ pip install cysignals --user $ pip install gmpy2 --pre --user
pip 可选选项–user允许为单个用户安装 python 包,而无需管理员权限。这两个 pip install 命令可能会被sudo pip install PKG替换(不推荐)。在最近的 Debian/Ubuntu 系统上,cysignals 也可以作为Python 2的名称python-cysignals和 Python 3的 python3-cysignals 的软件包提供。