Zarządzanie ładunkami w przestrzeni ładunkowej
Wiele ładunków w przestrzeni ładunkowej
Poniżej został podany przykład odnośnie zapytania dla umieszczenia różnorodnych ładunków w przestrzeni ładunkowej
Zapytanie:
"loads": [
{
"quantity": 10,
"name": "load 1",
"length": 120,
"width": 80,
"height": 100,
"weight": 100
},
{
"quantity": 5,
"name": "load 2",
"length": 100,
"width": 50,
"height": 100,
"weight": 500
},
{
"quantity": 5,
"name": "load 3",
"length": 100,
"width": 50,
"height": 100,
"weight": 500
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "truck 2",
"parts": [
{
"length": 1300,
"width": 200,
"height": 200,
"limit": 24000
}
]
}
],
"options": {
}
}
Rezultat

Różne typy ładunków
W Goodloading dostępne są 3 typy ładunków, opisane parametrem “loadType”:
- 0 – ładunek prostopadłościenny
- 1 – beczka
- 2 – rura
Dla wymienionych typów ładunków, obowiązują:ściśle określone zasady mapowania parametrów ładunków podanych w Request na parametry w Response, które są skorelowane ze sposobem ułożenia ładunku w przestrzeni.
Układanie ładunków w przestrzeni ładunkowej, tak jak to było już powiedziane we wcześniejszym rozdziale, zawsze odnosi się do układu współrzędnych: x,y,z, którego początek {x=0, y=0, z=0}, zawsze znajduje się w lewym dolnym rogu przestrzeni patrząc od jej tyłu.

Algorytm, optymalizując załadunek, może obracac ładunki, o ile jest to dozwolone. Za obracanie ładunków odpowiadają parametry:
- allowToRotate – domyślne ustawienie “true” – pozwala na obracanie ładunków tylko przy podstawie, czyli dotyczy tylko prostopadłościanów i rur
- rotateFreely – domyślne ustawienie “false” – pozwala na dowolne obracanie wyłącznie prostopadłościanów
Odnośnie parametrów w Response, obowiązuje zawsze zasada, że poszczególne osie odpowiadają następującym parametrom ładunku:
- x – “width” – szerokość,
- y – “height” – wysokość,
- z – “length” – długość,
Powyższe typy parametrów, w Response dotyczą wszystkich typów ładunków, ponieważ nawet dla rur i beczek, algorytm przekształca zawsze ich parametry wejściowe na “width”, “height” i “length”, jako parametry wyjściowe.
W kolejnych podrozdziałach, przedstawiono szczegółowe opisy wszystkich typów ładunków.
Ładunek prostopadłościenny
Typ ładunku “loadType”: 0.
Ładunek prostopadłościenny jest określony w Request przez 3 parametry związane z przestrzenią:
- “width”,
- “height”,
- “length”
Na podstawie tych parametrów algorytm nadaje ładunkowi parametry wyjściowe w Response, kierując się własnymi zasadami układania. Przykładowo, przy załadunku od tyłu ładunki są układane od lewego dolnego rogu przy kabinie kierowcy, a kolejne rzędy są wypełniane od strony kabiny. Algorytm uwzględnia przy tym parametry zezwalające na obracanie ładunków. W poniższym przykładzie w Response algorytm zamienił wartości “width” i “length”, ponieważ miał domyślne pozwolenie na obracanie ładunku przy podstawie.
W poniższym przykładzie parametry dotyczące przestrzeni zostały wyróżnione kolorem w Request oraz w Response.
Request
{
"loads": [
{
"quantity": 1,
"name": "load 1",
"length": 100,
"width": 50,
"height": 200,
"weight": 500,
"loadType": 0
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Bus 8 EP",
"parts": [
{
"length": 420,
"width": 220,
"height": 220,
"limit": 1500
}
]
}
],
"options": {
}
}
Response
{
"loadingSpaces": [
{
"id": 1,
"name": "Bus 8 EP",
"parts": [
{
"height": 220,
"length": 420,
"width": 220,
"limit": 1500,
"loads": [
{
"id": 1,
"allowToRotate": true,
"stacking": true,
"name": "load 1",
"loadType": 0,
"priority": 0,
"quantity": 1,
"width": 100,
"length": 50,
"height": 200,
"weight": 500,
"diameter": 0,
"origin": null,
"destination": null,
"pctSupport": 100,
"alongFloor": false,
"boxesBelowAllowed": [],
"color": 6989903,
"placement": [
{
"height": 200,
"length": 50,
"width": 100,
"diameter": 0,
"loadsPerAxis": {
"x": 1,
"y": 1,
"z": 1
},
"position": {
"x": 0,
"y": 0,
"z": 0
},
"cubeId": 0
}
]
}
],
"loadingSide": "back",
"summary": {
"freeLdm": 370,
"occupiedLdm": 50,
"freeSurface": 8740000,
"occupiedSurface": 500000,
"freeVolume": 193280000000,
"occupiedVolume": 10000000000,
"percentLdmUsd": 11.904761904761903,
"percentVolumeUsd": 4.919323101141283,
"totalLoadsWeight": 500
},
"axis": []
}
],
"type": "vehicle"
}
],
"notFittedLoads": [],
"options": {
"allowOverweight": false,
"unit": "cm",
"keepLoadsTogether": false,
"newAlgorithm": true,
"arrangeOptimally": false,
"loadingOrder": "default",
"keepGroupsInGivenSpaces": false,
"isMagnetOn": false,
"multiStops": false,
"includeSavedLoadingSpaces": false,
"additionOrder": true,
"userOrder": false,
"volumeOrder": false,
"weightOrder": false
},
"_links": [
{
"rel": "preview",
"href": "https://goodloading-app.service.aws-eu-west-1.sdp.rc.goodloading.com/session?id=afeb3044-6b6a-41a7-83b3-999a45c299f8&pref=opt-names-opened"
}
]
}

Beczka
Typ ładunku “loadType”: 1
Beczka określona jest w Request przez 2 parametry, związane z przestrzenią:
- “diameter”
- “height”
Na podstawie tych parametrów, algorytm nadaje ładunkowi parametry wyjściowe w Response, przekształcając je na parametry:
- “width”,
- “height”,
- “length”
“width” i “length” reprezentują kwadratowy obszar ograniczający okrągłą podstawę beczki.
Beczki są zawsze ustawiane pionowo i nie podlegają rotacji.
W poniższym przykładzie w Response algorytm przypisał parametrom “width” i “length” tę samą wartość pochodzącą z parametru “diameter”.
Parametry dotyczące przestrzeni zostały wyróżnione kolorem w Request oraz w Response.
Request
{
"loads": [
{
"quantity": 1,
"name": "load 1",
"height": 150,
"diameter": 100,
"weight": 50,
"loadType": 1
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Bus 8 EP",
"parts": [
{
"length": 420,
"width": 220,
"height": 220,
"limit": 1500
}
]
}
],
"options": {
}
}
Response
{
"loadingSpaces": [
{
"id": 1,
"name": "Bus 8 EP",
"parts": [
{
"height": 220,
"length": 420,
"width": 220,
"limit": 1500,
"loads": [
{
"id": 1,
"allowToRotate": true,
"stacking": true,
"name": "load 1",
"loadType": 1,
"priority": 0,
"quantity": 1,
"width": 100,
"length": 100,
"height": 150,
"weight": 50,
"diameter": 100,
"origin": null,
"destination": null,
"pctSupport": 100,
"alongFloor": false,
"boxesBelowAllowed": [],
"color": 6989903,
"placement": [
{
"height": 150,
"length": 100,
"width": 100,
"diameter": 100,
"loadsPerAxis": {
"x": 1,
"y": 1,
"z": 1
},
"position": {
"x": 0,
"y": 0,
"z": 0
},
"cubeId": 0
}
]
}
],
"loadingSide": "back",
"summary": {
"freeLdm": 320,
"occupiedLdm": 100,
"freeSurface": 8240000,
"occupiedSurface": 1000000,
"freeVolume": 188280000000,
"occupiedVolume": 15000000000,
"percentLdmUsd": 23.809523809523807,
"percentVolumeUsd": 7.378984651711924,
"totalLoadsWeight": 50
},
"axis": []
}
],
"type": "vehicle"
}
],
"notFittedLoads": [],
"options": {
"allowOverweight": false,
"unit": "cm",
"keepLoadsTogether": false,
"newAlgorithm": true,
"arrangeOptimally": false,
"loadingOrder": "default",
"keepGroupsInGivenSpaces": false,
"isMagnetOn": false,
"multiStops": false,
"includeSavedLoadingSpaces": false,
"additionOrder": true,
"userOrder": false,
"volumeOrder": false,
"weightOrder": false
},
"_links": [
{
"rel": "preview",
"href": "https://goodloading-app.service.aws-eu-west-1.sdp.rc.goodloading.com/session?id=9af9b644-027f-422e-9041-04cedc518b44&pref=opt-names-opened"
}
]
}

Rura
Typ ładunku “loadType”: 2
Rura określona jest w Request przez 2 parametry, związane z przestrzenią:
- “diameter”
- “length”
Na podstawie tych parametrów, algorytm nadaje ładunkowi parametry wyjściowe w Response, przekształcając je na parametry:
- “width”,
- “height”,
- “length”
Rur nie można ustawiać pionowo, można je tylko ustawiać wzdłuż długości lub szerokości przestrzeni ładunkowej. W Response rozróżnienie, czy rura ułożona jest wzdłuż szerokości czy długości pojazdu, zależy od ustawień parametrów: “width” i “length”. Parametr “height” – zawsze przyjmuje wartość zgodną z “diameter”.
Kierunek ułożenia rury:
- wzdłuż szerokości przestrzeni – “length” = 0, “width” >0
- wzdłuż długości przestrzeni – “length” >0, “width” = 0
W poniższych przykładach, parametry dotyczące przestrzeni zostały pokolorowane w Request oraz w Response.
Przykład 1
Rura ułożona wzdłuż szerokości pojazdu
Request
{
"loads": [
{
"quantity": 1,
"name": "load 1",
"length": 150,
"diameter": 100,
"weight": 100,
"loadType": 2
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Bus 8 EP",
"parts": [
{
"length": 420,
"width": 220,
"height": 220,
"limit": 1500
}
]
}
],
"options": {
}
}
Response
{
"loadingSpaces": [
{
"id": 1,
"name": "Bus 8 EP",
"parts": [
{
"height": 220,
"length": 420,
"width": 220,
"limit": 1500,
"loads": [
{
"id": 1,
"allowToRotate": true,
"stacking": true,
"name": "load 1",
"loadType": 2,
"priority": 0,
"quantity": 1,
"width": 150,
"length": 0,
"height": 100,
"weight": 100,
"diameter": 100,
"origin": null,
"destination": null,
"pctSupport": 100,
"alongFloor": false,
"boxesBelowAllowed": [],
"color": 6989903,
"placement": [
{
"height": 100,
"length": 0,
"width": 150,
"diameter": 100,
"loadsPerAxis": {
"x": 1,
"y": 1,
"z": 1
},
"position": {
"x": 0,
"y": 0,
"z": 0
},
"cubeId": 0
}
]
}
],
"loadingSide": "back",
"summary": {
"freeLdm": 320,
"occupiedLdm": 100,
"freeSurface": 9240000,
"occupiedSurface": 0,
"freeVolume": 203280000000,
"occupiedVolume": 0,
"percentLdmUsd": 23.809523809523807,
"percentVolumeUsd": 0,
"totalLoadsWeight": 100
},
"axis": []
}
],
"type": "vehicle"
}
],
"notFittedLoads": [],
"options": {
"allowOverweight": false,
"unit": "cm",
"keepLoadsTogether": false,
"newAlgorithm": true,
"arrangeOptimally": false,
"loadingOrder": "default",
"keepGroupsInGivenSpaces": false,
"isMagnetOn": false,
"multiStops": false,
"includeSavedLoadingSpaces": false,
"additionOrder": true,
"userOrder": false,
"volumeOrder": false,
"weightOrder": false
},
"_links": [
{
"rel": "preview",
"href": "https://goodloading-app.service.aws-eu-west-1.sdp.rc.goodloading.com/session?id=fe4ad9b3-2904-4986-9524-f3363a24959f&pref=opt-names-opened"
}
]
}

Przykład 2
Rura ułożona wzdłuż długości pojazdu
Request
{
"loads": [
{
"quantity": 1,
"name": "load 1",
"length": 150,
"diameter": 100,
"weight": 100,
"loadType": 2,
"allowToRotate": false
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Bus 8 EP",
"parts": [
{
"length": 420,
"width": 220,
"height": 220,
"limit": 1500
}
]
}
],
"options": {
}
}
Response
{
"loadingSpaces": [
{
"id": 1,
"name": "Bus 8 EP",
"parts": [
{
"height": 220,
"length": 420,
"width": 220,
"limit": 1500,
"loads": [
{
"id": 1,
"allowToRotate": false,
"stacking": true,
"name": "load 1",
"loadType": 2,
"priority": 0,
"quantity": 1,
"width": 0,
"length": 150,
"height": 100,
"weight": 100,
"diameter": 100,
"origin": null,
"destination": null,
"pctSupport": 100,
"alongFloor": false,
"boxesBelowAllowed": [],
"color": 6989903,
"placement": [
{
"height": 100,
"length": 150,
"width": 0,
"diameter": 100,
"loadsPerAxis": {
"x": 1,
"y": 1,
"z": 1
},
"position": {
"x": 0,
"y": 0,
"z": 0
},
"cubeId": 0
}
]
}
],
"loadingSide": "back",
"summary": {
"freeLdm": 270,
"occupiedLdm": 150,
"freeSurface": 9240000,
"occupiedSurface": 0,
"freeVolume": 203280000000,
"occupiedVolume": 0,
"percentLdmUsd": 35.714285714285715,
"percentVolumeUsd": 0,
"totalLoadsWeight": 100
},
"axis": []
}
],
"type": "vehicle"
}
],
"notFittedLoads": [],
"options": {
"allowOverweight": false,
"unit": "cm",
"keepLoadsTogether": false,
"newAlgorithm": true,
"arrangeOptimally": false,
"loadingOrder": "default",
"keepGroupsInGivenSpaces": false,
"isMagnetOn": false,
"multiStops": false,
"includeSavedLoadingSpaces": false,
"additionOrder": true,
"userOrder": false,
"volumeOrder": false,
"weightOrder": false
},
"_links": [
{
"rel": "preview",
"href": "https://goodloading-app.service.aws-eu-west-1.sdp.rc.goodloading.com/session?id=250eefbf-9d90-4545-9d14-76898b1ff3b0&pref=opt-names-opened"
}
]
}

Kolejność układania ładunków w przestrzeni ładunkowej
Kolejność domyślna – wg kolejności definiowania ładunków
Układanie z uwzględnieniem kolejności definiowania ładunków do wybranej przestrzeni ładunkowej.
W Przykładzie 1 i Przykładzie 2, zostały zdefiniowane te same ładunki, różniące się tylko kolejnością definiowania. Zmieniając kolejność definiowania ładunków w Request, zmienia się także ich kolejność ułożenia na wizualizacji – Przykład 2.
Przykład 1
Zdefiniowano ładunki w następującej kolejności: “load 1”, “load 2”, “load 3” i pokazano wizualizację ułożenia tych ładunków
Zapytanie
{
"loads": [
{
"quantity": 16,
"name": "load 1",
"color": "#71A34E",
"length": 120,
"width": 80,
"height": 100,
"weight": 50
},
{
"quantity": 18,
"name": "load 2",
"color": "#5B9BD5",
"length": 80,
"width": 60,
"height": 100,
"weight": 200
},
{
"quantity": 24,
"name": "load 3",
"color": "#FFC000",
"length": 100,
"width": 50,
"height": 100,
"weight": 150
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

Przykład 2
Została zmieniona kolejność definiowania ładunków w stosunku do Przykład 1. W Przykład 2 ładunki zostały zdefiniowane w kolejności: “load 2”, “load 3”, “load 1”.
Na wizualizacji w Przykład 2 pokazano w jaki sposób zmieniło się ułożenie ładunków w porównaniu z wizualizacją w Przykład 1.
Zapytanie
{
"loads": [
{
"quantity": 18,
"name": "load 2",
"color": "#5B9BD5",
"length": 80,
"width": 60,
"height": 100,
"weight": 200
},
{
"quantity": 24,
"name": "load 3",
"color": "#FFC000",
"length": 100,
"width": 50,
"height": 100,
"weight": 150
},
{
"quantity": 16,
"name": "load 1",
"color": "#71A34E",
"length": 120,
"width": 80,
"height": 100,
"weight": 50
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

Kolejność wg wagi ładunków
Włączenie tej opcji sprawi, że w pierwszej kolejności układane będą ładunki o największej wadze.
"options": {
"loadingOrder": "weight"
}
Przykład
Zapytanie
{
"loads": [
{
"quantity": 16,
"name": "load 1",
"color": "#71A34E",
"length": 120,
"width": 80,
"height": 100,
"weight": 50
},
{
"quantity": 18,
"name": "load 2",
"color": "#5B9BD5",
"length": 80,
"width": 60,
"height": 100,
"weight": 200
},
{
"quantity": 24,
"name": "load 3",
"color": "#FFC000",
"length": 100,
"width": 50,
"height": 100,
"weight": 150
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
"loadingOrder": "weight"
}
}
Rezultat

Kolejność wg objętości ładunków
Włączenie tej opcji sprawi, że w pierwszej kolejności układane będą ładunki o największej objętości.
"options": {
"loadingOrder": "volume"
}
Przykład
Zapytanie
{
"loads": [
{
"quantity": 16,
"name": "load 1",
"color": "#71A34E",
"length": 120,
"width": 80,
"height": 100,
"weight": 50
},
{
"quantity": 18,
"name": "load 2",
"color": "#5B9BD5",
"length": 80,
"width": 60,
"height": 100,
"weight": 200
},
{
"quantity": 24,
"name": "load 3",
"color": "#FFC000",
"length": 100,
"width": 50,
"height": 100,
"weight": 150
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
"loadingOrder": "volume"
}
}
Rezultat

Kolejność wg priorytetów ładunków
Układaniem ładunków w przestrzeni ładunkowej, możemy zarządzać przez nadawanie im priorytetów:
- do każdego ładunku należy przypisać “priority” – przyjmuje wartości liczbowe 1..n, gdzie 1- oznacza najwyższy priorytet,
- w opcjach należy ustawić:
"options": {
"loadingOrder": "priority"
}
Przykład
Zapytanie
{
"loads": [
{
"quantity": 16,
"name": "load 1",
"color": "#71A34E",
"length": 120,
"width": 80,
"height": 100,
"weight": 50,
"priority": 3
},
{
"quantity": 18,
"name": "load 2",
"color": "#5B9BD5",
"length": 80,
"width": 60,
"height": 100,
"weight": 200,
"priority": 1
},
{
"quantity": 24,
"name": "load 3",
"color": "#FFC000",
"length": 100,
"width": 50,
"height": 100,
"weight": 150,
"priority": 2
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
"loadingOrder": "priority"
}
}
Rezultat

Układanie optymalne
Włączenie opcji „układaj optymalnie” spowoduje, że algorytm będzie szukał ułożenia pozostawiającego jak najwięcej wolnej przestrzeni, bez względu na kolejność dodawania ładunków i inne wymienione wcześniej parametry.
"options": {
"arrangeOptimally": true
}
Przykład
Optymalizacja w 1 przestrzeni ładunkowej
Zapytanie
{
"loads": [
{
"quantity": 16,
"name": "load 1",
"color": "#71A34E",
"length": 120,
"width": 80,
"height": 100,
"weight": 50
},
{
"quantity": 18,
"name": "load 2",
"color": "#5B9BD5",
"length": 80,
"width": 60,
"height": 100,
"weight": 200
},
{
"quantity": 24,
"name": "load 3",
"color": "#FFC000",
"length": 100,
"width": 50,
"height": 100,
"weight": 150
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
"arrangeOptimally": true
}
}
Rezultat

Układanie optymalne w wielu przestrzeniach ładunkowych
Zapewnia optymalizację dla wszystkich dodanych ładunków i przestrzeni ładunkowych.
Przykład 1 – bez optymalizacji (porównawczy)
Układanie wielu ładunków w wielu przestrzeniach ładunkowych, wg kolejności dodawania ładunków, bez optymalizacji.
"options": {
"arrangeOptimally": false
}
Zapytanie
{
"loads": [
{
"quantity": 16,
"name": "load 1",
"color": "#71A34E",
"length": 120,
"width": 80,
"height": 100,
"weight": 50
},
{
"quantity": 16,
"name": "load 2",
"color": "#5B9BD5",
"length": 80,
"width": 60,
"height": 100,
"weight": 60
},
{
"quantity": 24,
"name": "load 3",
"color": "#FFC000",
"length": 100,
"width": 50,
"height": 100,
"weight": 30
}
],
"loadingSpaces": [
{
"quantity": 2,
"name": "Bus 8 EP",
"parts": [
{
"length": 420,
"width": 220,
"height": 220,
"limit": 1500
}
]
}
],
"options": {
"arrangeOptimally": false
}
}
Rezultat
Bus 8 EP – nr 1

Bus 8 EP – nr 2

Przykład 2 – z włączoną optymalizacją
Układanie wielu ładunków w wielu przestrzeniach ładunkowych.
Wykorzystano te same ładunki i przestrzenie co w przykładzie 1 – układanie optymalne.
"options": {
"arrangeOptimally": true
}
Zapytanie
{
"loads": [
{
"quantity": 16,
"name": "load 1",
"color": "#71A34E",
"length": 120,
"width": 80,
"height": 100,
"weight": 50
},
{
"quantity": 16,
"name": "load 2",
"color": "#5B9BD5",
"length": 80,
"width": 60,
"height": 100,
"weight": 60
},
{
"quantity": 24,
"name": "load 3",
"color": "#FFC000",
"length": 100,
"width": 50,
"height": 100,
"weight": 30
}
],
"loadingSpaces": [
{
"quantity": 2,
"name": "Bus 8 EP",
"parts": [
{
"length": 420,
"width": 220,
"height": 220,
"limit": 1500
}
]
}
],
"options": {
"arrangeOptimally": true
}
}
Rezultat
Bus 8 EP – nr 1

Bus 8 EP – nr 2

Przykład 3 – układanie optymalne przy priorytetyzacji ładunków
Układanie wielu ładunków w wielu przestrzeniach ładunkowych.
Wykorzystano te same ładunki i przestrzenie co w przykładach 1 i 2 – układanie optymalne przy priorytetyzacji ładunków.
"options": {
"loadingOrder": "priority",
"arrangeOptimally": true
}
Zapytanie
{
"loads": [
{
"quantity": 16,
"name": "load 1",
"color": "#71A34E",
"length": 120,
"width": 80,
"height": 100,
"weight": 50,
"priority": 3
},
{
"quantity": 16,
"name": "load 2",
"color": "#5B9BD5",
"length": 80,
"width": 60,
"height": 100,
"weight": 60,
"priority": 1
},
{
"quantity": 24,
"name": "load 3",
"color": "#FFC000",
"length": 100,
"width": 50,
"height": 100,
"weight": 30,
"priority": 2
}
],
"loadingSpaces": [
{
"quantity": 2,
"name": "Bus 8 EP",
"parts": [
{
"length": 420,
"width": 220,
"height": 220,
"limit": 1500
}
]
}
],
"options": {
"loadingOrder": "priority",
"arrangeOptimally": true
}
}
Rezultat
Bus 8 EP – nr 1

Bus 8 EP – nr 2

Bariery
Funkcjonalność ustawiania barrier, pozwala na ustawianie ładunków wg zamówień i oddzielanie ich barierami.
Zasady układania ładunków przedzielonych barierami:
- układanie ładunków rozpoczyna się od kabiny pojazdu, od strony pasażera – odwrotnie niż w pozostałych algorytmach aplikacji;
- ładunki nie sa obracane, tzn., że układanie ładunków odbywa się długością ładunku wzdłuż długości pojazdu (długość ładunku równolegle do długości pojazdu);
- po zapełnieniu całej kolumny (na całą szerokość pojazdu) kolumna zostaje oddzielona barierą i następnie rozpoczyna się układanie kolejnej kolumny;
- ładunki dosuwane są do prawej strony, czyli do pierwszej bariery, a nie do kabiny pojazdu
- bariery nie oddzielają poszczególnych zamówień całkowicie, tzn. w jednej kolumnie mogą znajdować się różne zamówienia;
- natomiast ładunki nie mieszają się w taki sposób że ładunek z zamówienia numer 1 oddzielone zamówieniem numer 2 znajdują się jeszcze w zamówieniu numer 3.

Ustawienia obowiązkowe dla zapytań dotyczących ładunków przedzielonych barierami:
- ”order” – każdy ładunek musi mieć swój identyfikator zamówienia
- “barrier” – w przestrzeni ładunkowej muszą być zdefiniowane:
- „thickness” – grubość bariery
- „height” – wysokość bariery
- „loadingOrder”: „barrier” – ustawiona opcja algorytmu układania wg zamówień oddzielonych barierami
Przykład 1
"loads": [
{
"quantity": 20,
"name": "load 2",
"length": 50,
"width": 20,
"height": 50,
"weight": 400,
"priority": 3,
"order": 1
},
{
"quantity": 20,
"name": "load 3",
"length": 100,
"width": 50,
"height": 100,
"weight": 500,
"priority": 1,
"order": 2
},
{
"quantity": 18,
"name": "load 1",
"length": 120,
"width": 80,
"height": 100,
"weight": 100,
"priority": 2,
"order": 3
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "truck 2",
"parts": [
{
"length": 800,
"width": 200,
"height": 200,
"limit": 24000,
"barrier":
{"thickness": 10,
"height":200 }
}
]
}
],
"options": {
"loadingOrder": "barrier"
}
}

Przykład 2
Zapytanie
{
"loadingSpaces": [
{
"quantity": 1,
"name": "TEST LS",
"type": "vehicle",
"parts": [
{
"length": 380,
"width": 210,
"height": 310,
"limit": 800,
"barrier":
{ "thickness": 1, "height": 150
}
}
],
"stops": []
}
],
"loads": [
{
"id": 1,
"quantity": 3,
"name": "Item 1",
"length": 110,
"width": 23,
"height": 90,
"weight": 10,
"order": 3,
"stacking": false,
"rotateFreely": false
},
{
"id": 10,
"quantity": 3,
"name": "Item 2",
"length": 110,
"width": 30,
"height": 90,
"weight": 10,
"order": 2,
"stacking": false,
"rotateFreely": false
},
{
"id": 11,
"quantity": 3,
"name": "Item 3",
"length": 110,
"width": 22,
"height": 90,
"weight": 10,
"order": 1,
"stacking": false,
"rotateFreely": false
},
{
"id": 12,
"quantity": 4,
"name": "Item 4",
"length": 110,
"width": 15,
"height": 90,
"weight": 10,
"order": 1,
"stacking": false,
"rotateFreely": false
},
{
"id": 2,
"quantity": 2,
"name": "Item 5",
"length": 35,
"width": 22,
"height": 50,
"weight": 10,
"order": 1,
"stacking": false,
"rotateFreely": false
},
{
"id": 3,
"quantity": 1,
"name": "Item 6",
"length": 70,
"width": 60,
"height": 50,
"weight": 10,
"order": 2,
"stacking": false,
"rotateFreely": false
},
{
"id": 4,
"quantity": 2,
"name": "Item 7",
"length": 35,
"width": 22,
"height": 50,
"weight": 10,
"order": 2,
"stacking": false,
"rotateFreely": false
},
{
"id": 5,
"quantity": 2,
"name": "Item 8",
"length": 35,
"width": 22,
"height": 50,
"weight": 10,
"order": 3,
"stacking": false,
"rotateFreely": false
},
{
"id": 6,
"quantity": 2,
"name": "Item 9",
"length": 95,
"width": 22,
"height": 50,
"weight": 10,
"order": 2,
"stacking": false,
"rotateFreely": false
},
{
"id": 7,
"quantity": 2,
"name": "Item 10",
"length": 95,
"width": 22,
"height": 50,
"weight": 10,
"order": 3,
"stacking": false,
"rotateFreely": false
},
{
"id": 20,
"quantity": 8,
"name": "Item 11",
"length": 45,
"width": 15,
"height": 45,
"weight": 100,
"order": 4,
"stacking": false,
"rotateFreely": false
}
],
"options": {
"allowOverweight": false,
"unit": "cm",
"keepLoadsTogether": false,
"newAlgorithm": true,
"multiStops": false,
"loadingOrder": "barrier",
"includeSavedLoadingSpaces": false,
"arrangeOptimally": true
}
}
Rezultat

Piętrowanie (Stacking)
Zasady piętrowania
Algorytm pozwala na piętrowanie ładunków w przestrzeni ładunkowej. Poniżej opisano parametry, dzięki którym użytkownik może wskazać preferowane zasady układania ładunków. Jeżeli w opcjach algorytmu nie ustawiono układania według priorytetów, ładunki są układane w kolejności podawania w zapytaniu.
1. Stacking – piętrowanie
dla ładunku, musi być ustawiony na true (wartość domyślna), aby możliwe było piętrowanie ładunków, na ładunku, dla którego ustawiony jest parametr. Jeżeli inne parametry nie mówią inaczej, to na danym ładunku można stawiać wszystkie rodzaje ładunków mieszczących się w danej przestrzeni ładunkowej, przy czym układanie rozpoczyna się od kabiny kierowcy
Parametr ten może również przyjmować wartości numeryczne , np. 3. Wartość numeryczna mówi o tym, że piętrowanie jest dozwolone oraz ile pięter ładunków mozna ustawiac na danym ładunku. Podana wartość, oznacza liczbę wszystkich pięter dozwolonych dla danego ładunku, łącznie z warstwą najniższą. Przez dany ładunek, rozumiemy np. 4 piętra dla grupy tego samego ładunku. Piętra nie będą się układać do wskazanej liczby różnych ładunków.
Przykłady:
- “Piętruj”: true dla wszystkich ładunków
- “Piętruj”: false dla wszystkich ładunków
- “Piętruj”: “true” i “false”
- Liczba pięter danego ładunku
2. ”alongFloor” – układanie wzdłuż podłogi:
- ustawienie tego parametru na true, powoduje, że podczas piętrowania, ładunki są układane najpierw wzdłuż podłogi, a dopiero później piętrowane
- ustawienie na false (wartość domyślna), powoduje, że są od razu piętrowane przy kabinie kierowcy.
Przykłady
- Mała liczba ładunków – ładunki prostopadłościenne
- Mała liczba ładunków – wszystkie typy ładunków
- Duża liczba ładunków wykorzystująca dostępną powierzchnię podłogi – ładunki prostopadłościenne – przy domyślnych ustawieniach algorytmu ładunki są układane zgodnie z kolejnością ich zdefiniowania w zapytaniu. Przy ustawieniu parametru “alongFloor”: true piętrowane mogą być tylko ładunki ustawione jako ostatnie, przy brzegu, ponieważ dostęp do ładunków przy kabinie kierowcy jest ograniczony.
- Duża liczba ładunków, wyczerpująca układanie przy podłodze – wszystkie typy ładunków
- Różne wartości “alongFloor” i “stacking” dla różnych ładunków prostopadłościennych
- Różne wartości “alongFloor” i “stacking” dla różnych typów ładunków
3. „maxWeightOnTop” – waga pięter, czyli maksymalny ciężar, jaki można umieścić nad ładunkiem – na danym ładunku mogą stać inne ładunki, o ile ich łączna waga nie zostanie przekroczona
Przykłady – waga pięter vs. liczba pięter
5. “boxesBelowAllowed” – “wskazanie ładunków poniżej” , tablica id ładunków, które można umieścić pod danym ładunkiem
Przykłady
- Bez określania ładunków, na których można umieścić wskazany
- Z określeniem ładunków, na których można umieszczać wskazany
6. “pctSupport” – stopień podparcia – pozwala na piętrowanie większych ładunków na mniejszych
- domyślnie stopień podparcia wynosi 100% – wtedy piętrowane są ładunki tylko o tej samej powierzchni podparcia ładunku górnego w stosunku do dolnego,
- jeżeli określimy stopień podparcia mniejszy niż 100%, np. 30%, oznacza to że można stawiać ładunek większy na ładunku mniejszym. Stopień podparcia ustawia się dla ładunku górnego, przy ustawieniu “pctSupport” : 30, powierzchnia podparcia/ styku ładunków musi być nie mniejsza niż 30% naszego ładunku, dla którego dajemy możliwość stawiania na ładunku mniejszym
Przykłady
Przykłady piętrowania
“Piętruj”: true dla wszystkich ładunków
Piętruje wszystkie ładunki najbardziej optymalnie, również jeden rodzaj ładunku na innym
Zapytanie
{
"loads": [
{
"quantity": 16,
"name": "load 1",
"color": "#71A34E",
"length": 120,
"width": 80,
"height": 100,
"weight": 50,
"stacking": true
},
{
"quantity": 18,
"name": "load 2",
"color": "#5B9BD5",
"length": 80,
"width": 60,
"height": 100,
"weight": 60,
"stacking": true
},
{
"quantity": 24,
"name": "load 3",
"color": "#FFC000",
"length": 100,
"width": 50,
"height": 100,
"weight": 80,
"stacking": true
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

“Piętruj”: false dla wszystkich ładunków
Zapytanie
{
"loads": [
{
"quantity": 16,
"name": "load 1",
"color": "#71A34E",
"length": 120,
"width": 80,
"height": 100,
"weight": 50,
"stacking": false
},
{
"quantity": 18,
"name": "load 2",
"color": "#5B9BD5",
"length": 80,
"width": 60,
"height": 100,
"weight": 60,
"stacking": false
},
{
"quantity": 24,
"name": "load 3",
"color": "#FFC000",
"length": 100,
"width": 50,
"height": 100,
"weight": 80,
"stacking": false
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

“Piętruj”: “true” i “false”
Przykład 1
Zapytanie
{
"loads": [
{
"quantity": 16,
"name": "load 1",
"color": "#71A34E",
"length": 120,
"width": 80,
"height": 100,
"weight": 50,
"stacking": true
},
{
"quantity": 18,
"name": "load 2",
"color": "#5B9BD5",
"length": 80,
"width": 60,
"height": 100,
"weight": 60,
"stacking": false
},
{
"quantity": 24,
"name": "load 3",
"color": "#FFC000",
"length": 100,
"width": 50,
"height": 100,
"weight": 80,
"stacking": true
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

Przykład 2
Zapytanie
{
"loads": [
{
"quantity": 16,
"name": "load 1",
"color": "#71A34E",
"length": 120,
"width": 80,
"height": 100,
"weight": 50,
"stacking": false
},
{
"quantity": 18,
"name": "load 2",
"color": "#5B9BD5",
"length": 80,
"width": 60,
"height": 100,
"weight": 60,
"stacking": true
},
{
"quantity": 24,
"name": "load 3",
"color": "#FFC000",
"length": 100,
"width": 50,
"height": 100,
"weight": 80,
"stacking": true
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

Liczba pięter danego ładunku
“Piętruj” – bez określania liczby pięter
Zapytanie
{
"loads": [
{
"quantity": 20,
"name": "load 1",
"length": 120,
"width": 80,
"height": 40,
"weight": 50,
"stacking": true,
"priority": 3
},
{
"quantity": 20,
"name": "load 2",
"length": 100,
"width": 70,
"height": 40,
"weight": 80,
"stacking": true,
"priority": 2
},
{
"quantity": 20,
"name": "load 3",
"length": 100,
"width": 70,
"height": 40,
"weight": 100,
"stacking": true,
"priority": 1
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
"loadingOrder": "priority"
}
}
Rezultat

“Piętruj” – różna liczba pięter dla poszczególnych ładunków
Zapytanie
{
"loads": [
{
"quantity": 20,
"name": "load 1",
"length": 120,
"width": 80,
"height": 40,
"weight": 50,
"stacking": 3,
"priority": 3
},
{
"quantity": 20,
"name": "load 2",
"length": 100,
"width": 70,
"height": 40,
"weight": 80,
"stacking": 4,
"priority": 2
},
{
"quantity": 20,
"name": "load 3",
"length": 100,
"width": 70,
"height": 40,
"weight": 100,
"stacking": 5,
"priority": 1
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
"loadingOrder": "priority"
}
}
Rezultat

Waga pięter – „maxWeightOnTop”
Waga pięter bez ustawienia liczby pięter
Zapytanie
{
"loads": [
{
"quantity": 20,
"name": "load 1",
"length": 120,
"width": 80,
"height": 40,
"weight": 50,
"stacking": true,
"priority": 3,
"maxWeightOnTop": 100
},
{
"quantity": 20,
"name": "load 2",
"length": 100,
"width": 70,
"height": 40,
"weight": 80,
"stacking": true,
"priority": 2,
"maxWeightOnTop": 150
},
{
"quantity": 20,
"name": "load 3",
"length": 100,
"width": 70,
"height": 40,
"weight": 100,
"stacking": true,
"priority": 1,
"maxWeightOnTop": 300
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
"loadingOrder": "priority"
}
}
Rezultat

Waga pięter z ustawioną liczbą pięter
Zapytanie
{
"loads": [
{
"quantity": 20,
"name": "load 1",
"length": 120,
"width": 80,
"height": 40,
"weight": 50,
"stacking": 3,
"priority": 3,
"maxWeightOnTop": 100
},
{
"quantity": 20,
"name": "load 2",
"length": 100,
"width": 70,
"height": 40,
"weight": 80,
"stacking": 4,
"priority": 2,
"maxWeightOnTop": 150
},
{
"quantity": 20,
"name": "load 3",
"length": 100,
"width": 70,
"height": 40,
"weight": 100,
"stacking": 5,
"priority": 1,
"maxWeightOnTop": 300
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
"loadingOrder": "priority"
}
}
Rezultat

Wybór ładunków do piętrowania – „boxesBelowAllowed”
Wybór ładunków do piętrowania, oznacza, że dany ładunek może stać tylko na wskazanych w tabeli ładunkach.
Dla każdego ładunku koniecznie trzeba podać identyfikatory ładunków, które następnie umieszcza się w tablicy „boxesBelowAllowed”.
Poniżej 2 przykłady porównawcze.
Bez określania ładunków, na których można umieścić wskazany
Zapytanie
{
"loads": [
{
"quantity": 20,
"name": "load 1",
"length": 120,
"width": 80,
"height": 40,
"weight": 50,
"stacking": true
},
{
"quantity": 20,
"name": "load 2",
"length": 100,
"width": 70,
"height": 40,
"weight": 80,
"stacking": true
},
{
"quantity": 20,
"name": "load 3",
"length": 100,
"width": 70,
"height": 40,
"weight": 100,
"stacking": true
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

Z określeniem ładunków, na których można umieszczać wskazany
W zapytaniu pozwolono na umieszczenie Load 2 na Load 1, ale nie pozwolono na umieszczenie Load 3 na Load 2.
Zapytanie
{
"loads": [
{
"id": 1,
"quantity": 20,
"name": "load 1",
"length": 120,
"width": 80,
"height": 40,
"weight": 50,
"stacking": true,
"boxesBelowAllowed": [2,3]
},
{
"id": 2,
"quantity": 20,
"name": "load 2",
"length": 100,
"width": 70,
"height": 40,
"weight": 80,
"stacking": true,
"boxesBelowAllowed": [1]
},
{
"id": 3,
"quantity": 20,
"name": "load 3",
"length": 100,
"width": 70,
"height": 40,
"weight": 100,
"stacking": true,
"boxesBelowAllowed": [1]
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

Piętrowanie – “alongFloor”
Mała liczba ładunków – ładunki prostopadłościenne
Zapytanie
{
"loads": [
{
"quantity": 9,
"name": "load 1",
"length": 120,
"width": 80,
"height": 100,
"weight": 100,
"stacking": true,
"alongFloor": true
},
{
"quantity": 8,
"name": "load 2",
"length": 100,
"width": 70,
"height": 80,
"weight": 80,
"stacking": true,
"alongFloor": true
},
{
"quantity": 7,
"name": "load 3",
"length": 100,
"width": 50,
"height": 80,
"weight": 50,
"stacking": true,
"alongFloor": true
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

Mała liczba ładunków – wszystkie typy ładunków
Zapytanie
{
"loads": [
{
"quantity": 9,
"name": "load 1",
"length": 120,
"diameter": 80,
"weight": 100,
"loadType": 2,
"stacking": true,
"alongFloor": true
},
{
"quantity": 8,
"name": "load 2",
"diameter": 50,
"height": 80,
"weight": 80,
"loadType": 1,
"stacking": true,
"alongFloor": true
},
{
"quantity": 7,
"name": "load 3",
"length": 100,
"width": 50,
"height": 80,
"weight": 50,
"stacking": true,
"alongFloor": true
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

Duża liczba ładunków wykorzystująca dostępną powierzchnię podłogi – ładunki prostopadłościenne
Zapytanie
{
"loads": [
{
"quantity": 13,
"name": "load 1",
"length": 120,
"width": 80,
"height": 100,
"weight": 100,
"stacking": true,
"alongFloor": true
},
{
"quantity": 10,
"name": "load 2",
"length": 100,
"width": 70,
"height": 80,
"weight": 80,
"stacking": true,
"alongFloor": true
},
{
"quantity": 11,
"name": "load 3",
"length": 100,
"width": 50,
"height": 80,
"weight": 50,
"stacking": true,
"alongFloor": true
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

Duża liczba ładunków wykorzystująca dostępną powierzchnię podłogi – wszystkie typy ładunków
Zapytanie
{
"loads": [
{
"quantity": 13,
"name": "load 1",
"length": 120,
"diameter": 80,
"weight": 100,
"loadType": 2,
"stacking": true,
"alongFloor": true
},
{
"quantity": 12,
"name": "load 2",
"diameter": 50,
"height": 80,
"weight": 80,
"loadType": 1,
"stacking": true,
"alongFloor": true
},
{
"quantity": 10,
"name": "load 3",
"length": 100,
"width": 50,
"height": 80,
"weight": 50,
"stacking": true,
"alongFloor": true
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

Różne wartości “alongFloor” dla różnych ładunków prostopadłościennych
Dla tych samych ładunków co w pkt.3, ustawiono inne wartości dla parametrów “alongFloor”:
- dla “load 1” i “load 2” ustawiono: ”alongFloor”: false
- dla “load 3” ustawiono: „alongFloor”: true
Zapytanie
{
"loads": [
{
"quantity": 13,
"name": "load 1",
"length": 120,
"width": 80,
"height": 100,
"weight": 100,
"stacking": true,
"alongFloor": false
},
{
"quantity": 10,
"name": "load 2",
"length": 100,
"width": 70,
"height": 80,
"weight": 80,
"stacking": true,
"alongFloor": false
},
{
"quantity": 11,
"name": "load 3",
"length": 100,
"width": 50,
"height": 80,
"weight": 50,
"stacking": true,
"alongFloor": true
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

Różne wartości “alongFloor” dla różnych typów ładunków
Dla tych samych ładunków co w pkt.3, ustawiono inne wartości dla parametrów “alongFloor”:
- dla “load 1” i “load 2” ustawiono: ”alongFloor”: false
- dla “load 3” ustawiono: „alongFloor”: true
Zapytanie
{
"loads": [
{
"quantity": 13,
"name": "load 1",
"length": 120,
"diameter": 80,
"weight": 100,
"loadType": 2,
"stacking": true,
"alongFloor": false
},
{
"quantity": 12,
"name": "load 2",
"diameter": 50,
"height": 80,
"weight": 80,
"loadType": 1,
"stacking": true,
"alongFloor": false
},
{
"quantity": 10,
"name": "load 3",
"length": 100,
"width": 50,
"height": 80,
"weight": 50,
"stacking": true,
"alongFloor": true
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "Solowka 20 EP",
"parts": [
{
"length": 820,
"width": 245,
"height": 240,
"limit": 8000
}
]
}
],
"options": {
}
}
Rezultat

Stopień podparcia
Bez wskazywania stopnia podparcia

{
"loads": [
{
"quantity": 20,
"name": "load 2",
"length": 100,
"width": 50,
"height": 20,
"weight": 500,
"stacking": true
},
{
"quantity": 20,
"name": "load 3",
"length": 100,
"width": 50,
"height": 30,
"weight": 500,
"stacking": true
},
{
"quantity": 20,
"name": "load 1",
"length": 120,
"width": 80,
"height": 17,
"weight": 100,
"stacking": true
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "truck 1",
"parts": [
{
"length": 1300,
"width": 200,
"height": 200,
"limit": 24000
}
]
}
],
"options": {
}
}
Stopień podparcia 50%

{
"loads": [
{
"quantity": 20,
"name": "load 2",
"length": 100,
"width": 50,
"height": 20,
"weight": 500,
"pctSupport": 50,
"stacking": true
},
{
"quantity": 20,
"name": "load 3",
"length": 100,
"width": 50,
"height": 30,
"weight": 500,
"stacking": true
},
{
"quantity": 20,
"name": "load 1",
"length": 120,
"width": 80,
"height": 17,
"weight": 100,
"stacking": true,
"pctSupport": 50
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "truck 1",
"parts": [
{
"length": 1300,
"width": 200,
"height": 200,
"limit": 24000
}
]
}
],
"options": {
}
}
Obracanie
Zasadami obracania ładunków sterują poniższe parametry:
- allowToRotate – domyślne ustawienie “true” – pozwala na obracanie ładunków tylko przy podstawie, czyli dotyczy tylko prostopadłościanów i rur
- rotateFreely – domyślne ustawienie “false” – pozwala na dowolne obracanie wyłącznie prostopadłościanów
Zasady obracania oraz umieszczania w przestrzeni ładunkowej poszczególnych typów ładunków zostały opisane w Rozdziale Różne typy ładunków.
Wartości domyślne obracania
Ustawienia parametrów:
- allowToRotate: true
- rotateFreely: false
Zapytanie
{
"loads": [
{
"quantity": 18,
"name": "load 1",
"length": 120,
"diameter": 80,
"weight": 100,
"loadType": 2,
"stacking": true,
"alongFloor": false
},
{
"quantity": 20,
"name": "load 2",
"height": 100,
"diameter": 40,
"weight": 500,
"loadType": 1,
"stacking": true,
"alongFloor": false
},
{
"quantity": 20,
"name": "load 3",
"length": 80,
"width": 50,
"height": 100,
"weight": 500,
"stacking": true,
"alongFloor": true
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "truck 2",
"parts": [
{
"length": 800,
"width": 200,
"height": 200,
"limit": 24000
}
]
}
],
"options": {
}
}
Rezultat

Blokada obracania
Ustawienia parametrów:
- allowToRotate: false
- rotateFreely: false
Zapytanie
{
"loads": [
{
"quantity": 18,
"name": "load 1",
"length": 120,
"diameter": 80,
"weight": 100,
"loadType": 2,
"stacking": true,
"alongFloor": false,
"allowToRotate": false,
"rotateFreely": false
},
{
"quantity": 20,
"name": "load 2",
"height": 100,
"diameter": 40,
"weight": 500,
"loadType": 1,
"stacking": true,
"alongFloor": false,
"allowToRotate": false,
"rotateFreely": false
},
{
"quantity": 20,
"name": "load 3",
"length": 80,
"width": 50,
"height": 100,
"weight": 500,
"stacking": true,
"alongFloor": true,
"allowToRotate": false,
"rotateFreely": false
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "truck 2",
"parts": [
{
"length": 800,
"width": 200,
"height": 200,
"limit": 24000
}
]
}
],
"options": {
}
}
Rezultat

Obracanie prostopadłościanów
Przypadek 1
Ustawienia parametrów:
- allowToRotate: true
- rotateFreely: false
Zapytanie
{
"loads": [
{
"quantity": 18,
"name": "load 1",
"length": 120,
"diameter": 80,
"weight": 100,
"loadType": 2,
"stacking": true,
"alongFloor": false,
"allowToRotate": true,
"rotateFreely": false
},
{
"quantity": 20,
"name": "load 2",
"height": 100,
"diameter": 40,
"weight": 500,
"loadType": 1,
"stacking": true,
"alongFloor": false,
"allowToRotate": true,
"rotateFreely": false
},
{
"quantity": 20,
"name": "load 3",
"length": 100,
"width": 40,
"height": 80,
"weight": 500,
"stacking": true,
"alongFloor": true,
"allowToRotate": true,
"rotateFreely": false
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "truck 2",
"parts": [
{
"length": 800,
"width": 200,
"height": 200,
"limit": 24000
}
]
}
],
"options": {
}
}
Rezultat

Przypadek 2
Ustawienia parametrów:
- allowToRotate: true
- rotateFreely: true
Zapytanie
{
"loads": [
{
"quantity": 18,
"name": "load 1",
"length": 120,
"diameter": 80,
"weight": 100,
"loadType": 2,
"stacking": true,
"alongFloor": false,
"allowToRotate": true,
"rotateFreely": false
},
{
"quantity": 20,
"name": "load 2",
"height": 100,
"diameter": 40,
"weight": 500,
"loadType": 1,
"stacking": true,
"alongFloor": false,
"allowToRotate": true,
"rotateFreely": false
},
{
"quantity": 20,
"name": "load 3",
"length": 100,
"width": 40,
"height": 80,
"weight": 500,
"stacking": true,
"alongFloor": true,
"allowToRotate": true,
"rotateFreely": true
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "truck 2",
"parts": [
{
"length": 800,
"width": 200,
"height": 200,
"limit": 24000
}
]
}
],
"options": {
}
}
Rezultat

Multistopy
Zasady korzystania z funkcjonalności Multistopów
Funkcjonalność Multistopów, daje możliwość uwzględniania na trasie kilku miejsc załadunku i rozładunku. Multistopy dotyczą tylko jednej przestrzeni ładunkowej i muszą mieć zdefiniowane min. 3 stopy na trasie.
- Aby korzystać z funkcjonalności Multistopów, w opcjach algorytmu, należy ustawić parametr
"options": {
"multiStops": true
}
- W przestrzeni ładunkowej, należy podać liczbę wymaganych na trasie stopów
"loadingSpaces": [
{
…
"stops": [
{
"id": 1,
"name": "stop 1"
},
{
"id": 2,
"name": "stop 2"
},
{
"id": 3,
"name": "stop 3"
},
{
"id": 4,
"name": "stop 4"
}
]
…
}
]
3. Przy każdym ładunku, należy podać jego miejsce załadunku i rozładunku, poprzez wskazanie identyfikatora i nazwy stopa, zdefiniowanych w przestrzeni ładunkowej.
"loads": [
{
"quantity": 10,
"name": "load 1",
"length": 120,
"width": 80,
"height": 100,
"weight": 100,
"origin": {
"id": 1,
"name": "stop 1"
},
"destination": {
"id": 3,
"name": "stop 3"
}
}
…
]
Przykład
Poniżej podano przykład uwzględniający 4 ładunki i 4 stopy na trasie.
{
"loads": [
{
"quantity": 10,
"name": "load 1",
"length": 120,
"width": 80,
"height": 100,
"weight": 100,
"origin": {
"id": 1,
"name": "stop 1"
},
"destination": {
"id": 3,
"name": "stop 3"
}
},
{
"quantity": 20,
"name": "load 2",
"length": 100,
"width": 60,
"height": 20,
"weight": 100,
"origin": {
"id": 1,
"name": "stop 1"
},
"destination": {
"id": 3,
"name": "stop 3"
}
},
{
"quantity": 30,
"name": "load 3",
"length": 100,
"width": 60,
"height": 20,
"weight": 100,
"origin": {
"id": 3,
"name": "stop 3"
},
"destination": {
"id": 4,
"name": "stop 4"
}
},
{
"quantity": 40,
"name": "load 4",
"length": 100,
"width": 60,
"height": 20,
"weight": 100,
"origin": {
"id": 2,
"name": "stop 2"
},
"destination": {
"id": 3,
"name": "stop 3"
}
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "truck 1",
"stops": [
{
"id": 1,
"name": "stop 1"
},
{
"id": 2,
"name": "stop 2"
},
{
"id": 3,
"name": "stop 3"
},
{
"id": 4,
"name": "stop 4"
}
],
"parts": [
{
"length": 600,
"width": 500,
"height": 200,
"limit": 24000
}
],
"type": "vehicle"
}
],
"options": {
"multiStops": true
}
}
Rezultat
1. Przystanek 1 (stop 1) – załadowano “load 1” i “load 2”

2. Przystanek 2 (stop 2) – doładowano “load 4”

3. Przystanek 3 (stop 3) – wyładowano “load 1”, load 2”, load 4”, załadowano “load 3”

4. Przystanek 4 (stop 4) – wyładowano “load 3”
