Code of Scaling Multi-Objective Security Games Provably via Space Discretization Based Evolutionary Search (SDES).
Thank you for your timely attention. At present, our project is ready for run, and the dependencies we use are very common. If you have any questions, you can submit the issue, and we will reply in the first time. It could take months to make the project more readable and prescriptable. Not much effort at the moment, sorry.
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.