Oficjalna dokumentacja API Goodloading

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 sześ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.

integracja-rozne-typy-ladunkow

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 sześcianów i rur
  • allowFreely – domyślne ustawienie “false” – pozwala na dowolne obracanie wyłącznie sześ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 sześcienny

Typ ładunku “loadType”: 0.
Ładunek sześcienny określony jest 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, przy czym kieruje się tutaj własnymi zasadami układania ładunków, m.in. taką, że dla załadunku od tyłu, ładunki układane są począwszy od lewego dolnego rogu przy kabinie kierowcy i stara się po kolei wypełniać rzędy, począwszy od kabiny. Algorytm uwzględnia przy tym wartości parametrów dotyczących pozwolenia na obracanie ładunków. W poniższym przykładzie w Response, algorytm zamienił “width” i “lenght”. Mógł to zrobić, poniewaz miał domyślne pozwolenie na obracanie ładunku przy podstawie.
W poniższym przykładzie parametry dotyczące przestrzeni zostały pokolorowane 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"
        }
    ]
}
integracje-ladunek-szescienny

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 “lenght”, reprezentują kwadratowy obszar ograniczający okrągłą podstawę beczki.
Beczki stawiane są zawsze tylko pionowo i nie podlegają żadnym rotacjom.
W poniższym przykładzie w Response, algorytm podstawił pod“width” i “lenght”, tę samą wartość przepisaną z “diameter”.
Parametry dotyczące przestrzeni zostały pokolorowane 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"
        }
    ]
}
integracje-beczka

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"
        }
    ]
}
integracje-rura

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"
        }
    ]
}
integracje-rura-2

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ł dla ładunków ułożenia z zachowaniem jak największej wolnej przestrzeni, bez względu na kolejność ich dodawania. oraz inne wymieniane 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 (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 (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 zostały opisane parametry, dzięki którym użytkownik może wskazać preferencyjne zasady układania ładunków. Jeżeli w opcjach algorytmu nie ustawiono układania wg priorytetów, to ładunki układane są 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:

2. AllongFloor – 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

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

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 “fase
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 – “AllongFloor”
Mała liczba ładunków – ładunki sześ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, wyczerpująca układanie przy podłodze – ładunki sześ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, wyczerpująca układanie przy podłodze – 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 sześ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 sześcianów i rur
  • allowFreely – domyślne ustawienie “false” – pozwala na dowolne obracanie wyłącznie sześ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

Obroty sześ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”