The Hippopotamus Optimization (HO) Algorithm
The core of this research framework is the Hippopotamus Optimization (HO) algorithm, a nature-inspired metaheuristic algorithm that models the social behavior of hippos to solve complex optimization problems.Core Concepts
- Population: A set of “hippos,” where each hippo represents a potential solution to the VM placement problem.
- Fitness: A multi-objective function that evaluates the quality of each solution based on resource utilization, power consumption, and SLA violations.
- Position Update: The process by which hippos move in the search space, influenced by the “leader” (the best solution) and “prey” (random solutions).
Implementation Details
The HO algorithm is implemented in theorg.puneet.cloudsimplus.hiippo.algorithm package, with the following key classes:
HippopotamusOptimization.java: The main class that orchestrates the optimization process.Hippopotamus.java: Represents a single solution (a hippo) in the population.HippopotamusParameters.java: Encapsulates all the tunable parameters for the HO algorithm.
Simulation Workflow
The simulation is coordinated by theExperimentCoordinator.java class, which manages the entire experimental workflow.
The Workflow Steps
- Configuration: The coordinator loads the experimental setup from
config.properties, including the scenarios and algorithms to be tested. - Scenario Generation: For each scenario, the
TestScenarios.javaclass creates a set of VMs and hosts with specific configurations. - Experiment Execution: The
ExperimentRunner.javaclass runs the simulation for each algorithm and scenario, for a specified number of replications. - Metrics Collection: During the simulation, the
MetricsCollector.javaclass gathers all the relevant performance data. - Results Writing: The
CSVResultsWriter.javaclass writes all the collected data to CSV files in theresults/directory. - Statistical Analysis: Finally, the
ComparisonAnalyzer.javaclass performs statistical tests to compare the performance of the different algorithms.