Obligatorisk uppgift: Simulering av köer i ett trafiksystem

Relevanta dokument
Obligatorisk uppgift: Simulering av köer i ett trafiksystem

Obligatorisk uppgift: Simulering av köer i ett trafiksystem

Presentation av trafiksimuleringsprojektet

Presentation av obligatoriska uppgiften trafiksimulering. Ett större program med flera klasser

Presentation av trafiksimuleringsprojektet

trafiksimulering Intro OU5 trafiksimulering

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tentamen i Programmeringsteknik I

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Del A (obligatorisk för alla)

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Redovisning av inlämningsuppgifter

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Laborationsanvisning. Digital väckarklocka. Steg 2, laborationsuppgift 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Sweco TransportSystem AB Org.nr Styrelsens säte: Stockholm. En del av Sweco-koncernen

Tentamen TEN1 HI

PROGRAMMERINGSTEKNIK TIN212

Laboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false.

Området Vårvik med ny bro i Trollhättan Kompletterande simuleringar

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Del A (obligatorisk för alla)

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

Laboration 3, uppgift En klass för en räknare

TUTORIAL: SAMLING & KONSOLL

kl Tentaupplägg

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

ÖSTRAND BIORAFFINADERI. Trafikutredning avseende ANSLUTNING TILL JÄRNVÄGSGATAN. 1 Bakgrund. 2 Förutsättningar, trafik. Innehåll:

Uppsala kommun, plan- och byggnadsnämnden. Dnr PBN , VATTENFALLS FRAMTIDA ANGÖRING FRÅN STÅLGATAN. Trafikutredning

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning 5-6 Innehåll

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tentamen TEN1 HI

HI1024 Programmering, grundkurs TEN

Trafiklots förbi vägarbete. Verktyg för att ta fram förlängd restid och kötid för vägarbeten med olika längd och trafikmängd

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Tentamen, Algoritmer och datastrukturer

Programmeringsteknik II

Tentamen i Objektorienterad programmering

Miniprojekt: Vattenledningsnäten i Lutorp och Vingby 1

Tentamen FYTA11 Javaprogrammering

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

3FrontOffice Statistik Direkt

Uppgift 1 (vadå sortering?)

Inledande programmering med C# (1DV402) Tärningarna ska kastas

Tentamen, EDAA10 Programmering i Java

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Tentamen TEN1 HI

Tentamen i Programmeringsteknik I

AVR 5. Styrning av trafikljus. Digitala system 15 p

kl Tentaupplägg

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tentamen i Programmeringsteknik I

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

PROGRAMMERING AV MCU LABORATION6. Laborationens syfte

Övning 3. Datateknik A, Java I, 5 poäng

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

Värmedistribution i plåt

TAIU07 Matematiska beräkningar med Matlab

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Lab5 för prgmedcl04 Grafik

Uppgift 1 ( Betyg 3 uppgift )

Skolan för Datavetenskap och kommunikation. Programmeringsteknik. Föreläsning 16

Design av en klass BankAccount som representerar ett bankkonto

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Laboration A Objektsamlingar

Simulering med ModelSim En kort introduktion

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

LyckaTill önskar Anna

LABORATIONSINSTRUKTION

Del A (obligatorisk för alla)

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Övningsuppgift. Repeterbara citat. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Rekursion och induktion för algoritmkonstruktion

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Gissa det hemliga talet

Kunna beräkna medelantal kunder för alla köer i ett könät utan återkopplingar.

Övningar Dag 2 En första klass

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Tentamen, EDA501 Programmering M L TM W K V

Objektorienterad Programkonstruktion

Obligatorisk uppgift: Numerisk kalkylator

HI1024 Programmering, grundkurs TEN

Laboration: Whitebox- och blackboxtesting

Transkript:

Informationsteknologi 10 februari 2016 Obligatorisk uppgift: imulering av köer i ett trafiksystem Moment: Centrala begrepp som klasser, objekt, metoder, attribut. Problembeskrivning OB: Uppgifterna kommer att diskuteras på föreläsningstid. Gatukontoret i Uppsala har konstaterat att det blir mycket köer i en korsning av följande typ: N s4 s1 s3 s2 Korsningen kontrolleras alltså av de fyra ljussignaler s1, s2, s3 och s4. n betydande mängd av trafiken som kommer från till höger i figuren vill svänga vänster mot i korsningen och deras framart är ofta blockerad av fordon som kommer från. För att lösa problemet avser man att bygga svängfiler för fordon som kommer från respektive och som skall vänster i korsningen dvs man vill ha en korsning av detta utseende: N s6 s5 s1 s2 s4 s3 1

Denna korsning har alltså svängfiler kontrollerade av signalerna s2 och s5. För att avgöra hur långa svängfilerna skall göras vill gatukontoret ha ett program som simulerar vad som händer i korsningen vid olika längder på svängfilen, olika trafikintensitet och olika ljusintervall på signalerna. För detta ändamål räcker det med att studera trafikflödet i en riktning dvs i ett system med följande utseende: s1 s2 ftersom trafik från både mot N och kontrolleras av samma signal (s1 ) behöver vi inte särskilja dessa utan betrakta denna trafik som gående mot. Vi behöver inte heller följa fordonen när de har passerat ljussignalerna. xempel i praktiken Dag Hammarskjölds väg från rondellen utanför Polacksbacken () söderut till korsningen med Vårdsätravägen Kungsängsleden. träckan tar cirka cirka 40 sekunder att köra. Den befintliga svängfilen rymmer ca 10 bilar. Det finns ytterligare en fil i verkligheten men den abstraherar vi bort. (Väderstrecken stämmer inte heller.) Datormodell Programmet skall ha följande klasser: Vehicle tt fordon Light n trafiksignal Lane n fil Trafficystem tt trafiksystem med filer och signaler imulation Innehåller en globalt tillgänglig klocka (imulation.gettime()) och en main-metod som driver simuleringen. VehicleGenerator Producerar fordon enligt givna sannolikheter. Klasserna imulation och VehicleGenerator är givna och skall användas. Klasserna Vehicle, Light och Lane skall vara utformade så att de kan sättas samman till andra trafiksystem än de som beskrivs i denna uppgift. e specifikationen av klasserna. Använd en array för att representera ett Lane-objekt. Varje plats antingen är tom eller rymmer ett fordon (alla fordon betraktas alltså som lika stora). Trafiksystemet ska bestå av tre filer (lane, laneest och laneouth) och ljussignalerna lightest och lightouth (tidigare kallade s1 och s2 ): 2

laneest lane lightest 0 1 2 0 1 2 lightouth 0 1 laneouth X Filerna har en fix längd dvs de rymmer högst ett angivet antal fordon. Vid punkten finns det en kö (ej utritad) som lämpligen implementeras med hjälp av en ArrayList. e kursens minilektion om ArrayList och/eller Javadoc om klassen ArrayList. Längden på lane skall dock vara så stor att kön för det mesta är tom. Om kön växer i längd betyder det att systemet överhuvud taget inte kan svälja den angivna trafikvolymen. Vid ett tidssteg kan en eller flera av följande saker hända: ett fordon passerar en signal (om den är grön), ett fordon avancerar ett steg i en fil (om platsen framför är ledig) ett fordon omedelbart framför X (dvs i position 0 på filen lane) flyttas till laneest eller laneouth beroende på dess destination ( eller ), ett fordon anländer till systemet vid punkten och ställs i kön, om sista platsen i lane är ledig och det finns fordon i kön tas första från kön till sista platsen i lane, den ena eller båda signalerna skiftar färg. n simulering består alltså av en tidsstegning där ovanstående saker händer. Det är lämpligt att momenten, precis som i verkligheten, utförs i den ordning de står i ovan. Ljussignalernas funktion n signal är grön eller röd (ingen gul färg behövs). ignaler karakteriseras av två parametar: en period dvs antalet tidssteg det är från början av ett grönt intervall till början av nästa gröna intervall och en grönperiod dvs antalet tidssteg som den är grön. Dessa parametrar ges när signalen byggs (dvs som parametrar till konstruktorn). n signal behöver också en intern klocka som tickas upp av en step-metod. Det är lämpligt (men inte nödvändigt) att låta klockan gå cirkulärt dvs när den kommit till sista klockslaget i perioden börjar den om från 0. Det behövs också en metod som avgör om signalen är grön eller ej. De båda signalerna skall ha samma period och starta som gröna. xempel: Om perioden är 7 och grönperioden för lightest är 3 och för lightouth är 2 3

så visar nedanstående tabell hur den interna klockan skall ticka och vilken färg de skall ha Tidssteg: 0 1 2 3 4 5 6 7 8 9 10... Intern klocka: 0 1 2 3 4 5 6 0 1 2 3... Färg lightest: G G G R R R R G G G R... Färg lightouth: G G R R R R R G G R R... Indata till en simulering Programmet styrs av följande indata: längderna på filerna, ljussignalernas karakteristik (period och grönperiod), ankomstintensitet dvs sannolikheten att ett fordon dyker upp vi vid ett tidssteg och sannolikheten att ett skapat fordon skall svänga dvs ha som destination. De två sista värdena (ankomstintensitet och sannolikhet att svänga) varierar med tiden. Detta hanteras hanteras av den givna klassen VehicleGenerator som läser informationen från en fil vars namn ges som parameter till konstruktorn. xempel på filinnehåll: 30 0.2 0.3 Night 10 0.8 0.8 Morning rush rush 30 0.5 0.5 Day 10 0.7 0.6 Afternoon rush 20 0.6 0.4 vening e dokumentationen för klassen VehicleGenerator för betydelsen! ftersom klassen är given behöver ni inte själva skriva koden som läser filen men läs igenom konstruktorn för att se hur den gör det! De två första punkterna, dvs längden på filerna och ljussignalernas karakteristik, definieras också på en fil enligt följande exempel: lanelength : 20 lanelength : 8 lightperiod : 14 lightestgreen : 6 lightouthgreen: 4 Dessa rader sätter längden av den första filen (20), längden av filerna framför signalerna (8), signalernas period (14) och signalernas gröntid (6 respektive 4). Observera att raderna kan ligga i godtycklig ordning! För att läsa denna fil ska Javaklassen Properties användas där metoden load gör uppgiften enkel. e minilektionen om den klassen och/eller javadokumentationen Resultat av en körning 1. Initial utskrift av simuleringsparametrarna genom metoden printetup. xempel: 4

imulation parameters: lanelength : 20 lanelength : 8 lightperiod : 14 lightouthgreen: 4 lightestgreen : 6 Traffic periods and probabilities: 30 0.2 0.3 Night 10 0.8 0.8 Morning rush rush 30 0.5 0.5 Day 10 0.7 0.6 Afternoon rush 20 0.6 0.4 vening 2. tatistik innehållande a) genomsnittliga och maximala tider (antal tidssteg) för fordon att passera ljussignalen lightest respektive lightouth, b) andel tidssteg som kön framför vardera signalen varit längre än längden på laneest och laneouth dvs den tid som fildelningen vid X varit blockerad av kö samt c) andel tidssteg som det funnits fordon i kön vid entrypunkten (). amla tiderna för fordon som lämnar systemet i två Measurements-objekt (nätlektion 7), ett för vardera utgång, och använd dessa för att ta fram statistiken till punkt a). (Komplettera klassen Measurements med en metod för att returnera maxvärdet om du inte redan har gjort det.) tatistiken skall skrivas ut av metoden printtatistics i Trafficystem. Metoden skall kunna anropas när som helst under simuleringen. xempel på utskrift: tatistics after 1000 time steps xit west Number: 219 Mean : 26.6 Max : 47 xit south Number: 244 Mean : 34.3 Max : 64 Percent time step with block: 11.0 Percent time step with queue: 5.5 3. n enkel ögonblicksbild av systemet vid ett visst tidssteg. xempel: (G) < > < > Queue: [] (R) < > Denna utskrift skall göras av metoden print som anropas varje tidssteg från imulation. Ögonblicksbilder av systemet vid de tre följande tidsstegen. xempel: (G) < > < > Queue: [] (R) < > 5

(R) < > < > Queue: [] (R) < > (R) < > < > Queue: [] (R) < > Med indata, t.ex. ljussignalernas karakteristik, så att det köar fordon längst till höger. xempel: (R) < > < > Queue: [] (R) < > Lämplig arbetsgång Implementera klasserna Vehicle, Light och Lane. Förse var och en av dessa med en mainmetod som testar och demonstrerar att klasserna fungerar. Börja med att i klassen Trafficystem implementera ett enklare system bestående av N ljussignal, N fil och N kö: lightest lane queue Använd den nedladdade klassen VehicleGenerator för att skapa fordon. Den nedladdade klassen imulation innehåller bl a en main-metod som sätter upp trafiksystemet, driver simuleringen och anropar print-metoder. Dessa två klasser ska användas i oförändrat skick (se dock frivillig modifiering nedan). Implementera sedan systemet med en svängfil. ndast klassen Trafficystem ska behöva modifieras. För att bli godkänd på uppgiften måste 1. programmet fungera enligt specifikation i detta dokument och Javadoc specifikationen för klasserna Light, Lane och Vehicle, 2. koden uppfylla kodstandarden, 3. du kunna förklara hur programmet fungerar och 4. du kunna rita en figur som beskriver hur objekten hänger samman i en konkret situation. 6

Frivillig modifiering imuleringen tidstegas av main-metoden i den nedladdade klassen imulation. Vart hundrade tidsteg skriver metoden ut statistik och frågar användaren om den ska fortsätta. nyggare vore att i stället använda en dialogruta: Just denna ruta är producerad av koden int ans = JOptionPane.showOptionDialog(null, "hat now?", "Done " + time + " steps", JOptionPane.DFAULT_OPTION, JOptionPane.PLAIN_MAG, null, alternatives, alternatives[2]); där alternatives är definierad som tring[] alternatives = {"Quit", "Continue", "tatistics"}; Vaiabeln ans kommer innehålla index för valt alternativ. 7