LINKÖPINGS UNIVERSITET Institutionen för datavetenskap / Matematiska institutionen TTIT33 Scenario för Tema 3 i Termin 3 Du befinner dig vid företaget Posten Data AB, där man löpande uppmärksammar behov av underhåll och utveckling av Postens datasystem. Företaget har sedan en tid tillbaka en ny avdelningschef som under de senaste åren arbetat inom ett privat transportföretag. Hon har som profil att stimulera datoranvändning hos den personal som arbetar med transporter och transportplanering vid Posten. Hennes avsikt är att planerarna på sikt, i större utsträckning ska välja att arbeta med datorer som hjälpmedel i komplexa beslutssituationer. Under en tid har avdelningschefen regelbundet träffat berörda personer inom Posten Logistik AB för att identifiera sådana planerings- och beslutssituationer, där någon typ av datoriserat beslutshjälpmedel skulle kunna vara till nytta. Detta har mynnat ut i ett antal mer eller mindre väldefinierade situationer som chefen nu vill att en grupp medarbetare ska ta sig an. Avdelningschefen har vid sitt tidigare företag arbetat med utveckling av programvara för beslutshjälp och vet att detta ställer höga krav på kunskaper om datastrukturer och optimering, speciellt algoritmkonstruktion. Hon har därför definierat ett projekt i form av en kunskapsuppbyggande förstudie, inom vilken arbetet med situationerna ska ske. Det förväntas ingen redovisning av detta arbete. Den totala tidsramen för arbetet är sju veckor. Lycka till! 1
Situation 1: Man har inom Posten Logistik AB skrivit programvara för sortering av kundinformation. Inte alla terminaler användar samma algoritm. Man har nu bestämt att försöka standardisera användningen av sorteringsalgoritmer. Som ett första steg har man kört de olika algoritmerna på samma dator. Man har använt olika storlek på indata: 10, 100, 1000, 10 000, 100 000 och 1 000 000 poster med kundinformation. Vi visar exekveringstiderna (i sekunder) för de olika algoritmer i tabellen nedan. NA betyder att man var tvungen att avbryta körningen av algoritmen eftersom det tog för lång tid. Vilken av dessa algoritmer är bäst? Behöver man mer information för att bestämma sig eller räcker det med testkörningsresultaten? Algoritm 1 2 3 4 storlek indata = 10 0.00044 0.00057 0.00041 0.00046 storlek indata = 100 0.00675 0.00420 0.00171 0.00244 storlek indata = 1000 0.59564 0.05565 0.02927 0.02587 storlek indata = 10 000 58.864 0.71650 0.42998 0.31532 storlek indata = 100 000 NA 8.8591 5.7298 3.5882 storlek indata = 1 000 000 NA 104.68 71.164 41.282 2
Situation 2: Snart är det dags för den miljonte kunden hos Posten Företagspaket och det ska firas. Den kunden ska få ett stort pris, men Posten vill också ge ett mindre pris till kund 100 000, 200 000,..., 900 000 och till de tusen bästa kunderna. Också bästa kunden per postterminal får ett pris. Information om kunderna finns lagrad per postterminal. 3
Situation 3: Posten startar just upp ett projekt tillsammans med stadens trafikcentral, med syftet att chaufförerna vid Posten ska kunna få så kallad route guidance. Detta innebär att man i varje fordon installerar en dator som, då chauffören så önskar, ger information om bästa (snabbaste) ruttval med hänsyn taget till aktuell trafiksituation. Man har delat upp ansvarsområdena så att trafikcentralen ska garantera att information om den aktuella trafiksituationen löpande överförs till Postens dator. Detta sker i form av restider för alla gatuoch vägavsnitt. Trafikcentralen har även föreslagit lämplig utrustning (datorer) som ska installeras i fordonen. Posten har köpt in en databas med all nödvändig information om det aktuella gatu- och vägnätet. Inom Posten Data AB ska den programvara utvecklas som identifierar ett bästa ruttval varje gång då detta efterfrågas. Man kan tänka sig tre olika ruttvalssituationer: 1. Chauffören vill ha bästa ruttval från en punkt till en annan. 2. Chauffören har ett antal adresser som ska besökas och vill veta vilken som kan nås snabbast, näst snabbast etc. 3. Chauffören har ett antal adresser som ska besökas och vill veta den bästa rutten längs alla dessa. Ruttvalsproblemen ska lösas med Postens dator och informationen ska sedan skickas ut till respektive fordons dator. Man kommer att ha höga krav på svarstiderna vilket kräver effektiva implementeringar av alla algoritmer. Om något problem visar sig vara teoretiskt svårt att lösa till optimalitet ska det lösas med någon icke-optimerande algoritm. 4
Situation 4: Det ställs hela tiden nya krav på snabbhet och säkerhet vid Postens sorteringsanläggningar och man arbetar kontinuerligt med förbättring av existerande anläggningar samt planering av nya. I nyplaneringen har man önskemål om ett datorbaserat beslutsstöd med vilket man interaktivt kan analysera kapaciteten på föreslagna sorteringsanläggningar. Man har tagit fram följande kravspecifikation: Användaren ska interaktivt specificera en modell av sorteringsanläggningen genom att definiera någon typ av nätverk med noder och bågar. Därefter ska man kunna analysera anläggningen i följande avseenden: 1. För olika val av matningshastigheter på transportavsnitten, som ska kunna anges och ändras interaktivt, vill man uppskatta hela anläggningens kapacitet (antal paket per tidsenhet). Man får då anta att varje transportavsnitts kapacitet endast beror av matningshastigheten. 2. Efter att den totala kapaciteten beräknats vill man kunna identifiera var i anläggningen en ökning av matningshastigheten leder till en ökad total kapacitet i anläggningen. 3. För olika val av matningshastigheter på transportavsnitten vill man testa om anläggningen klarar ett givet paketflöde, som ges i form av inflöden och utflöden vid de platser där paketen slussas in i respektive ut ur anläggningen. I detta fall gör man samma antagande om transportavsnittens kapaciteter, som i punkt 1 ovan. Man har tillgång till en programkod för simplexalgoritmen. Hur kan denna användas för att lösa de problem som uppkommer i punkterna 1-3? Är detta effektivt, dvs löses problemen effektivt med simplexalgoritmen? Om ej, hur skall problemen istället lösas på mest effektiva sätt? 800 400 400 350 350 350 600 350 600 600 350 350 600 350 350 400 400 Ett exempel på hur en sorteringsanläggning kan se ut ges i vidstående figur. Paketen kommer in i anläggningen via de fyra transportavsnitten (inmatningsbanden) i mitten, med kapacitet 600 paket/tidsenhet vardera. Härifrån slussas de in i cirkulationsplatsen där paketen sorteras ut på de fem yttre transportavsnitten (utmatningsbanden), där fyra har kapacitet 400 paket/tidsenhet och en kapacitet 800 paket/tidsenhet. Cirkulationsplatsen har två våningar där paketen cirkulerar med- respektive moturs. Varje transportavsnitt (totalt 8 stycken per våning) har kapacitet 350 paket/tidsenhet. När paketen slussas in i cirkulationsplatsen delas de upp på detvåvåningarna med hjälpavenavdelare på transportbandet. 5
Situation 5: När en kund skickar ett paket lagras olika typer av information, t.ex. kundens namn och adress, mottagarens namn och adress, registreringsnummer, pallnummer, chaufför etc. I vissa situationer (t.ex. när en kund ringer angående statusen på sitt paket) behöver man snabbt kunna hämta information. Vissa delar av informationen svarar då mot indata medan andra delar svarar mot svaret. Sammansättningen av information i indata respektive svar varierar beroende på situation. Insättning och uppdatering av information förekommer ganska ofta. Borttagning av information förekommer relativt sällan. I det nuvarande systemet är väntetiderna för de olika operationerna för långa. 6