I kursen börjar vi med att studera diskret händelsesimulering. Studenterna lär sig att skriva händelse- och processimuleringsprogram i generella programspråk som Java. Uppskattning av noggrannhet, generering av slumptal, metoder för att studera sällsynta händelser, verifiering och validering studeras också.
Sedan fortsätter vi med optimeringslära. Vi studerar konvexa problem och deras dualer. Vi fortsätter med linjär programmering, simplexalgoritmen och kolumngenerering. Vi visar hur icke-linjäritet kan modelleras. Därefter fortsätter vi med heltalsprogrammering, dess relation till linjär optimering och branch-and-bound-metoden för heltalsprogrammering. Vi nämner också cutting plane-metoden för heltalsprogrammering och ger en översikt av komplexitetsteorin som omfattar polynomiell komplexitet och NP-hardness.
Slutligen betraktar vi heuristiska metoder för kombinatoriska optimeringsproblem varvid vi betraktar dem som en metod att optimera via simulering. Lokal sökning och hur slumpmässighet spelar in förklaras. Grundläggande meta-heuristiska metoder so simulated annealing, evolutionära algoritmer och GRASP förklaras. Vi illustrerar också Monte Carlo-metoder.