A Roadmap for Optimization and Polyhedral Geometry softwares interactions
(around Sage, (PyQ)Normaliz, SCIP, e-antic, Polymake, and others)
This page is being moved to https://trac.sagemath.org/wiki/SagePolyhedralGeometry
Progress Report Timeline
August 2019
Here are improvements realized up to the Sage Days 100 in Bonn
Sage
The following are quite advanced and many are under review:
Implement is_pyramid, is_bipyramid, is_prism for polytopes #27689
Implement wedge over a face of Polyhedron #27973
Implement center of a HyperplaneArrangement #28245
Normal cone of faces of polyhedra #17215
Implement facets method for Polyhedron #27974
ehrhart_polynomial should be made available for polytopes defined over QQ #18957
Fixed: bug in polyhedron over RDF #24877
Fixed: Make outer normal fans readily available #27993
Fixed: py3: polyhedron folder with optional packages #28235
Fixed: Move rational methods of the backend normaliz to the _QQ class #28240
Fixed: add .is_self_dual method for polytopes #28256
Fixed: Add .boundary_complex() method for simplicial polytopes #28248
Fixed: repr of NumberFields (the parents) should indicate its embedding if there is one #21161
The following tickets have been created and should be worked on:
Thematic Tutorial on algebraic polytopes in Sage using Normaliz #28230
Add the 0/1-hypercube to the library of polytopes #28247
April/May 2019
Here are improvements realized during the Research in Pairs at MFO
Sage
The following are quite advanced and many are under review:
upgrade normaliz to 3.7.2, pynormaliz to 2.5 #27731
Almost done with repr of NumberFields (the parents) should indicate its embedding if there is one #21161
Adjust the new features of the normaliz backend to the latest version #25091
Algebraic polytopes now under review #25097
Add the H4 polytopes and generalized permutahedron to the library of polytopes #27760
Create a variant of the polymake interface using polymake's callable library (polymake::Main) via JuPyMake #22704
Add Perles and irrational polytopes to library #27728
Fixed: Upgrade polymake to version 3.4 (current interface breaks) #24905
Fixed: upgrade normaliz to 3.7.1, pynormaliz to 2.1 and package e-antic #27682
Fixed: Refactor backend_normaliz #27716
Fixed: Polytope snub_cube should allow exact coordinates #26340
Fixed: number_field_elements_from_algebraics should create embedded number field elements #20181
Fixed: The attribute _vector of H and V representation is exposed #27709
Fixed: Remove old deprecation warning of Minkowski -> minkowski #27722
Fixed: Upgrade LiDIA to v2.3.0+latte-patches-2019-05-01 #27746
Fixed: PolymakeElement._sage_: Handle polymake type Polyhedron #27742
PyNormaliz
- Update PyQNormaliz by adding lattice points, integer hull and volume
- Removal of instabilities (Memory corruption etc.)
- Added functions
- Added test framework
- Interfacing the new Normaliz features
- Adjustment for Sage signal handling
Several improvements to JuPyMake
- Test implementation of polymake interface for python in cython
- Alpha implementation of Normaliz.jl, a julia interface to Normaliz, to be used in OSCAR and GAP.
Normaliz
- Inclusion of the computation of automorphism groups for general polytopes and cones, also for algebraic polytopes and cones.
- Various types of automorphism groups can be computed: combinatorial, rational, integral and (for algebraic data) algebraic.
- Efficient exploitation of the automorphism group in polyhedral computations has been realized for volumes, Hilbert bases and lattice points in polytopes.
- Three new releases of Normaliz, namely 3.7.1, 3.7.2 and 3,7.3, that have repared several small bugs and improved weak points.
- The API libnormaliz has been restructured and enriched by the accessibility of the output function.
April 2018
Sage
Here are improvements realized during the Coding Sprints at the IMA in Minneapolis to objects related to polyhedron in Sage:
Make features of normaliz accessible #25091
number_field_elements_from_algebraics should create embedded number field elements #20181 Sage-devel discussion
Helper functions and improvements in the normaliz backend #25097
Improve the output of repr_pretty for Polyhedron #24837
Construct RationalPolyhedralFan from possibly overlapping cones #25122
polygon3d ignores the "alpha" (and equivalent "opacity") argument #25095
PolyhedralComplex: preliminary implementation, see #20877
Fixed: Change error message in construction of polyhedron object #24835
Fixed: Update normaliz 3.5.3 and pynormaliz 1.12 in Sage. #22984
Fixed: Thematic tutorial on polyhedron in Sage #22572
Fixed: Implement stacking onto a face of a polyhedron #24847
Fixed: Implement join of polytopes #24848
Fixed: Implement one point suspension and face split of polyhedron #24886
Fixed: The polar of a polyhedron should carry the backend used #25081
(Q)Normaliz
http://normaliz.uni-osnabrueck.de
Upgrade normaliz to 3.5.4 and pynormaliz to 1.16 #25090: Ehrhart series and triangulation of polytope also for inhomogeneous input
Algebraic polytopes in Qnormaliz using e-antic #25097: convex hull computation completed, improvement of Qnormaliz input and output, control of interrupts and parallelization via libQnormaliz, lattice points, integer hull and volume added. Qnormaliz should be essentially complete now.
- General getters for cone properties. The getters can be used in future interfaces to make access to Normaliz cone properties easier
- resetGrading method for cone: Can be used to replace the grading and redo certain Normaliz computation without having to delete
- degree indepenent properties, such as hilbert bases.
- documentation of QNormaliz written
- extensive tests of QNormaliz
- link from libQnormaliz to libnormaliz in preparation for lattice point computation in algebraic polytopes
- further attempts to improve QNormaliz output (not yet complete)
- work on the C++ wrapper of e-antic
fixed: Upgrade normaliz to 3.5.3 and pynormaliz to 1.12 #22984: repair of performance loss
fixed: getProjectionCone might segfault https://github.com/Normaliz/Normaliz/issues/180
fixed: BadInputException for ProjectCone https://github.com/Normaliz/Normaliz/issues/181
- fixed: Normaliz 3.5.4 released
Py(Q)Normaliz
https://pypi.python.org/pypi/PyNormaliz https://github.com/Normaliz/PyNormaliz
PyNormaliz (last version is 1.17):
- All computation goals and output properties from Normaliz 3.5.4 are supported
It is possible to give functions RationalHandler, VectorHandler, and MatrixHandler to NmzResult to construct rationals, vectors, and matrices
Some documentation in the sources of NormalizModule.cpp
- Functionality to copy cone
Functionality to reset grading of a cone in PyNormaliz
PyQNormaliz (current beta is 0.2, not available on PIPy):
- All QNormaliz compute targets can be accessed
- Input of number_field data as string
- Input of number_field elements as list of 2-tuples, or as string
Ouput handlers RationalHandler, NumberfieldElementHandler, VectorHandler, and MatrixHandler
See example worksheet: https://nbviewer.jupyter.org/github/sebasguts/PyQNormaliz/blob/master/examples/Dodecahedron.ipynb
Upgraded pynormaliz to 1.16 https://github.com/Normaliz/PyNormaliz
Started PyQNormaliz. https://github.com/sebasguts/PyQNormaliz
PyScipOpt
https://github.com/SCIP-Interfaces/PySCIPOpt
Sage devel discussion
Polymake
Upgrade polymake to version 3.4 (current interface breaks) #24905
A list of other Polyhedral Geometry softwares
What are other softwares dealing with polyhedral geometry? Here is a non-exhaustive list.
- Bensolve:
- Maple:
https://www.maplesoft.com/support/help/Maple/view.aspx?path=PolyhedralSets%2fPolyhedralSet (seems to be only rational and implemented in 2015).
http://qhull.org/ (seems old?)
https://www.maplesoft.com/products/maple/new_features/Maple2018/ComputationalGeometry.aspx
https://www.maplesoft.com/support/help/Maple/view.aspx?path=PolyhedralSets
- CGAL:
- A paper:
Jing & Maza https://dl.acm.org/citation.cfm?id=3177798
- Matlab:
- Matematica:
- Visualizations
Polyhedra Viewer by Nat Alison.
- Sage should have such a GUI with all the animations for the different operations, at least for the catalog.