# **Ievads**
## Problēmas nostādne
Preču piegādes maršrutēšanā ir daudz dažādu nepilnību un problēmu, piemēram, kavētas piegādes, pazudušas vai nozagtas paciņas, nepareizas piegādes adreses un pat bojātas paciņas. Taču vislielākā nozīme ir ātra un efektīva maršruta izplānošana. Ja vienam piegādātājam ir jāved paciņas uz dažādām adresēm, tad ir nepieciešams izveidot maršrutu tā, lai katra paciņa būtu piegādāta savā noteiktajā laikā bez kavēšanās. Tāpēc ir nepieciešams risinājums, kas izveidos piegādātājiem visefektīvākos maršrutus.
## Mērķis
Izveidot risinājumu preču piegādes maršrutēšanas problēmai, kas, ņemot vērā piegādātāju skaitu un preču piegādes adreses, izvēlētos un sastādītu katram piegādātājam visizdevīgāko maršrutu, lai preces pie klientiem nonāktu maksimāli ātri un piegādātājiem ceļā nebūtu jāpatērē vairāk laika, nekā tas ir reāli nepieciešams.
# **Līdzīgo risinājumu pārskats**
## Teorētiskais pamatojums
### Algoritmu veidi
Uzdevuma veikšanai tiek izmantots heiristisks algoritms, kas balstās uz grafu teorijas pamatiem un ātrākā ceļa atrašanu šajā grafā. Algoritmu var realizēt 10 soļos:
1. Sakārtot pieaugošā secībā klientu sarakstu pēc agrākā darba sākšanas laika. Ja vairākiem klientiem ir vienādi darba sākšanas laiki, tad tie tiek kārtoti pieaugošā secībā pēc vēlākā darba sākšanas laika.
2. Izvēlēties pirmo ierakstu no saraksta un ievieto to jaunā saraksta beigās (aizņemtie klienti), tajā pašā laikā izdzēst esošo ierakstu no klientu saraksta un aprēķināt kopējo piegādes daudzumu klientam.
3. Tiek aprēķināts katram aizņemtajam klientam RD(residual delivery) un RP(residual pick up), kas attiecīgi nozīmē atlikusī piegādes kapacitāte un atlikusī uzņemšanas kapacitāte.
4. Tiek pārbaudīts brīvo klientu sarakstā, vai izpildās šādi nosacījumi:
• Piegādājamais daudzums klientam ir mazāks nekā atlikušais piegādes daudzums sākumā izvēlētajam klientam;
• Uzņemšanas daudzums ir mazāks nekā atlikušais uzņemšanas daudzums sākumā izvēlētajam klientam.
Ja kritēriji izpildās, tad mezgls, jaunais mezgls var tikt ievietots aiz izvēlētā mezgla.
5. Visi mezgli, kas apmierina nevienādības punktā 4., tiek ievietotas tukšā sarakstā. Ja šis saraksts ir tukšs, tad aizņemto klientu saraksts tiek slēgts un jāatgriežas pie punkta 2.
6. Aprēķina apkalpošanas laiku konkrētajā mezglā pie konkrētā piegādātāja transportlīdzekļa un ierašanās laiku mezglā. Ja visiem mezgliem šajā sarakstā ierašanās laiks punktā ir lielāks nekā vēlākais starta apkalpošanas laiks, tad tiek aizvērts saraksts ar aizņemtajiem punktiem un jāatgriežas uz soli 2.
7. Aprēķina gaidīšanas laikus punktā
8. Ja atgriešanās laiks līdz depo ir lielāks par vēlāko darba sākšanas laiku depo visiem aizņemtajiem punktiem, tad atgriežas uz soli 2.
9. Izvēlas mezglu, kam ir mazākais gaidīšanas laiks, tiek ielikts sarakstā ar aizņemtajiem punktiem un atgriežas pie soļa 2.
10. Ja sākotnējais saraksts ir tukšs, tad algoritms beidz darbu.
### Novērtēšanas kritēriji
1.Vai risinājums informē par piegādes statusu visā tās laikā;
2.Vai risinājums veic maršruta optimizāciju un parāda, kādu ceļu ieteicams izvēlēties;
3.Vai risinājumā ir iespēja pievienot vairākus galamērķus;
4.Vai risinājumā ir iespēja apskatīt piegādes laiku;
5.Vai risinājumam ir viegli saprotama saskarne;
6.Vai risinājums ļauj pievienot pierādījumus par piegādes beigām;
7.Vai risinājums mērķēts uz ceļa ilguma samazināšanu;
8.Cik adreses var pievienot risinājumam;
## Līdzīgie risinājumi
### Onfleet
Onfleet maršrutu optimizācijas algoritmi ņem vērā laiku, atrašanās vietu, ietilpību un satiksmi, lai radītu efektīvākus maršrutēšanas risinājumus.
Onfleet ļauj identificēt iespējamas problēmas pirms tās notiek, izmantojot paredzamo ierašanās laiku un reāllaika brīdinājumus, kurus nodrošina mašīnmācīšanās. Ja tiek veiktas izmaiņas maršrutā, atjauninājumi tiek uzreiz nosūti vadītājam.
Klienti tiek informēti, kad piegāde sākas, kad to var gaidīt, un kad tā ir piegādāta, izmantojot automātiskus īsziņu paziņojumus. Jebkuram ir iespēja sekot līdzi vadītāju atrašanās vietai.
Piegādes ir viegli pārbaudāmas – lietotnē ir iespēja augšupielādēt attēlus, parakstus, svītrkodus un piezīmes.
### RouteXL
RouteXL ir maršrutu plānotājs, kas paredzēts vairāku pieturpunktu maršrutiem. Tas izmanto algoritmu, kas kārto adreses, lai samazinātu ceļa ilgumu.
Lai aprēķinātu maršrutu, ir nepieciešams pievienot kartei tikai izbraukšanas vietu un visus galamērķus. Adreses var importēt no vairākām programmatūrām, izklājlapām vai kopēt no e-pasta.
Maršruts tiks parādīts kartē, bet to var arī eksportēt uz navigācijas lietotnēm vai nosūtīt citiem.
### MapQuest
MapQuest ir paredzēts vienam piegādātājam ar ne vairāk kā 26 adresēm. Tā ir bezmaksas lietotne. Adreses var ievadīt vienkārši iekopējot tās vai augšupielādējot izklājlapu. Maršruts tiek optimizēts un pieturvietas tiks pārkārtotas, lai padarītu maršrutu pēc iespējas efektīvāku, dodot iespēju izvēlēties starp īsāko laiku vai īsāko nobraukto attālumu. Ir iespēja iestatīt maršrutu kā turp un atpakaļ, ņemot vērā laiku, kas nepieciešams piegādātājam, lai atgrieztos noliktavā. Maršrutus piegādātājiem var nosūtīt izmantojot SMS saiti. Šīs lietotnes lielākais trūkums, iespējams, ir uznirstošās reklāmas, kas var kļūt kaitinošas. Ir iespēja pielāgot maršrutus, lai izvairītos no maksas ceļiem, lielceļiem, prāmjiem, sezonas ceļiem, ceļiem ar ierobežotu laiku un valstu robežām.
### Flightmap
Flightmap ģenerē pēc iespējas īsāku maršrutu, pamatojoties uz ievadītajām adresēm un optimizācijas iestatījumiem, piemēram, maksimālajiem uzdevumiem vienam transportlīdzeklim un brauciena ilguma ierobežojumam. Flightmap bezmaksas plāns atbalsta līdz 200 pieturām mēnesī 1-2 piegādātājiem.Ja ar to nepietiek, var palielināt limitus, maksājot $0,04 par pieturu vai $5 par transportlīdzekli mēnesī. Ir iepēja kopīgot maršrutus ar piegādātājiem ar vienu klikšķi, eksportējot uz izklājlapu, e -pasta pielikumu vai koplietojamu tīmekļa vietni.
### Route4me
Šī lietotne, līdzīgi kā citas, piedāvā maršruta optimizāciju un uzraudzību, saziņu ar klientiem un piegādes apliecinājumu. Route4me piedāvā plašu papildus iespēju katalogu, tomēr tas atkal norāda uz to, ka tādas funkcijas kā piemēram reāllaika šofera izsekošana, kas citām lietotnēm ir standartā, šajā gadījumā ir atsevišķi jāpiemaksā. Tomēr lietotne piedāvā maršruta optimizācijas opcijas un dažādām platformām gan viena, gan vairāku braucēju maršrutiem. Kā arī ir iespēja Route4me savienot ar google maps vai Waze.
---
<p style="text-align: right;"> 1.1.tabula</p>
<center><b> Līdzīgo tehnisko risinājumu novērtējums izvirzītajiem kritērijiem</b></center>
Līdzīgais risinājums| 1. | 2. | 3. | 4. | 5. | 6. | 7. | 8.
-|-|-|-|-|-|-|-|-
Onfleet |Jā |Jā |Nē |Jā |Jā |Jā |Jā |Nav praktisku ierobežojumu |
RouteXL |Nē |Jā |Jā |Jā |Jā |Nē |Jā |Bezmaks. 20 |
MapQuest |Jā|Jā|Jā|Jā|Jā|Nē|Nē|Bezmaks. 26|
Flightmap |Jā|Jā|Jā|Jā|Jā|Nē|Nē|Bezmaks. 200|
Route4Me |Jā|Jā|Jā|Jā|Jā|Jā|Jā|Nav praktisku ierobežojumu|
# **Tehniskais risinājums**
## Prasības
Tīmekļa lietotnei ir trīs lietotāju grupas:
1. preču pasūtītāji jeb klienti;
2. preču piegādātāji jeb kurjeri;
3. tīmekļa lietotnes administrators.
Funkcionālās prasības:
1. klients vēlas sekot līdzi savam pasūtījumam, lai zinātu, ka tas tiek nogādāts;
2. klients vēlas zināt piegādes precīzo laiku, lai zinātu, kad jāsaņem pasūtījums;
3. klients vēlas savu pasūtījumu pēc iespējas ātrāk;
4. kurjers vēlas redzēt gatavu maršrutu, lai laicīgi nogādātu pasūtījumus;
5. kurjers vēlas redzēt maršruta aptuveno laiku un attālumu līdz nākamajai piegādes adresei, lai varētu iekļauties paredzētajā piegādes laikā;
6. kurjers vēlas klientu telefona numuru, lai varētu sazināties ar klientu;
7. administrators vēlas klienta telefona numuru, lai nosūtītu informāciju par piegādi.
## Konceptu modelis