TAOP61 Optmerng av realstska sammansatta system Examnator: Ka Holmberg ka.holmberg@lu.se, 013-282867 Kurshemsda: http://courses.ma.lu.se/gu/taop61/ Ltteratur: Ka Holmberg: Optmerng (Lber, 2010/2018) Ka Holmberg: Introdukton tll matematska dekompostonsmetoder för strukturerade optmerngsmodeller (2016), Bokakademn Ka Holmberg: Fallbeskrvnngar + proektnfo Kursdelar: Föreläsnngar 12 st (24 h) nkl presentatoner Lektoner 4 st (8 h) - Börn Morén Proekt 4 st (3 eller 4-personsgrupper) (24 h +?) Examnaton: Skrftlga proektredovsnngar Muntlga proektredovsnngar (en per grupp) + opposton Skrftlg tenta (betyg) Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 1 / 45 Uppdaterngar Specellt med denna kurs Mycket verklghetsnära proekt Avancerade optmerngsmetoder N ska lösa stora svåra problem Proektarbetet prncp sälvständgt N arbetar och redovsar (och tar ansvar) grupp Undervsnngen ger grunder för proekten Undervsnngen är nte heltäckande Proekten nnehåller: Modellerng Programmerng (Matlab/Python) Användande av avancerade program Felsöknng Avrapporterng Tävlng Värsta matematken: Dekompostonsmetoder Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 2 / 45 Kursplan Kompendum om dekompostonsmetoder (många exempel). Lte mer undervsnng om dekompostonsmetoder. Annan utformnng av tentan. (Mndre snack.) Ny kod tll proekt 4. Fler studenter: Två grupper planeras tll samma presentaton. Vare grupp förbereder en presentaton. Båda skckar n presentatonen. En grupp presenterar, den andra opponerar. Fö 1-2: Introdukton, formulerng av strukturerade modeller, dekomposton som de, kolumngenererng. Introdukton tll proekt 1. Le 1: Modellformulerng. La 1-3: Proekt 1 (Returpack). Fö 3: Dynamsk programmerng. Introdukton tll proekt 2. Le 2: Dynamsk programmerng. La 4-6: Proekt 2 (laddhybrd). Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 3 / 45 Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 4 / 45
Kursplan Repetton Fö 4-7: Lagrangedualtet, dekompostonsmetoder. Introdukton tll proekt 3. Le 3: Dekompostonsmetoder. La 7-9: Proekt 3 (elnät). Fö 8: Brevbärarproblem, heurstker, relevanta omgvnngar för lokalsöknng, ruttplanerng. Introdukton tll proekt 4. Le 4: Brevbärarproblem, heurstker. La 10-12: Proekt 4 (snörönng). Fö 9-11: Presentatoner av proekt. N: Modellerng av optmerngsproblem. Matematsk notaton: matrser, vektorer, ndex, summor. Grafsk lösnng. KKT-vllkoren. LP: baslösnng. LP-dual. Brevbärarproblem. Heurstker. Jag: Modellerng av optmerngsproblem. (Matematsk notaton: matrser, vektorer, ndex, summor.) (Brevbärarproblem.) Heurstker. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 5 / 45 Optmerng Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 6 / 45 Långsktga mål med kursen Matematsk bas. Löser verklga problem. Använder specellt utvalda metoder. Specfka svårgheter: Konstruera relevant modell. Ta med relevanta saker (t.ex. kostnader, fysk, mlö). Lösa modellen. Väla/använda lämplg metod. Kontrollera lösnngen. Konstgheter lösnngen kan tyda på brster modell och/eller data. Känna gen komplexa optmerngsproblem. Kunna formulera krånglga problem matematskt. Förstå prncperna bakom vssa avancerade metoder. Kunna väla lämplg lösnngsmetod. Kunna använda tllgänglg programvara. Medverka vd utvecklng av ny programvara. (Räkna för hand.) Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 7 / 45 Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 8 / 45
Ltet (fångt) exempel: Gör en plåtlåda med maxmal volym, då total plåtyta nte är större 100 cm 2 och höden nte överstger 4 cm. Lådan x3 Varabler (det v ska bestämma): x 1 : höd ( cm) x 2 : bredd ( cm) x 3 : dup ( cm) x1 x2 Målfunkton: Max V = x 1 x 2 x 3 (maxmera volymen) Bvllkor: 2x 1 x 2 + 2x 1 x 3 + 2x 2 x 3 100 (begränsad yta) x 1 4 (begränsad höd) x 1 0, x 2 0, x 3 0 (fyskalska begränsnngar, negatva mått fnns e) Optmallösnng: x 1 = 4 cm (höd) x 2 = 4.124 cm (bredd) x 3 = 4.124 cm (dup) Volym: 68.031 cm 3. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 9 / 45 Ltet dumt exempel: Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 10 / 45 Hur kan man msslyckas? Msslyckad modellerng: Glömt bvllkoret på begränsad area. Föld: Optmum obegränsat, dvs. oändlgt stor låda. Glömt kraven x 1 0, x 2 0, x 3 0. Föld: Optmum obegränsat, låt t.ex. x 1 och x 2 bl negatva. Då blr volymen postv och stor, medan arean blr negatv. I båda fallen ser v att lösnngen är dum. Men den är optmal. 1 Lös problemet felaktgt, dvs. fnn en lösnng som nte är optmal, utan sämre och/eller otllåten. Dålg metod. 2 Lös fel problem, dvs. fnn korrekt optmallösnng tll fel modell. Dålg modell. 3 Både 1 och 2, dvs. fnn fel lösnng tll fel modell. Dålg modell och metod. 2 är vanlgast. 2 och 3 är svåra att upptäcka/korrgera. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 11 / 45 Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 12 / 45
Hur man använder optmerng: Operatonanalys Mål när man gör modellen 1 Formulerng av problemet. Fnns det ett problem? Vad vll man optmera? Vlka begränsnngar fnns? 2 Konstrukton av en matematsk modell. Defnera varabler, målfunkton samt bvllkor. Är resultatet en LP-, ILP eller HP-modell? 3 Insamlng av data. 4 Lösnng av det matematska problemet. Väl lämplg optmerngsmetod. 5 Utvärderng av resultat (och modell). Är resultatet realstskt, lämplgt, vettgt, bra? Om nte, gå tll 2. 6 Använd resultatet. Få med allt relevant, dvs. som påverkar vlken lösnng som är optmal. Undvk det som är rrelevant, dvs. som nte påverkar vlken lösnng som är optmal. Modellen ska vara korrekt, dvs. göra det man vll att den ska göra. Modellen ska vara lösbar, dvs. gå att lösa på rmlg/tllgänglg td. Data (koeffcenter) ska kunna tas fram. De förenklngar man kan tvngas göra ska vara medvetna och genomtänkta. Undvk onödga komplkatoner, såsom olnärteter. Väl målfunkton. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 13 / 45 Modellerng Modellerng av komplexa sammansatta stuatoner Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 14 / 45 Modellerng: Exempel V ska skcka varor från fabrker,, va lager,, tll affärer, k. 20 fabrker, 10 lager, 40 affärer. k (nästan alla realstska problem är sådana) kräver flera olka sorters varabler och flera olka grupper av bvllkor. Mölg varabeldefnton: x k = antal enheter som skckas från fabrk va lager tll affär k (8000) Bättre: z = antal enheter som skckas från fabrk tll lager (200) y k = antal enheter som skckas från lager tll affär k (400) Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 15 / 45 Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 16 / 45
Modellerng: Exempel Fabrk har S enheter tllgänglga, affär k vll ha D k enheter, och lager kan hantera maxmalt L enheter. Med x: x k S k x k = D k x k L 20+40+10=70 bvllkor k för alla för alla k för alla Bvllkorsmatrsens storlek blr 70 x 8000. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 17 / 45 Modellerng: Exempel Omvandlng: Varorna görs om lagren, så att en enhet n bara blr 0.7 enheter ut. (Ibland är flödet på ena sdan en annan sort än flödet på andra.) Ändrng av bvllkor: z = k ersätts av 0.7z = k Mer generellt: a z = k y k y k y k för alla för alla för alla Modellerng: Exempel Fabrk har S enheter tllgänglga, affär k vll ha D k enheter, och lager kan hantera maxmalt L enheter. Med z och y: z S y k = D k z = k z L 20+40+10+10=80 bvllkor för alla y k för alla k för alla för alla Bvllkorsmatrsens storlek blr 80 x 600. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 18 / 45 Modellerng: Exempel Flera tdsperoder: z t yk t = antal enheter som skckas från fabrk tll lager under tdsperod t = antal enheter som skckas från lager tll affär k under tdsperod t Tllgång och efterfrågan kan varera: z t S t för alla och t y t k = Dt k z t = k z t L y t k för alla k och t för alla och t för alla och t Notera: 100 tdsperoder ger 100 gånger flera varabler. (60 000) Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 19 / 45 Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 20 / 45
Modellerng: Exempel Dekomposton Men problemet kan lösas separat för vare tdsperod om ngen bnder samman tdsperoderna, såsom lagerhållnng: w t = antal enheter som lagras lager mellan tdsperod t och t + 1 w t 1 + z t = k yk t + w t w t K för alla och t (maxlager) för alla och t V kommer senare att gå genom s.k. dekompostonsmetoder som är ett angreppssätt för att lösa problem genom att dekomponera dem mndre lättare btar. Detta görs genom att relaxera vssa bvllkor eller genom att fxera vssa varabler. Därför kan man fundera på vlka bvllkor som skulle kunna relaxeras eller vlka varabler som skulle kunna fxeras, så att man får ett mer lättlöst subproblem för olka strukturerade problem. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 21 / 45 Modellerng: Lokalserngsproblemet Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 22 / 45 Modellerng: Lokalserngsproblemet Anläggnngslokalserng (faclty locaton): V vll fnna bästa platserna för att lokalsera vssa anläggnngar, t.ex. fabrker. I det dskreta lokalserngsproblemet har man ett antal mölga platser för lokalserngen, och man ska väla ut vlken eller vlka av dessa platser som ska användas, dvs. vlka av de mölga fabrkerna som ska byggas. I det kontnuerlga lokalserngsproblemet ska man placera en eller flera anläggnngar var som helst ett område. I detta problem är koordnaterna för anläggnngarna varabler. V har ett antal kunder, med specfcerad efterfrågan. Målet är att tllgodose all efterfrågan tll mnsta mölga kostnad. Målfunktonen nnehåller både kostnader för att transportera varorna och för att bygga/nstallera/köpa anläggnngarna. En vktg aspekt är de fasta kostnaderna på anläggnngarna. V exemplferar med fabrker som anläggnngar, men det kan lka gärna handla om att nstallera många andra saker, såsom telekomutrustnng el.dyl. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 23 / 45 Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 24 / 45
Modellerng: Okapacterad lokalserng V har m mölga platser för fabrkerna, och n kunder. Det kostar f att bygga en fabrk på plats. Det kostar c att transportera kund :s hela behov, d, från plats. V antar att vare fabrk har mycket stor kapactet. Varabeldefnton: { 1 om en fabrk byggs på plats y = 0 om nte x är andelen av kund :s behov som tas från fabrken på plats. Den matematska modellen ska nnehålla en målfunkton med alla kostnader, samt bvllkor som ser tll att kunderna blr nöda, och att v bara använder fabrker som byggs. Modellerng: Okapacterad lokalserng Matematsk modell för det okapacterade lokalserngsproblemet: m n m v = mn c x + f y då =1 =1 =1 m x = 1 (1) =1 x y, (2) x 0, (3) y {0, 1} (4) Bvllkor 1 ser tll att kundernas efterfrågan tllgodoses. Bvllkor 2 förbuder transporter från platser utan fabrker. Man skulle kunna lägga tll bvllkoret: m y 1 (5) =1 som säger att mnst en fabrk måste byggas. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 25 / 45 Modellerng: Okapacterad lokalserng Om man fxerar y (tll en bnär vektor) dvs. bestämmer var fabrker ska byggas, och låter I vara ndex för platser med fabrker (dvs. I = { : y = 1}), fås drekt x = 0 för alla I. Resten av problemet löses enkelt genom att vare kund får sna varor av den byggda fabrken med lägst transportkostnad: xî = d där î fås av mn c. I Slutsatser: Om y är heltal, blr x automatskt heltal. Om y fxeras blr problemet lättlöst. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 27 / 45 Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 26 / 45 Modellerng: Kapacterad lokalserng Om fabrken som byggs på plats har en begränsad kapactet, s, fås det kapacterade lokalserngsproblemet. m n m v = mn c x + f y då =1 =1 =1 m x = 1 (1) =1 n d x s y (2) =1 x y, (3) x 0, (4) y {0, 1} (5) V måste lägga tll bvllkor 2, som ser tll att en fabrk nte skckar mer än den kan producera. (Bvllkor 3 är nte nödvändgt, men kan hälpa, se lab 4 TAOP88.) Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 28 / 45
Modellerng: Kapacterad lokalserng Om man fxerar y, fås ett transportproblem (mnkostnadsflödesproblem). Relatvt enkelt, men nte lka lätt som utan kapacteter. x blr fortfarande heltal. Man skulle kunna lägga tll fölande bvllkor: m s y D TOT (6) =1 där D TOT = d. Bvllkoret säger att den totala kapacteten hos de byggda fabrkerna måste vara mnst lka stor som den totala efterfrågan. Modellerng: Flödesproblem med fasta kostnader Vanlgt mnkostnadsflödesproblem, men för att kunna använda en båge måste man bygga/nstallera/köpa den, dvs. betala en fast kostnad. v = mn c x + s.t. (,) A :(,) A x (,) A :(,) A f y x = b N (1) x d y (, ) A (2) x 0 (, ) A (3) y {0, 1} (, ) A (4) (FCNF) Om man fxerar y, fås ett vanlgt flödesproblem, men bara med de bågar som har y = 1. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 29 / 45 Modellerng: Flervaruflödesproblemet Ibland består varorna ett flödesproblem av flera olka sorter. V får då det s.k. flervaruflödesproblemet. V har noderna N, bågarna A och varusorterna C. Kostnaden för att transportera en enhet av varusort k på båge (, ) är c k (och antas vara lnär). Nettotllgången av varusort k nod betecknas med r k (tllgång postv, efterfrågan negatv). Båge (, ) har kapactet b (gemensamt för alla varusorter). Varabeldefnton: x k är flödet av varusort k båge (, ). Målet är att mnmera kostnaderna då alla nodämvktvllkor uppfylls. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 31 / 45 Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 30 / 45 Modellerng: Flervaruflödesproblemet v = mn s.t. k C (,) A :(,) A x k c k x k :(,) A x k = r k N, k C (1) x k b (, ) A (2) k C Bvllkor 1 garanterar nodämvkt. x k 0 (, ) A, k C (3) Bvllkor 2 ser tll att bågkapacteterna nte överskrds. LP-problem med A C varabler och N C + A bvllkor. (1000 bågar, 100 noder och 100 varusorter ger 100 000 varabler och 11 000 bvllkor.) Ibland används varusorterna för att särskla start- och slutnoder. Då kan antalet varusorter vara storleksordnngen N 2. (1000 bågar och 100 noder ger då 10 000 varusorter och 10 000 000 varabler.) Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 32 / 45
Modellerng: Nätverksdesgn I nätverksdesgnproblemet är det bågarna som ska byggas/nstalleras/köpas nnan de får användas. Man har alltså fasta kostnader på bågarna (plus rörlga). V har noderna N, bågarna A samt varusorterna C. Varusort k har en källa, o(k), och en sänka, d(k), mellan vlka behovet är r k. Kostnaden för att transportera en enhet av varusort k båge (, ) är c k, och antas öka lnärt. Dessutom måste en fast kostnad, f, betalas om något ska skckas båge (, ) (dvs. om båge (, ) ska öppnas). Varabeldefnton: x k är flödet av varusort k båge (, ) { 1 om båge (, ) ska användas y = 0 om nte Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 33 / 45 Modellerng: Okapacterad nätverksdesgn I detta problem vsar det sg att alla r k enheterna av varusort k kommer att skckas samma väg. Om man fxerar y, så är det gvet vlka bågar som får användas. Eftersom bågarna har hög kapactet, fnns nte längre någon kopplng mellan varusorterna. Optmerngen kan då göras separat för vare varusort. Man behöver alltså bara lösa C st vanlga mnkostnadsflödesproblem. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 35 / 45 Modellerng: Okapacterad nätverksdesgn Den matematska modellen för nätverksdesgnproblemet, då bågarna är okapacterade, blr: v = mn c k x k + f y s.t. k C (,) A :(,) A x k :(,) A (,) A x k = b k N, k C (1) x k d ky (, ) A, k C (2) x k 0 (, ) A, k C (3) y {0, 1} (, ) A (4) r k om = o(k) där d k = r k och b k = r k om = d(k) 0 annars Bvllkor 1 garanterar nodämvkt, medan bvllkor 2 bara tllåter flöde på öppnade bågar. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 34 / 45 Modellerng: Kapacterad nätverksdesgn Om bågarna har begränsad kapactet, så kanske nte hela efterfrågan r k kan skckas samma väg. Vare båge (, ) har då en begränsad kapactet, u, på totalflödet bågen. v = mn c k x k + f y s.t. k C (,) A :(,) A x k :(,) A (,) A x k = b k N, k C (1) x k u y (, ) A (2) k C x k d ky (, ) A, k C (3) x k 0 (, ) A, k C (4) y {0, 1} (, ) A (5) r k om = o(k) där d k = mn(r k, u ) och b k = r k om = d(k) 0 annars Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 36 / 45
Modellerng: Kapacterad nätverksdesgn Modellerng: Komplex desgn Bvllkor 2 ser nu tll att flödet på vare båge nte överskrder kapacteten. Om man fxerar y detta problem, fås ett flervaruflödesproblem, eftersom de olka varusorterna fortfarande kopplas hop genom kapacteterna. Detta är alltså ett betydlgt svårare problem att lösa. Det mest generella och komplexa problemet uppstår då man ska desgna en hel verksamhet, t.ex. en hel fabrk. Man kan då ha fasta kostnader på både noder och bågar ett nätverk. Dessutom har man flera olka varusorter. En ytterlgare komplkaton är att en varusort kan omvandlas tll en annan, och att mängden därvd förändras. Detta gör att vssa koeffcenter behövs omvandlngsvllkoren, och den rena nätverkstrukturen störs ytterlgare. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 37 / 45 Rmlghetsbedömnng Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 38 / 45 Rmlghetsbedömnng När man har löst ett stort komplcerat problem måste man försöka avgöra om lösnngen är korrekt, dvs. om modellen är korrekt. Det är ofta lättare att se konstgheter en lösnngen än en modell. Hur kan man göra en rmlghetsbedömnng av en lösnng? Studera lösnngen och vad den nnebär. Lös ett förenklat problem (på annat sätt). Studera en relaxaton av problemet. Ger en optmstsk uppskattnng. Studera en restrkton av problemet. Ger en pessmstsk uppskattnng. Exempel: Lokalserngsproblemet Leveranser från obyggd fabrk. Leveranser utöver kapacteten från byggd fabrk. Kund som blr utan leveranser. Kund som nte får efterfrågan tllgodosedd. Fabrk som byggs men nte gör några leveranser. Relaxaton: Skcka tll vare kund med bllgaste transportväg. Öppna bllgaste fabrkerna (tlls total kapactet är mnst lka med total efterfrågan). Restrkton: Fnn en tllåten lösnng. (Heurstkerna lab 4 TAOP88.) Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 39 / 45 Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 40 / 45
GMPL GMPL är ett modellerngsspråk. Man defnerar sn modell med mängder och summor så att det lknar en modell matematsk form. Modellen defneras för sg och data för sg. Flexbelt. En modellfl kan användas tll flera olka datafler. GLPK är paketet som nnehåller GMPL och lösaren glpsol, som körs en termnal. AMPL är ett nästan dentskt modellerngsspråk. Men kommersellt. AMPL kan kopplas tll olka lösare, bl.a. CPLEX. Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 41 / 45 GMPL: Exempel I modellflen: Parametrar: param nbutk; param ngross; Mängder: set BUTIK := 1..nbutk; set GROSS := 1..ngross; Data vektorform: param behov{butik}; Data matrsform: param dstbug{butik,gross}; Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 43 / 45 GMPL Dela på modellfl och datafl. Skrv en modellfl med generella parametrar som kan köras med olka datafler. I GMPL/AMPL måste alla data defneras modellflen nnan de används modellen, och ges numerska data dataflen. Sedan kör man glpsol -m mnmodellfl.mod -d mndatafl.dat -o mnutfl.txt Det kommer utskrfter på skärmen, bl.a. INTEGER OPTIMAL SOLUTION FOUND eller PROBLEM HAS NO PRIMAL FEASIBLE SOLUTION. Lösnngen hamnar på flen mnutfl.txt (nte på skärmen). Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 42 / 45 GMPL: Exempel I dataflen: param nbutk := 4; param ngross := 3; Data vektorform: param : behov := 1 100 2 100 3 100 4 100; Data matrsform: param dstbug : 1 2 3 := 1 10 13 22 2 13 13 26 3 20 23 29 4 17 23 12; Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 44 / 45
GMPL: Exempel I modellflen: Varabler: var xbg{butik,gross} >=0; var useg{gross} bnary; Målfunkton: mnmze cost: sum{ n BUTIK, n GROSS} tomkost*dstbug[,]*xbg[,] + sum{ n GROSS} fkostg[]*useg[]; Bvllkor: subect to nbutk{ n BUTIK}: sum{ n GROSS} xbg[,] = behov[]; subect to grosskaptom{ n GROSS}: sum{ n BUTIK} xbg[,] <= gkaptom[]*useg[]; Ka Holmberg (LU) TAOP61 Optmerng 30 oktober 2018 45 / 45