An open API service indexing awesome lists of open source software.

https://github.com/pauldl-rs/spyrrow

Python wrapper of Sparrow, State-of-the-art Nesting for 2D irregular strip packing
https://github.com/pauldl-rs/spyrrow

2d compaction cutting cutting-and-packing heuristic irregular local-search nesting optimization packing strip-packing

Last synced: 3 months ago
JSON representation

Python wrapper of Sparrow, State-of-the-art Nesting for 2D irregular strip packing

Awesome Lists containing this project

README

          

# Spyrrow

`spyrrow` is a Python wrapper on the Rust project [`sparrow`](https://github.com/JeroenGar/sparrow).
It enables to solve 2D [Strip packing problems](https://en.wikipedia.org/wiki/Strip_packing_problem).

The documentation is hosted [here](https://spyrrow.readthedocs.io/).

## Installation

Spyrrow is hosted on [PyPI](https://pypi.org/project/spyrrow/).

You can install with the package manager of your choice, using the PyPI package index.

For example, with `pip`, the default Python package:
```bash
pip install spyrrow
```

## Examples
```python
import spyrrow

rectangle1 = spyrrow.Item(
"rectangle", [(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)], demand=4, allowed_orientations=[0]
)
triangle1 = spyrrow.Item(
"triangle",
[(0, 0), (1, 0), (1, 1), (0, 0)],
demand=6,
allowed_orientations=[0, 90, 180, -90],
)

instance = spyrrow.StripPackingInstance(
"test", strip_height=2.001, items=[rectangle1, triangle1]
)
config = spyrrow.StripPackingConfig(early_termination=False,total_computation_time=60,num_wokers=3,seed=0)
sol = instance.solve(config)
print(sol.width) # 4.0 +/- 5%
print(sol.density)
print("\n")
for pi in sol.placed_items:
print(pi.id)
print(pi.rotation)
print(pi.translation)
print("\n")
```

## Contributing

Spyrrow is open to contributions.
The first target should be to reach Python open sources packages standards and practices.
Second, a easier integration with the package `shapely` is envsionned.

Please use GitHub issues to request features.
They will be considered relative to what is already implemented in the parent library `sparrow`.
If necessary, they can be forwarded to it.