API – ograniczenia umiejętności

Ta strona opisuje zaawansowane funkcje OptiFacility dotyczące umiejętności, które są wymagane przez obiekty i świadczone przez pracowników (kurierów). Zanim przeczytasz tę część, zapoznaj się z podstawowymi możliwościami OptiFacility.

Następujący plik json definiuje przykład zadania z ograniczeniami umiejętności. Dodatki do podstawowego pliku json są podświetlone:

{
    "UserID": "demo",
    "RequestID": 12346,
    "Comment": "my first request with skill constraints",
    "Quality": 2,
    "AgentSpeed": 45.0,
    "AgentWorkTime": 8.0,
    "AgentVisitTime": 1.0,
    "CostAgentWork1h": 70.0,
    "CostAgentTravel1km": 1.0,
    "Skills": ["A","B","C","D"],
    
    "Facilities": [{"Name":"#1", "Lat":52.54,  "Lon":17.117},
                   {"Name":"#2", "Lat":52.305, "Lon":16.648, "SkillsRequired":[["A"]]},
                   {"Name":"#3", "Lat":52.554, "Lon":16.948, "SkillsRequired":[["C"]]},
                   {"Name":"#4", "Lat":52.645, "Lon":16.712, "SkillsRequired":[["D"]]},
                   {"Name":"#5", "Lat":52.318, "Lon":16.88,  "SkillsRequired":[["A","C"]]},
                   {"Name":"#6", "Lat":52.56,  "Lon":16.460, "SkillsRequired":[["B"],["D"]]},
                   {"Name":"#7", "Lat":52.368, "Lon":17.165, "SkillsRequired":[["D"],["B","C"]]}],
                   
    "Agents": [{"Name":"Agent 1", "Lat":52.496, "Lon":17.222, "SkillsProvided":["A"]},
               {"Name":"Agent 2", "Lat":52.416, "Lon":16.482, "SkillsProvided":["B","C"]}],
    "Task": "FindRoutesCommutingIncluded"
}

Znaczenie podświetlonych pól wyjaśnione jest poniżej:

  • Skills – tablica zawierająca deklarację wszystkich umiejętności występujących w tym zadaniu.
  • Facilities: SkillsRequired – tablica określająca wymagania obiektu (lokalizacji). Jeden obiekt może posiadać więcej niż jedno wymaganie. Każde wymaganie jest opisane przez tablicę, która może zawierać więcej niż jedną umiejętność. Aby pracownik mógł obsłużyć dany obiekt, musi posiadać zbiór (lub nadzbiór) umiejętności zdefiniowanych w przynajmniej jednym wymaganiu tego obiektu. Obiekty bez zdefiniowanych wymagań mogą być odwiedzone przez każdego pracownika.
  • Agents: SkillsProvided – tablica wszystkich umiejętności pracownika.

Aby lepiej zrozumieć, którzy pracownicy mogą odwiedzić określone obiekty, przeanalizujmy powyższy przykład.

  • Pierwszy pracownik...
    • może odwiedzić następujące obiekty: #1 (który nie wymaga żadnych umiejętności) i #2 (wymaga umiejętności, którą pracownik posiada).
    • nie może odwiedzić następujących obiektów: #3, #4 (obydwa wymagają umiejętności, których pracownik nie posiada), #5 (pracownik posiada tylko jedną z wymaganych umiejętności), #6 i #7 (pracownik nie posiada żadnej z wymaganych umiejętności).
  • Drugi pracownik...
    • może odwiedzić następujące obiekty: #1 (który nie wymaga żadnych umiejętności), #3 (wymaga umiejętności, którą pracownik posiada), #6 i #7 (pracownik posiada wszystkie umiejętności z co najmniej jednego wymagania).
    • nie może odwiedzić następujących obiektów: #2, #4 (obydwa wymagają umiejętności, których pracownik nie posiada) i #5 (pracownik posiada tylko jedną z wymaganych umiejętności, C).
Pracownik 1
dostarcza A
Pracownik 2
dostarcza B i C
Obiekt #1 niczego nie wymaga
Obiekt #2 wymaga A  
Obiekt #3 wymaga C  
Obiekt #4 wymaga D   
Obiekt #5 wymaga A i C   
Obiekt #6 wymaga B lub D  
Obiekt #7 wymaga D lub (B i C)  


Możesz użyć dowolnego ciągu znaków, by nazwać daną umiejętność. Zamiast pojedynczych liter, możesz używać terminów mających dla Ciebie określone znaczenie, na przykład: "Budowlaniec", "TransportDużaCiężarówka", "Kardiolog", "PrzedstawicielHandlowy3", "Negocjator", albo "Pizza4".