A discrete-event simulation framework for modeling serverless workflows across the 3D Compute Continuum. Allows the modeling of workflows and their tasks by configuring execution time and bandwidth among others. Each layer of the 3D Compute Continuum can be configured independently.
\frameworkcontains the framework\simulationscontains concrete usages (simulations) of the framework.nsga.pyis the main simulation with multi-objective optimization using NSGA-II.GoogleProofSimulation.pyis a simulation that models a Google Cloud serverless workflow and is used for validationRequestPatternSimulationTest.pyis a simulation to show different request patterns and how to implement custom patternsBayesianSimulation.pyis the predecessor ofnsga.pyand uses bayesian optimization. It is kept for reference and was not used in the final thesis.Simulation.pyis a simple simulation without the optimization, used for running single simulations.
Look into main.py and Simulation.py for a simple example of how to use the framework.
To run the NSGA-II multi-objective optimization simulation run nsga.py. The amount of simulations can be controlled by changing the following lines:
algorithm = NSGA2(pop_size=90) # adjust population size
termination = get_termination("n_gen", 111) # adjust generationswhich results in 90 * 111 = 9990 simulations.
I recommend pymoos documentation https://pymoo.org/getting_started/index.html