Mappenstructuur is aanwezig. Ik denk dat het wel handiger is om een "Algorithms" map aan te maken die de functionaliteit van de verschillende algoritmes i.c.m. heuristieken bevat. Hier kan je dus ook de functie "creat_wire_path" (die nu in de "Wire class" zit "verankerd") plaatsen.
Bestanden/mappen zoals .ipynb_checkpoints, .DS_store en pycache wil je niet in je repository hebbenn staan. Zet ze dan ook in je .gitignore
Maak een begin aan de Readme.md (uitleg case). Het lijkt me handiger om dit beetje-bij-beetje te updaten.
Connections is nu een list van tuples en zorgt ervoor dat andere functies lastiger opstellen is (zoals het controleren of een bepaalde ID in de lijst met connections zit). Een graaf kan een uitweg bieden.
Controleren van collisions gaat nog moeizaam. Misschien dat jullie de gemaakte connecties (opeenvolgende coordinaten) globaal kunnen opslaan; dan kan je het desgewenst en gemakkelijker "opzoeken"
Optimal_direction wordt in wire.py als functie aangeroepen, maar dat is het niet ;-)
Fijn dat commentaar en docstrings aanwezig zijn. De docstrings mogen iets uitgebreider, zeker die bij algoritmes. Leg bijvoorbeeld bondig uit hoe het greedy element van de greedy algoritme werkt.