310 likes | 442 Views
Practicum I&M College deel 1. Docent: Marjan van den Akker Studentassistent: Leonard Tersteeg http://www.cs.uu.nl/docs/vakken/pim/. Doel:. Verkrijgen van programmeer-ervaring Kennismaking I&M vraagstuk Individuele programmeer-opdracht in Java. Krantenbezorgers op Manhattan:. Opdracht
E N D
Practicum I&MCollege deel 1 Docent: Marjan van den Akker Studentassistent: Leonard Tersteeg http://www.cs.uu.nl/docs/vakken/pim/
Doel: • Verkrijgen van programmeer-ervaring • Kennismaking I&M vraagstuk Individuele programmeer-opdracht in Java
Krantenbezorgers op Manhattan: • Opdracht • Achtergrond • Heuristieken (1) • Werkwijze
Opdracht Gegeven: • Centraal depot • Locaties kranten-abonnees • Krantenbezorgers Depot
Opdracht (2) Ontwikkelen van java-tool voor: Bepalen en weergeven van routes voor de krantenbezorgers zodanig dat de kosten zo laag mogelijk zijn
Verplichte functionaliteit: • Inlezen locaties depot en abonnees en tekenen op scherm • Inlezen van gegeven routes en weergeven op scherm • Bepalen van routes met cheapest insertion heuristiek • Bepalen van routes met simulated annealing • Gebruiker kan routes tekenen, en kosten worden weergegeven.
Optionele functionaliteit • Wegschrijven van routes naar een file • Interactief veranderen van routes • Uitrekenen van routes met nearest neighbour heuristiek • Alternatieve implementatie van simulated annealing of andere heuristiek • Mooie user interface
Aannamen • Locaties zijn gegeven door (x,y)-coördinaat. • Afstand: Manhattan afstand D((a,b),(c,d))= |a-c| + |b-d| • Er zijn 5 krantenbezorgers
Routes • In simulated annealing worden routes veranderd. • Routes worden stapsgewijs opgebouwd en eventueel veranderd Daarom: Kies data-structuur voor route zodanig dat er makkelijk abonnees uitgehaald en toegevoegd kunnen worden.
Variant op Whizzkids prijsvraag: www.win.tue.nl/whizzkids/1996/index.html
Achtergrond • Routes plannen; welk route-plan heeft zo laag mogelijke kosten • Abonnees verdelen over bezorgers • Route bepalen per bezorger • Eén bezorger heeft met n abonnees heeft n! = n(n-1)(n-2) ….2.1 mogelijke routes.
Combinatorische optimalisering • Heel veel oplossingen, welke is de beste? • Exact de beste oplossing vinden: (slim) aftellen; heel veel rekentijd • Heuristiek: vind redelijke oplossing in kortere tijd
Voorbeeld: Handelsreizigersprobleem (TSP) • Gegeven: n steden • D(i.,j)afstand van stad i naar stad j • Wat is de kortste route langs alle steden?
Cheapest insertion heuristiek TSP Initialisatie: ga uit van tour met één punt Uitbreiding: i0 i1, i2,…,im,i0tour langs gedeelte van de steden. • Bepaal voor elke stad j buiten de route hoeveel het kost om deze zo goedkoop mogelijk toe te voegen. Laat j* de stad zijn waarvoor deze kosten minimaal zijn. • Voeg j* zo goedkoop mogelijk toe • Als nog niet alle steden in de tour, ga naar stap I.
Cheapest insertion TSP (2) • Toevoegen van stad j tussen iken ik+1kost I(j,k)=D(ik,j)+ D(j,ik+1) – D(ik, ik+1) • Toevoegen stad j toe op de goedkoopste manier: Bepaal k* waarvoor I(j,k) minimaal is Dus bepaal k* waarvoor: I(j,k*) = mink{0,1,…,m}I(j,k) en voeg j tussen ik* en ik*+1toe.
Cheapest insertion Manhattan • Verdeel abonnees in 5 groepen • Pas cheapest insertion heuristiek toe op elk van de groepen.
Cheapest insertion per groep • Als bij TSP, abonnees zijn steden • Kosten komen overeen met afstand • Bezorger hoeft niet terug naar depot, dus geen volledige tour • Ook mogelijk om abonnee aan het eind toe te voegen
Verdeel abonnees in 5 groepen x y - + (y-y0)(x-x0) Depot (x0,y0) - +
Verdeel abonnees in groepen (2) • x>x0: gesorteerd op (y-y0)(x-x0) • x=x0, y>y0 • x<x0: gesorteerd op (y-y0)(x-x0) • x=x0, y<y0 Verdeel in 5 groepen van gelijke grootte.
Nearest neighbour heuristiek TSP Initialisatie: kies beginpunt Uitbreiding: i1, i2,…,ikroute door gedeelte van de steden. Voeg toe: j met D(ik,j) minimaal.
Nearest neighbour Manhattan • Verdeel abonnees in 5 groepen als bij cheapest insertion • Pas nearest neighbour heuristiek toe op elk van de groepen.
Werkwijze: In te leveren: • Werkende programma-code: alle JCreator files, met commentaar, readme file ! • Verslag • Samenvatting opdracht • Klasse-structuur • Evaluatie In zip archief via submit (opgave 26): www.cs.uu.nl/docs/submit/index.php?opgave Programma moet mondeling worden toegelicht
Beoordeling • Werking van het programma • Structuur • Commentaar • User interface • Milestones • Mondelinge toelichting
Planning • Opdracht uit te voeren in 7 weken • Effort: 160 uur = 7 x 23 uur • Inleverdatum: Uiterlijk vrijdag 28 juni 23.59 uur !!!!! Anders herkansing!!
Milestones: • 22 mei: abonnees inlezen en tekenen • 6 juni: routes inlezen, weergeven, cheapest insertion • 20 juni: simulated annealing Functionaliteit af aan begin practicum Demonsteren en eventueel toelichten Milestone missen = minpunten eindcijfer
Hints • Maak EERST een opzet (klasse-structuur), in te leveren bij eerste milestone! • Versie management !! • Stel werk niet uit!! Beste oplossing: fles wijn !!!!
Vragen Begeleid practicum: • Maandag 15-17, BBL 456,458 (week 22-26) • Woensdag 9-11, BBL 456,458 (week 20, 21) • Donderdag 15-17 , BBL 456,458 (week 20-26) Student-assistent: java, computer Docent: opzet, algoritmen