Metadata-Version: 2.1
Name: cgshop2021-pyutils
Version: 0.0.2
Summary: Utilities for the CG:SHOP 2021 Optimization Competition on Coordinated Motion Planning.
Home-page: https://cgshop.ibr.cs.tu-bs.de/competition/cg-shop-2021/
Author: TU Braunschweig, IBR, Algorithms Group (Phillip Keldenich and Dominik Krupke)
Author-email: keldenich@ibr.cs.tu-bs.de, krupke@ibr.cs.tu-bs.de
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 4 - Beta
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: matplotlib
Requires-Dist: chardet

# CG:SHOP 2021 PyUtils

We provide some utils for you to easily read the instances and write your solutions.

## Reading the instances from the Zip

Best use the instance database. You simply download the .zip and then you can access all instances via

```python
from cgshop2021_pyutils import InstanceDatabase
idb = InstanceDatabase("path/to/zip.zip")
for i in idb:
    print("Instance:", i)
```

## Working with an instance

```python
from cgshop2021_pyutils import Instance

i: Instance #just to enable typing

for r in range(i.number_of_robots):
    print("Robot", i, "starts at", i.start_of(r)," and has to go to ", i.target_of(r))

for o in i.obstacles:
    print(o, "is blocked")

```

## Create a solution

```python
from cgshop2021_pyutils import Solution, SolutionStep, SolutionZipWriter, Direction
from cgshop2021_pyutils import Instance

instance: Instance
solution = Solution(instance) 

# First time step in the solution
step_1 = SolutionStep()
step_1[2]=Direction.NORTH # Robot 2 moves north
step_1[1]=Direction.WEST # Robot 1 moves west
solution.add_step(step_1)

# Second time step in the solution
step_2 = SolutionStep()
step_2[0]=Direction.SOUTH # Robot 0 moves north
step_2[2]=Direction.WEST # Robot 2 moves west
solution.add_step(step_2)

print("Makespan:", solution.makespan)

print("SUM:", solution.total_moves)
```


## Write solutions

You can easily write solutions to an uploadable zip.

```python
from cgshop2021_pyutils import SolutionZipWriter, Solution
s1: Solution
s2: Solution
s3: Solution

with SolutionZipWriter("output.zip") as szw:
    szw.add_solution(s1)
    szw.add_solutions([s1, s2])

```

