=========
TSPLIB 95
.. image:: https://img.shields.io/pypi/v/tsplib95.svg
:target: https://pypi.python.org/pypi/tsplib95
:alt: Available on PyPI
.. image:: https://img.shields.io/travis/rhgrant10/tsplib95.svg
:target: https://travis-ci.org/rhgrant10/tsplib95
:alt: Continuous Integration
.. image:: https://codecov.io/gh/rhgrant10/tsplib95/branch/master/graph/badge.svg
:target: https://codecov.io/gh/rhgrant10/tsplib95
:alt: Code Coverage
.. image:: https://readthedocs.org/projects/tsplib95/badge/?version=latest
:target: https://tsplib95.readthedocs.io/?badge=latest
:alt: Documentation Status
TSPLIB 95 is a library for working with TSPLIB 95 files.
Features
- read and write TSPLIB95 file format like a boss
- easily convert problems into
networkx.Graph
instances - supports all fields in the original standard
- allows completely custom field and problem declarations
It also has a CLI program to print a tabular summary of one or more TSPLIB95
files... no idea why anyone would want that, but there you have it nonetheless.
Credits
See TSPLIB_ for original details, including file format specification, C++ code, and sample problems.
This package was created with Cookiecutter_ and the audreyr/cookiecutter-pypackage
_ project template.
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _audreyr/cookiecutter-pypackage
: https://github.com/audreyr/cookiecutter-pypackage
.. _TSPLIB: http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/
=======
History
0.7.1 (2020-05-08)
- Bugfix for
StandardProblem.get_nodes
ignoring node indices specified in demands
0.7.0 (2020-04-18)
- Refactored the models to unify the
Problem
and Solution
classes into the new StandardProblem
class. - 93% test coverage, including distance functions, parsing functions, and rendering functions.
- You can finally write problems in TSPLIB95 format! Render to text, write to file, or save to filepath.
- Parsing text, reading files, and loading filepaths are all now supported.
- Deprecated the old loading utils.
- Custom problems now supported by allowing you to define your own fields.
- Library exceptions for parsing and rendering.
- Numerous bugfixes for the distance functions (ATT, XRAY*, GEO).
- Improved the CLI to use a pager and proper column tabulation.
- Made some progress modernizing the FORTRAN code for xray problems.
- Added codecoverage metrics and badge.
0.6.1 (2020-01-04)
- Fix bug that caused the parser to ignore the first line of a file
0.6.0 (2019-10-19)
-
Changes to the conversion into a networkx.Graph
:
- Depot, demand, and fixed edge data have been removed from graph metadata.
Depot and demand data is now associated with individual nodes like fixed edge
data was (and still is).
- Add a
normalized
parameter to allow nodes to be renamed as zero-index
integers when obtaining a networkx.Graph
.
-
Depots, demands, node coordinates, and display data fields now default to
empty containers rather than None
.
-
Fixed twine/PyPI warning about long description mime type
0.5.0 (2019-10-02)
- New loaders that take just the text - no file necessary!
- Invalid keywords now result in a
ParsingError
- Update the CLI to catch and gracefully handle
ParsingError
- Fixed a bug when trying to amend an exception with line information
0.4.0 (2019-09-21)
- All expected parsing errors are now raised as
ParsingError
rather than the base Exception
type. - Fix name of distance paramter to distances.geographical. Previously it was "diameter" but was used as a radius. It is now "radius".
- Relax restriction on networkx version (now
~=2.1
) - Add documentation for each problem field
- Other minor documentation changes
- Add offical 3.7 support
- Add missing history entry for v0.3.3
- Remove some dead code
0.3.3 (2019-03-24)
- Fix parsing bug for key-value lines whose value itself contains colons
0.3.2 (2018-10-07)
- Fix bug in
Problem.is_complete
that produced a TypeError
when run - Fix bug in
Problem.is_depictable
that produced a TypeError
when run - Fix bug in
Problem.get_display
that produced an AttributeError
when run - Added some unit tests for the
Problem
class - Added some unit tests for the
parser
module
0.3.1 (2018-10-03)
- Fix bug in
Problem.is_weighted
that caused problems with defined nodes
coords to use the unit distance function
0.3.0 (2018-08-12)
- Added XRAY1 and XRAY2 implementations
- Simplified some of the matrix code
0.2.0 (2018-08-12)
- Implement column-wise matrices
- Add a utiltiy for loading an unknown file
- Fix bug in the ATT distance function
- Update the CLI to use the models
- Document a bunch-o-stuff
- Switch to RTD sphinx theme
- Move most utilties into utils
0.1.0 (2018-08-12)