Skip to content

This repo implements multi-objective optimization algorithms to solve the Multi-Objective Next Release Problem (MONRP), balancing cost, stakeholder satisfaction, and requirement dependencies for a software release. It includes both the algorithms and the experiments used for evaluation across multiple studies.

License

Notifications You must be signed in to change notification settings

UCLM-SIMD/MONRP

Repository files navigation

Multi-Objective Next Release Problem (MONRP)

Python 3.8

First steps

First, install dependencies: pip install -r requirements.txt

Datasets

Datasets are .json files, described at: https://doi.org/10.5281/zenodo.7247877


Algorithms

All algorithms inherit the base class:

Algorithm(dataset_name:str="1", random_seed:int=None, debug_mode:bool=False, tackle_dependencies:bool=False)

Common parameters for all algorithms are:

  • dataset_name: for the specific dataset to be loaded
  • random_seed: for deterministic executions
  • debug_mode: to allow the algorithm to save intermediate results for further debugging of the execution
  • tackle_dependencies: to solve the problem taking into account interactions between requirements.

Common methods for all algorithms are:

  • set_seed(seed): for setting random seed
  • reset(): for clearing algorithm values after execution
  • run(): for running the algorithm
  • get_name(): to obtain its descriptive name
  • stop_criterion(): defines when the execution should stop

Current algorithm families are the following:

Genetic (abstract)

Implements common operators of genetic algorithms, such as initialization, basic selection, crossover, mutation and replacement operators. Specific implementations may override or use new operators.

Specific parameters for genetic algorithms are the following:

population_length: int,
max_generations: int,
max_evaluations: int,
selection: str,
selection_candidates: int,
crossover: str,
crossover_prob: float,
mutation: str,
mutation_prob: float,
replacement: str,

GeneticNDS

Single-Objective genetic algorithm that updates a set of nondominated solutions after each generation.

EDA

Estimation of Distribution Algorithms.

Specific parameters for EDA are the following:

population_length: int,
max_generations: int,
max_evaluations: int,

Common methods for EDAs are:

  • generate_initial_population()
  • select_individuals():
  • learn_probability_model():
  • sample_new_population():

UMDA (univariate)

Univariate Marginal Distribution Algorithm.

Specific implementations for UDMA are:

  • learn_probability_model():
  • sample_new_population():

FEDA (univariate)

Univariate Marginal Distribution Algorithm.

Specific implementations for FEDA are:

  • learn_probability_model():
  • sample_new_population():

PBIL (univariate)

Population Based Incremental Learning

Specific implementations for PBIL are:

  • select_individuals():
  • learn_probability_model():
  • sample_new_population():

Specific methods for PBIL are:

  • initialize_probability_vector():

Visual indicators (scatter plots) of experiments with 12 datasets and 4 algorithms (GA, UMDA, PBIL and FEDA)

Dataset a1 scatter_a1 Dataset a2 scatter_a2 Dataset a3 scatter_a3 Dataset a4 scatter_a4

Dataset c1 scatter_c1 Dataset c2 scatter_c2 Dataset c3 scatter_c3 Dataset c4 scatter_c4

Dataset d1 scatter_d1 Dataset d2 scatter_d2 Dataset d3 scatter_d3 Dataset d4 scatter_d4

Dataset p1 scatter_p1 Dataset p2 scatter_p2

About

This repo implements multi-objective optimization algorithms to solve the Multi-Objective Next Release Problem (MONRP), balancing cost, stakeholder satisfaction, and requirement dependencies for a software release. It includes both the algorithms and the experiments used for evaluation across multiple studies.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •