Zadanie na opracowanie programu do optymalizacji cięcia materiałów w Pythonie
Cel
Opracować program do optymalizacji cięcia materiałów, podobny funkcjonalnie do CutOptimizer Pro, ale bez interfejsu graficznego. Program ma przyjmować dane wejściowe z innego programu, wykonywać obliczenia i zwracać:
1. Optymalne rozmieszczenie elementów na polu.
2. Informacje o wypełnieniu pola.
Wymagania funkcjonalne
1. Dane wejściowe:
- Wymiary materiału (szerokość, długość).
- Lista detali do cięcia (szerokość, długość każdego detalu, ilość).
- Minimalna przerwa między detalami oraz uwzględnienie grubości cięcia.
- Typ cięcia: proste lub krzywe (musi być uwzględnione w obliczeniach).
2. Dane wyjściowe:
- Schemat rozmieszczenia detali w formacie tekstowym lub innym wygodnym formacie (na przykład JSON).
- Procent wykorzystania materiału.
3. Algorytm:
- Użyć efektywnego algorytmu cięcia (na przykład "First Fit" lub "Best Fit" dla jednowymiarowego cięcia, lub algorytmy pakowania dla dwuwymiarowego).
- Zapewnić minimalizację odpadów materiałowych.
- Uwzględnić typ cięcia (proste lub krzywe) przy budowie schematu cięcia.
4. Integracja:
- Program powinien być uruchamiany jako funkcja lub moduł, który przyjmuje dane wejściowe w formacie JSON.
- Wynik ma być zwracany w formacie JSON.
Przykład działania programu
1. Dane wejściowe:
```json
{
"material": {
"width": 2000,
"height": 1000
},
"details": [
{"width": 400, "height": 200, "quantity": 10},
{"width": 600, "height": 400, "quantity": 5}
],
"kerf": 5,
"cut_type": "straight"
}
```
2.Oczekiwany wynik:
```json
{
"layout": [
{"x": 0, "y": 0, "width": 400, "height": 200},
{"x": 400, "y": 0, "width": 400, "height": 200},
...
],
"material_usage": 85.5
}
```
Dodatkowe wymagania
- Kod ma być dobrze zorganizowany i skomentowany.
- Algorytm ma być zoptymalizowany do szybkiej pracy na dużych zbiorach danych.
- Używać standardowych bibliotek Pythona lub popularnych zewnętrznych (na przykład numpy, scipy).
Kryteria akceptacji
1. Kod spełnia wszystkie wymagania funkcjonalne.
2. Poprawnie przetwarza różne warianty danych wejściowych.
3. Wyniki obliczeń odpowiadają oczekiwaniom.
Termin wykonania
10 dni.
Cena do uzgodnienia
Plik w Pythonie to przykład działania programu, ale przyjmuje tylko 1 rozmiar zamiast kilku rozmiarów produktów