01/08/2016


Een agile aanpak voor optimalisatieoplossingen

 

“Hoe zorg ik ervoor dat wij oplossingen leveren die aansluiten bij de daadwerkelijke problematiek die u als klant beleeft; ofwel waar u als klant daadwerkelijk wat aan heeft?”. In de softwareontwikkeling is over deze vraag veel nagedacht na vele successen en minstens even zovele mislukkingen. Dit heeft geresulteerd in de bekende agile ontwikkelmethoden (zoals scrum) die nu standaard zijn in de industrie. Wanneer het gaat om het leveren van wiskundige optimalisatieoplossingen is deze methodiek minder gebruikelijk, terwijl de problematiek veel overeenkomsten heeft. 

Bij CQM hanteren we voor wiskundige plannings- en optimalisatievraagstukken van klanten een ontwikkelmethode gebaseerd op agile principes. Hieronder omschrijf ik de drie stappen in deze aanpak.

 

Agile ontwikkelmethode voor optimalisatie

Wat is het probleem? Vaak is het lastig het optimalisatievraagstuk vooraf in zijn volle breedte nauwkeurig te beschrijven. Communicatie over requirements is daardoor vaak onduidelijk. De vervelende gevolgen hiervan worden bij een optimalisatie blackbox pas laat in het traject zichtbaar. Dit brengt grote risico’s met zich mee, omdat juist dan veel technische keuzes al gemaakt zijn en aanpassingen lastig te maken zijn. Dit is niet anders dan in de softwareontwikkeling. Echter: voor wiskundige optimalisatie geldt dat hier ook nog eens een wiskundige som gemaakt wordt. En het resultaat van die som is pas zichtbaar nadat alles uitgerekend is – aan het eind van het traject; dit versterkt het effect dat pas op het einde duidelijk wordt of in de beginfase de juiste keuzes gemaakt zijn.

 

Een drie-stappenplan

Daarom hanteer ik altijd de volgende driestaps-aanpak:

  • Stap 1: Modelverificatie

Bouw een eenvoudig model waarmee het mogelijk is over het optimalisatieprobleem te praten en waarin de invloed van alle aspecten zichtbaar wordt. Dit zou een simulatie kunnen zijn, maar bij planningen kan dit ook een dashboard met een aantal grafische weergaven van verschillende aspecten van deze planning zijn (denk aan een schema, rooster of grafieken met gebruik van resources over de tijd). Belangrijk is dat alle aspecten die voor het optimalisatiemodel echt van belang zijn, hierin terug komen en geverifieerd kunnen worden. Nu kun je praten over of werking van het model valide is in de ogen van de gebruiker.

  • Stap 2: Basale optimalisatie

In deze stap gaan we zien wat optimalisatie doet en voegen we een relatief eenvoudig optimalisatiealgoritme toe. Dit zonder te proberen het onderste uit de kan te halen qua optimalisatie en zonder rekening te houden met technische randvoorwaarden zoals rekentijd. Meestal is er op basis van benaderende algoritmen wel iets te maken dat een resultaat geeft, zij het niet noodzakelijk erg goed of heel snel. Dat is in deze fase niet erg. Waar het hier om gaat is om verschillende resultaten zichtbaar te maken zodat het gesprek kan worden aangegaan over welk optimalisatieresultaat nu daadwerkelijk beter is dan een ander resultaat. Daarnaast is het mogelijk dat er, wanneer je eenmaal gaat optimaliseren, nieuwe beperkingen op de oplossing naar boven komen die zowel vooraf als in stap 1 nog niet zichtbaar waren. Als  je deze beperkingen tijdig ontdekt, kun je ze nog in het uiteindelijke model toevoegen.

  • Stap 3: De oplossing

Na stappen 1 en 2 is het tijd om de echte oplossing te bouwen: een applicatie die het optimalisatievraagstuk daadwerkelijk oplost. Na dit voorwerk weten we wat er precies van het optimalisatiemodel verwacht wordt. De premissen zijn duidelijk en we kunnen de som oplossen. Met maximale voorkennis kiezen we de juiste techniek om het probleem aan te vliegen. En dat terwijl grote delen van het programmeerwerk rondom de som al gedaan zijn. Programmeerwerk waarin, mits goed uitgevoerd, nog weinig definitieve technische keuzes met invloed op het optimalisatiemodel gemaakt zijn. En die keuzes kun je nu wel maken.

 

Beter en goedkoper optimaliseren

Deze driestaps-aanpak heeft drie belangrijke overeenkomsten met  de agile ontwikkelmethode voor softwareontwikkeling. 

  1. Het maximaliseert de zichtbaarheid van waar de ontwikkelaar mee bezig is om zo samen met de klant controle te houden op de juistheid en toepasbaarheid van wat ontwikkeld wordt. 
  2. Het organiseert het ontwikkelproces met initieel grote flexibiliteit die langzaam afneemt, zodat in beginfase het proces eenvoudig bij te sturen is. 
  3. En het verkleint risico’s, niet alleen door de vorige twee punten, maar ook door onomkeerbare technische keuzes niet eerder te maken dan strikt noodzakelijk. 

Uiteindelijk wordt hierdoor een oplossing voor het optimalisatieprobleem kwalitatief beter en daarnaast ook goedkoper.

 

Praktijkvoorbeeld: aansturing van liften voor AGVs

Een voorbeeld uit de praktijk waarbij we deze ontwikkelmethode en dit stappenplan hanteerden voor de wiskundige plannings- en optimalisatievraagstukken? Lees de case over Frog AGV systems of nog leuker, bekijk dit filmpje. Daar hebben we volgens de opdrachtgever: “…zonder twijfel datgene geleverd dat we beloofd hadden”, binnen budget en met een resultaat waar wij (én de klant) trots op zijn.

 

Meer informatie

Wilt u meer weten over hoe onze agile ontwikkelmethode voor wiskundige optimalisatie ervoor zorgt dat wij precies de oplossing leveren die aansluit bij úw problematiek? Neem dan contact met mij op, ik vertel u er graag meer over!

Peter Hulsen

 

Altijd op de hoogte blijven van nieuwe blogs?  Volg CQM op LinkedIn!

 

Peter Hulsen
Peter Hulsen helpt je graag verder Neem contact op