Code of Scaling Multi-Objective Security Games Provably via Space Discretization Based Evolutionary Search (SDES).
Thank you for your timely attention. We provide a PYTHON version of the MOSG problem simulation environment in the dev_v2
branch, which also contains a simple implementation of the SDES framework. The dev_v2
branch is more concise and more readable.
The experimental environment is consistent with the first work of MOSG, including (i) the randomly-generated security games, i.e.,
This code finishes 7 algorithms, including one implementation of SDES framework based on NSGA-III, 4 algorithms based on
Solution Initialization of the implementation of SDES. As for the method perspective, the discretization component is the core of SDES. As for the code perspective, the discretization component is very easy for implementation, just use the integeral initialization in the pymoo.integercode.SDES_NSGA-III.py, cf. "get_sampling('int_random')".
The Pareto dominance relationship is the solution-level criterion, IGD+ and HV are algorithm-level criteria to determine which algorithm yields batter approximate solution set. As the most commonly used MaOPs performance indicators, HV measures the convergence and diversity of the PF, while IGD+ measures the distance from the reference PF to the PF approximation. The implementation of IGD+ and HV is based on pymoo package.
To find a well-convergent and well-spaced approximate PF, quantitative indicators HV and IGD+ are selected to evaluate convergence and diversity. However, IGD+ evaluation requires reference PF that the randomly-generated security games cannot provide. A feasible method to construct reference PF is to collect a set of PFs produced by all algorithms. Algorithms involved in the PF building include SDES and all
If you run MOSGs.epsilon_constraint.py. or pymoo.integercode.SDES_NSGA-III.py, in the 'Results' folder, the name of result file records the time consume of the method. If you just want to get an overview of the time consumption of SDES without dumping the results, please run the script pymoo.integercode.SDES_NSGA-III_time_400.py.
Note that if you set the pop_size and max_gen parameter to 100, SDES can deal with the
$N=20$ ,$T=1000$ MOSG problem with ease. In our paper, we show that pop_size=max_gen=100 is enough for convergence. You can run pymoo.integercode.SDES_NSGA-III_time_100.py.