python ppl包装器
pplp的Python项目详细描述
这个Python包提供了一个包装到C++ Parma Polyhedra Library (PPL)。
整个软件包一开始只是Sage软件的一小部分的分叉。
工作原理
对象和方法的名称与库中的相同:
>>>importppl>>>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)}
来自pplpython模块的可用对象和函数是:
- 变量,变量集,线性表达式(在ppl.linear\u代数中定义)
- mip_problem(在ppl.mip_problem中定义)
- c_多面体,nnc_多面体(定义见ppl.polyhedron)
- 生成器,生成器系统,多边形生成关系,点, 闭包点,射线,线(在ppl.generator中定义)
- 约束,约束系统,多边形关系, 不等式,方程,严格不等式(在ppl.constraint中定义)
安装
该项目在Python Package Index和 可与PIP一起安装:
$ pip install pplpy
请注意,如果gmp和ppl安装在非标准目录中(例如,使用brew 在macosx上),则需要在调用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 相应的C++对象从ppl。
文件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生成文件。运行文档库中的make html生成文档 在docs/build/html中。有关更多配置选项,请运行make help。
许可证
pplpy是根据gnu通用公共许可证(gpl)的条款分发的。 由自由软件基金会出版;或 许可证,或(由您选择)任何更高版本。见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==2.1.0a4 --user
pip可选选项–user允许为单个 不需要管理员权限的用户。两个pip install命令可能 替换为sudo pip install pkg(不推荐)。在最近的debian/ubuntu系统上, cysignals也可以作为名为python cysignals的包提供 python 2和python3 cysignals对于python3。