Academia.eduAcademia.edu

Isula: A java framework for ant colony algorithms

2020, SoftwareX

https://doi.org/10.1016/j.softx.2020.100400

Ant Colony Optimisation (ACO) algorithms emulate the foraging behaviour of ants to solve optimisation problems. They have proven effective in both academic and industrial settings. ACO algorithms share many features among them. Isula encapsulates these commonalities and exposes them for reuse in the form of a Java library. In this paper, we use the travelling salesman problem and image segmentation to showcase the framework capabilities using three top-performing ACO algorithms implemented in Isula. This framework is an open-source project available at GitHub, where is currently the most popular ACO java repository.

SoftwareX 11 (2020) 100400 Contents lists available at ScienceDirect SoftwareX journal homepage: www.elsevier.com/locate/softx Original software publication Isula: A java framework for ant colony algorithms ∗ Carlos Gavidia-Calderon a , , César Beltrán Castañon b a b University College London, Department of Computer Science, Gower Street, London, UK Pontificia Universidad Catolica del Peru, Department of Engineering, Av. Universitaria 1801 San Miguel, Lima, Peru article info Article history: Received 5 March 2019 Received in revised form 25 November 2019 Accepted 10 January 2020 Keywords: Ant colony optimisation Java Travelling salesman problem Image segmentation a b s t r a c t Ant Colony Optimisation (ACO) algorithms emulate the foraging behaviour of ants to solve optimisation problems. They have proven effective in both academic and industrial settings. ACO algorithms share many features among them. Isula encapsulates these commonalities and exposes them for reuse in the form of a Java library. In this paper, we use the travelling salesman problem and image segmentation to showcase the framework capabilities using three top-performing ACO algorithms implemented in Isula. This framework is an open-source project available at GitHub, where is currently the most popular ACO java repository. © 2020 The Authors. Published by Elsevier B.V. This is an open access article under the CC BY license (http://creativecommons.org/licenses/by/4.0/). Code metadata Current code version Permanent link to code/repository used for this code version Legal Code Licence Code versioning system used Software code languages, tools, and services used Compilation requirements, operating environments & dependencies If available Link to developer documentation/manual Support email for questions 1. Motivation and significance Ant Colony Optimisation (ACO) algorithms, proposed by Dorigo et al. [1], solve optimisation problems by emulating the behaviour of ants in nature. When ants traverse a territory searching for food, they mark their path with pheromone. After they have located food, they make several trips from the food source to the nest, increasing the intensity of their path’s pheromone trail. In case several ants have located the same food source and are also transporting food to the nest, the pheromone trail of the ant with the shortest path is more intense. The shortest path, in the same amount of time, has more two-way trips than longer paths that require more time for their traversal. Fellow ants are sensitive to pheromone and tend to select the path with the most intense pheromone trail. This behaviour also increases the pheromone intensity of the shortest path. Over time, the whole colony converges towards the optimal solution. ∗ Corresponding author. E-mail addresses: carlos.gavidia.15@ucl.ac.uk (C. Gavidia-Calderon), cbeltran@pucp.pe (C. Beltrán Castañon). v1.0 https://github.com/ElsevierSoftwareX/ SOFTX_2019_61 MIT Licence git Java Apache Maven http://cptanalatriste.github.io/isula/doc/ carlos.gavidia@pucp.edu.pe ACO algorithms are well-suited for generating high-quality solutions for computationally expensive problems. They have been successfully applied to a wide array of domains. Let us take path planning, an NP-complete problem, as an example. ACO algorithms have proven effective in producing short and collision-free routes [2,3], even in dynamic environments [4]. ACO algorithms are not limited to academic research: practitioners are using them in real-world scenarios – like industry and telecommunications – to solve optimisation problems [5]. Ant System (AS) is the first ACO algorithm proposed [1]. Researchers later developed new algorithms – also inspired by ant behaviour – either by improving, extending or adapting AS. Although these algorithms differ, given their common inspiration they have several commonalities. We rely on this reutilisation potential to offer a software framework – called Isula1 – for quick implementation of ant colony algorithms [6]. We choose Java as programming language since is the most popular programming language at the time of this publication [7]. Isula includes several 1 The Paraponera clavata species of ant is called ‘‘isula’’ in Peru. https://doi.org/10.1016/j.softx.2020.100400 2352-7110/© 2020 The Authors. Published by Elsevier B.V. This is an open access article under the CC BY license (http://creativecommons.org/licenses/by/4.0/). 2 C. Gavidia-Calderon and C. Beltrán Castañon / SoftwareX 11 (2020) 100400 Table 1 Daemon actions and policies included in Isula. # Isula type Summary 1 Offline Pheromone Update (AS) After each ant has built a solution, it deposits the corresponding pheromone increment to each solution component. 2 Perform Evaporation (AS) Applies the evaporation ratio, hence reducing the pheromone amount in all the elements of the pheromone matrix. 3 Random Node Selection (AS) Dictates how ants select the components to add to their current solution. The ant selects the component at random, where the probability of selection is a function of the pheromone value of the component and its heuristic information. 4 Online Pheromone Update (ACS) While antsystem.OfflinePheromoneUpdate updates the pheromone values when the whole colony has finished building solutions, this ant policy updates the value as soon as individual ants finish constructing a candidate solution. 5 Pseudo-Random Node Selection (ACS) While adding a component to a solution, the ant faces two possible options which it chooses at random: adopt antsystem.RandomNodeSelection or select the node with best values regarding pheromone and heuristic information. 6 Start Pheromone Matrix (MMAS) MMAS keeps pheromone values between a range, restricting the evaporation and deposit of pheromone. At the beginning of the algorithm, this daemon action sets pheromones values to the maximum value. 7 Update Pheromone Matrix (MMAS) A MMAS implementation only allows the best performing ant to deposit pheromone at the end of the iteration. building blocks of ACO algorithms, which can be used out-ofthe box or adapted in case the problem requires it. Among the building blocks available in the framework, we can mention node selection policies, pheromone update strategies, and ant colony initialisation procedures. Table 1 contains a subset of them. Isula currently supports the three top performing ACO algorithms [5]: Ant System (AS), Ant Colony Systems (ACS) and Max–Min Ant System (MMAS). We envision two use cases for Isula: (1) use Isula implementations of ACO algorithms out-of-the box, and (2) Built new ACO algorithms by reusing and adapting components already available in the framework. Section 2 illustrates the first use case. The Travelling Salesman Problem (TSP) is usually used to showcase ACO algorithms [8]. We approach it to illustrate the framework internals by solving a TSP instance using AS. We also show how to reutilise the code we built for AS for a quick implementation of ACS for TSP. Section 3 shows the second use case. We describe how to develop a medical image segmentation method by composing and adapting Isula components. We segment a brain MRI (magnetic resonance image) by combining two ant colony algorithms: an image thresholding algorithm [9] and an image segmentation one [10]. Our contribution follows: • An introduction to Isula, a java framework for ACO algorithms (Section 2.1). • A detailed description of how to use Isula’s components outof-the box to solve the travelling salesman problem using two well-established ACO algorithms (Ant System and Ant Colony System in Section 2.2). • A complete example of how to use Isula to develop new algorithms by composing and adapting algorithm components. We implemented an brain MRI segmentation method (Section 3). 2. Software description In this section, we start by giving a high-level overview of the main characteristics of the algorithms in the ACO metaheuristic, to later use the Travelling Salesman Problem to illustrate how to implement Java ACO algorithms using the Isula framework. Algorithm 1 The ACO metaheuristic is pseudo-code 1: 2: 3: 4: 5: procedure ACOMetaheuristic procedure ScheduleActivities ConstructAntSolutions() UpdatePheromones() DaemonActions() ▷ Optional this framework [11]. The algorithms that belong to the metaheuristic follow the structure depicted in Algorithm 1, taken from the book from Dorigo [8]. The ScheduleActivities function coordinates algorithm execution. During an iteration, the artificial ants traverse the problem graph and build a candidate solution each. While traversing the problem graph, ants randomly select which solution component to add to the candidate solution under construction. Depending on the algorithm, solution components can correspond to nodes or edges of the problem graph. The transition probability of each solution component guides this random selection process. This probability is a function the amount of pheromone on the solution component and a domain-dependent metric, also called heuristic information. The ConstructAntSolutions function represents the solution building process in Algorithm 1. The solution building process impacts the amount of pheromone available in each solution component. Ants deposit pheromone on the components of their candidate solution. Also, pheromone evaporation can be part of ACO algorithms to avoid rapid convergence and favour graph exploration. The UpdatePheromones function controls the pheromone update process. Finally, the DaemonActions functions implement behaviours on a global scale, instead of at ant-level. Isula’s goal is to accelerate the programming of instances of the ACO metaheuristic. It is a Java library that contains working implementations of the most common components of ACO algorithms. We show how to use Isula to solve optimisation problems in Fig. 1. It involves four steps: Environment Definition Define a problem context by extending the Environment class. 2.1. Implementing ACO algorithms with isula Artificial Ant Definition Extend the Ant class to provide information necessary for building solutions. Dorigo et al. proposed the ACO metaheuristic as an algorithmic framework for ACO algorithms, who would be then instances of Algorithm Configuration Configure an AcoProblemSolver instance according to the algorithm to use. This includes C. Gavidia-Calderon and C. Beltrán Castañon / SoftwareX 11 (2020) 100400 3 Fig. 1. Solving optimisation problems with Isula. This process has four steps: environment definition, artificial ant definition, algorithm configuration and algorithm execution. daemon actions, node selection policies, and parameters like number of ants or evaporation rate. We show a subset of the types available at Isula in Table 1. Algorithm Execution Call the AcoProblemSolver. solveProblem() method to obtain a result. In the next subsection, we take a deep look at Isula internals and see how researchers and practitioners can use it to solve combinatorial optimisation problems. 2.2. Solving the Travelling Salesman Problem TspProblemConfiguration config = new TspProblemConfiguration(problem); AntColony<Integer, TspEnvironment> colony = getAntColony(config); TspEnvironment env = new TspEnvironment(problem); AcoProblemSolver<Integer, TspEnvironment> solver = new AcoProblemSolver<>(); solver.initialize(env, colony, config); solver.addDaemonActions(new StartPheromoneMatrix<Integer, TspEnvironment>(), new PerformEvaporation<Integer, TspEnvironment>()); solver.addDaemonActions(getPheromoneUpdatePolicy()); Let us explore how to approach optimisation problems with Isula by solving an instance of the Travelling Salesman Problem (TSP). Given a list of cities the salesman needs to visit, we want to know in what order to visit them – i.e obtain a permutation of the cities – in order to minimise the distance travelled. Environment and artificial ant definition. The first two steps for Isula problem solving require the definition of the environment and artificial ants. In the case of TSP, the environment would contain a matrix-like data structure for the storage of distance between cities, as well as its corresponding pheromone matrix. An artificial ant for solving TSP would need information about the distance travelled so far, and if it has already traversed all cities. For TSP, we developed AntForTsp and TspEnvironment, extending the abstract classes Ant and Environment available in the framework. These classes are available in GitHub at https://github.com/cptanalatriste/aco-tsp, along with all the code contained in this section. Algorithm configuration. Listing 1 address the algorithm configuration step using the Ant System (AS) algorithm [1] to solve the berlin52 problem of the TSPLIB library [12]. Listing 1: Solving the Travelling Salesmen Problem, using an Isula-based implementation of Ant System. // AcoTspWithIsula.java double[][] problem = getRepresentationFromFile(fileName); solver.getAntColony().addAntPolicies(new RandomNodeSelection<Integer, TspEnvironment>()); solver.solveProblem(); The TspProblemConfiguration class implements the ConfigurationProvider interface from Isula. ConfigurationProvider instances contain the parameters of the ACO algorithm to execute, like the number of ants, pheromone evaporation ratio and the number of iterations. The TspEnvironment class extends the Environment class from the framework, which represents the environment the ants traverse while building solutions. It also stores the pheromone matrix that contains the pheromone value per solution component. To use AS we need to provide our AcoProblemSolver instance with the appropriate daemon actions and ant policies. AS was the first ACO algorithm proposed, and its main feature is that all the ants that build a solution after an iteration have the right to perform pheromone deposits. Other ACO algorithms prefer to restrict this behaviour. We rely on the types antsystem.OfflinePheromoneUpdate (getPheromoneUpdatePolicy() returns an instance of this class), antsystem.PerformEvaporation and antsystem. StartPheromoneMatrix to update pheromone values according to AS requirements. Table 1 contains a description of each of these classes. The ants in the colony are the ones in charge of making candidate solutions. Hence, a key component in algorithm implementation with Isula is constructing the ant colony and its members. 4 C. Gavidia-Calderon and C. Beltrán Castañon / SoftwareX 11 (2020) 100400 In Listing 1, the getAntColony() method produces an instance of the AntColony class of the framework, but overriding the createAnt() method to produce instances of the AntForTsp class. This class is tailored for TSP solution construction. We have also added the antsystem.RandomNodeSelection policy to all the ants in the colony. This policy guides the criteria the ants use to add components to their candidate solution. Listing 2, available in Github at https://github.com/cptanalatriste/isula , is a snippet from this class. Listing 2: Obtaining transition probabilities in Isula using a Random Node Selection policy. // RandomNodeSelection.java private Double getHeuristicTimesPheromone(E env, ConfigurationProvider config, C component) { Double heuristicValue = getAnt().getHeuristicValue(component, getAnt().getCurrentIndex(), env); Double pheromoneTrailValue = getAnt().getPheromoneTrailValue(component, getAnt().getCurrentIndex(), env); An Ant subclass for the ants that traverse the environment and build candidate solutions, and (3) a ConfigurationProvider implementation containing the algorithm parameters. The Isula framework handles the rest. Code reuse opportunities. Now that we solved TSP using an Isula implementation, we can reuse the code we developed to use other ACO algorithms to solve TSP problems. We will use Ant Colony System (ACS) and Ant System (AS) to showcase the reuse potential between ACO algorithms and their Isula implementations. ACS changes the way pheromone updates: It happens both when ants are building solutions (called local pheromone update) and when the whole colony has finished (called global pheromone update). Also, ants in an ACS algorithm use a pseudo-random node selection policy, unlike the random node selection policy used in AS. Listing 3, available in Github at https://github.com/ cptanalatriste/aco-acs-tsp, shows how to solve a TSP using Ant Colony System (ACS) [13], reusing the types we developed while applying AS. Listing 3: Solving the Travelling Salesmen Problem, using an Isula-based implementation of Ant Colony System. // AcoAcsTspWithIsula.java if (heuristicValue == null || pheromoneTrailValue == null) { throw new SolutionConstructionException(); } double[][] problem = AcoTspWithIsula.getRepresentationFromFile(fileName); return Math.pow(heuristicValue, config.getHeuristicImportance()) * Math.pow(pheromoneTrailValue, config.getPheromoneImportance()); AcsTspProblemConfiguration config = new AcsTspProblemConfiguration(problem); AntColony<Integer, TspEnvironment> colony = AcoTspWithIsula.getAntColony(config); TspEnvironment env = new TspEnvironment(problem); } As mentioned in Section 2.1, ants select components for their solutions randomly, with a transition probability dependant on pheromone values and heuristic information. antsystem. RandomNodeSelection obtains this probability for all valid solution components and randomly selects one according to the transition probability values. This class is a part of the Isula framework and is ready to use without modifications in the case of TSP. The AntForTsp class is tailored to build solutions for the TSP. Hence, its getHeuristicValue() method returns the distance of a potential solution component, with respect to the ant’s position in the problem graph. When using Isula to solve a novel optimisation problem, framework users should extend the base Ant class and provide an adequate implementation of getHeuristicValue() to guide the solution construction process. Algorithm execution. Lets now address the algorithm execution step to look in detail how Isula approaches combinatorial optimisation. Fig. 2 is a sequence diagram of the AcoProblemSolver.solveProblem() method, which is the Isula’s implementation of the procedure described in Algorithm 1. Isula distributes most of the ScheduleActivities responsibilities between the AcoProblemSolver class and the AntColony class. The AcoProblemSolver class delegates the solution building responsibilities to the AntColony class, while it keeps track of the best solution produced so far. The AcoProblemSolver class is also in charge of triggering DaemonActions, that can happen either before or after the ConstructAntSolutions phase, implemented by the AntColony.buildSolutions() method. Users of the framework can instantiate the AcoProblemSolver class without modifications, as it should support most of the ACO algorithms. If is not the case, Isula supports its extension. In summary, in order to solve a combinatorial optimisation problem Isula requires its users to implement three types: (1) A Environment subclass for representing the problem context, (2) AcoProblemSolver<Integer, TspEnvironment> solver = new AcoProblemSolver<>(); solver.initialize(env, colony, config); solver.addDaemonActions(new StartPheromoneMatrix<Integer, TspEnvironment>()); solver.addDaemonActions(getGlobalPheromoneUpdatePolicy()); solver.getAntColony().addAntPolicies( getLocalPheromoneUpdatePolicy()); solver.getAntColony().addAntPolicies(new PseudoRandomNodeSelection<Integer, TspEnvironment>()); solver.solveProblem(); We can use the AntForTsp and TspEnvironment classes without modifications. We can also reuse the antsystem. OfflinePheromoneUpdate and antsystem.StartPheromoneMatrix during pheromone update process. Due to the nature of the ACS algorithm, we need to include two additional policies already present in the Isula framework: acs.PseudoRandomNodeSelection and antsystem.OnlinePheromoneUpdate. We detail the behaviour of these classes in Table 1. 3. Illustrative example In the previous section, we applied well-known ant colony algorithms to a well-known problem. Here, we implement an ant colony algorithm for the medical imaging domain, proposed by us in previous work [14]. As shown in Fig. 3, our method takes as input a magnetic resonance (MR) image of a brain (like Fig. 5 from the BrainWeb [15]) to produce three segments from it: grey matter, white matter and cerebrospinal fluid (CF). Fig. 4 contains the grey matter segment our method extracted from the MR brain image in Fig. 5. This segmentation task is useful for computerassisted surgery, anomaly detection and the quantification of sclerosis lesions [16]. Our method is a composition of two ACO algorithms. After image pre-processing, the ACO image thresholding algorithm extracts the cerebrum – our region of interest – and excludes the C. Gavidia-Calderon and C. Beltrán Castañon / SoftwareX 11 (2020) 100400 5 Fig. 2. Sequence diagram of the AcoProblemSolver.solveProblem() method. Fig. 3. MR Brain image segmentation method based on ACO algorithms [14]. pixels corresponding to skull, muscle and fat. Then, the cerebrum pixels are then processed by the ACO image segmentation algorithm, which produces images corresponding to each relevant segment. The image segmentation algorithm is resource intensive, so it benefits greatly from the reduced input produced by image thresholding. The implementation of our method in Isula is available at GitHub (https://github.com/cptanalatriste/ aco-image-segmentation), including image pre-processing. In this section, we do not cover image pre-processing and focus only on the two ACO algorithm components. ACO Image thresholding. Malisia and Tizhoosh proposed the ACO algorithm we selected for thresholding [9]. They based their algorithm on Ant System, discussed in Section 2. The algorithm divides the input image in two regions: region of interest – the cerebrum – and background. To accomplish this, they assign artificial ants to each image pixel, making them seek low-greyscale pixel values. While traversing the image they deposit pheromone in each pixel. Pixel pheromone is used as feature for the clustering algorithm that produce the final segments. We show the image thresholding algorithm configuration code in Listing 4. This code 6 C. Gavidia-Calderon and C. Beltrán Castañon / SoftwareX 11 (2020) 100400 EnvironmentForImageThresholding env = new EnvironmentForImageThresholding( imageGraph, ProblemConfiguration.NUMBER_OF_STEPS); ImageThresholdingAntColony colony = new ImageThresholdingAntColony(); colony.buildColony(env); solver.setConfigurationProvider(config); solver.setEnvironment(env); solver.setAntColony(colony); solver.addDaemonActions(new StartPheromoneMatrix<ImagePixel>(), new RandomizeHive(), new PerformEvaporation<ImagePixel>()); colony.addAntPolicies(new NodeSelectionForImageThresholding(), new OnlinePheromoneUpdateForThresholding()); solver.solveProblem(); We reutilise Isula types like ConfigurationProvider and AcoProblemSolver. Also, since the algorithm is an extension of AS we can also rely on the antsystem.PerformEvaporation and antsystem.StartPheromoneMatrix daemon actions. Due Fig. 4. Grey matter segment extracted from Fig. 5 using our proposed ACO algorithm. to the new domain, we require further customisation. We designed Isula with these scenarios in mind, and it supports its extension and modification. For image thresholding with AS, we developed a specialised ant colony type (ImageThresholdingAntColony). We also adapted the pseudo-random node selection (NodeSelectionForImageThresholding) and online pheromone updated policies available in Isula (OnlinePheromoneUpdateForThresholding). Since we based these extensions on existing Isula implementations, only the relevant methods were over-written. The algorithm requires to place ants at random pixels at the beginning of each iteration. We developed the RandomizeHive daemon action to accomplish this. ACO Image segmentation. Once the image thresholding algorithm extracts the cerebrum, the image segmentation algorithm can start processing it. We implemented the algorithm proposed by Ouadfel and Batouche [10]. In their approach, each artificial ant is in charge of building a partition. They based their algorithm on Max–Min Ant System (MMAS) [17] – another classic ACO algorithm – so we can rely on Isula types for its implementation. In MMAS, only the best performing ant can deposit pheromone at the end of the iteration. Also, the pheromone values per solution component must belong to a specific range. Listing 5 shows how to configure the solver: Listing 5: Implementing image segmentation, using an Isulabased implementation of Max–Min Ant System. // AcoImageSegmentation.java is also available in GitHub at https://github.com/cptanalatriste/ aco-image-thresholding: ConfigurationProvider config = ProblemConfiguration .getInstance(); int numberOfClusters = ProblemConfiguration.getInstance().getNumberOfClusters() EnvironmentForImageSegmentation env = new EnvironmentForImageSegmentation( imageGraph, numberOfClusters); Listing 4: Implementing image thresholding, using an Isulabased implementation of Ant System. ImageSegmentationAntColony antColony = new ImageSegmentationAntColony( config.getNumberOfAnts(), env.getNumberOfClusters()); antColony.buildColony(env); Fig. 5. An axial MR brain image, obtained from the BrainWeb database [15]. // AcoImageThresholding.java ConfigurationProvider config = new ProblemConfiguration(); AcoProblemSolver<ImagePixel> solver = new AcoProblemSolver<ImagePixel>(); AcoProblemSolver solver = new AcoProblemSolver<ClusteredPixel>(); solver.setConfigurationProvider(config); solver.setEnvironment(env); solver.setAntColony(antColony); C. Gavidia-Calderon and C. Beltrán Castañon / SoftwareX 11 (2020) 100400 Table 2 Isula-based implementations of ACO algorithms at GitHub. # Problem and ACO Algorithm GitHub Project 1 Travelling Salesman with Ant System (Brownle [22]) Travelling Salesman with Ant Colony System (Brownlee [22]) Flow-Shop Scheduling with Max–Min Ant System (Stützle [23]) Image Thresholding with Ant System (Malisia and Tizhoosh [9]) Image Clustering with Max–Min Ant System (Ouadfel and Batouche [22]) cptanalatriste/aco-tsp 2 3 4 5 cptanalatriste/aco-acs-tsp cptanalatriste/aco-flowshop cptanalatriste/aco-tsp cptanalatriste/aco-tsp solver.addDaemonActions( new StartPheromoneMatrixForMaxMin<ClusteredPixel>(), new ImageSegmentationUpdatePheromoneMatrix()); antColony.addAntPolicies(new ImageSegmentationNodeSelection()); solver.solveProblem(); ClusteredPixel[] bestPartition = solver.getBestSolution(); The complete implementation is available in GitHub at https: //github.com/cptanalatriste/aco-image-segmentation. Like with the thresholding algorithm, the segmentation algorithm also uses the pseudo-random node selection policy from ACS, so ImageSegmentationNodeSelection extends acs.PseudoRandomNodeSelection. The pheromone update process follows MMAS rules, so we use the Isula types maxmin.StartPheromoneMatrixForMaxMin and maxmin.UpdatePheromoneMatrixForMaxMin (extended by ImageSegmentationUpdatePheromoneMatrix). We describe these types in Table 1. Like in the previous examples, we developed subclasses of Environment, Ant and AntColony, adapted to the problem domain. This custom code can be used along with Isula’s built-in types. 4. Impact ACO algorithms are not restricted to the academic domain: they are actively used to solve optimisation problems at industry [5]. Being Java the most popular programming language [7], there is a need for a robust java library for quick ACO implementations. The development of Isula started as part of one of the author’s Master dissertation in 2015 [14]. At the time of publication, Isula has been used for implementing ACO algorithms for image segmentation [18] and road extraction [19]. Isula is an open source project at GitHub, the world’s largest coding platform. Table 2 contains the Isula implementations of ACO algorithms we have developed so far. We built these opensource projects to showcase Isula capabilities, so the code follows a tutorial-style and its fully documented. At the time of this publication, Isula is the most popular ant colony optimisation project in Java at GitHub, in both forks and stars, among 24 code repositories in the area [20]. Without considering programming language, is the third most popular project [21] among 98 code repositories . Thanks to the feedback received over the years we have greatly improved Isula’s tutorials and documentation. We hope to continue enabling the practitioners and research community on the implementation of ACO algorithms. As seen in this paper, the framework is flexible enough to support several problem domains and different ACO algorithms. 4.1. Isula roadmap In this subsection, we present the extensions of the Isula framework we have planned. 7 Multi-objective optimisation. The ACO metaheuristic (Section 2.1) was originally designed to support single-objective combinatorial optimisation problems [24]. The current version of Isula has the same limitation: it does not provide multi-objective support out-of-the-box. Researchers have later developed ant-inspired algorithms that can produce a set of Pareto-optimal solutions for a given multi-objective optimisation problem [25]. The architecture of such algorithms differs the original ACO metaheuristic proposal, requiring multiple pheromone matrices, multiple colonies and multi-dimensional heuristic information. López-Ibáñez and Stützle proposed MOACO as an algorithmic framework for multiobjective ACO algorithms [24]. As part of our roadmap, we plan for Isula to support MOACO algorithms in the future. Parallel ACO. Our roadmap also includes extending Isula to support parallel implementations of ACO algorithms. Current proposals require the concurrent execution of ant sub-colonies over multiple processors, along with a policy for information exchange between them [25]. This information can be the best solution found by each sub-colony, or even the entirety of the pheromone matrix [26]. The current version of Isula does not support these architectures, but we expect a future release addressing these concerns. Parameter optimisation. The performance of ACO algorithms is highly dependent of their parameter values [27]. The current version of Isula, as most ACO algorithms in the literature, keep parameter values constant during algorithm execution. A new generation of ACO algorithms are able to adapt parameter values at runtime [28–30]. These algorithms can be grouped in two categories: Those that schedule parameter update before algorithm execution, and those that update parameters according to the current search state. We planned to extend Isula to support these parameter update strategies. 5. Conclusion The ACO metaheuristic has proven effective in solving optimisation problems. The instances of this algorithmic framework share many features: Isula relies on this to offer ready-to-use building blocks in the form of a robust Java library. This way, the implementation of new ACO algorithms is faster. Isula supports multiple domains and ACO algorithms, and is easily extensible as shown in this paper. It is currently the most popular GitHub project for ant colony optimisation in Java, and we hope more researchers and practitioners adopt Isula and help with its improvement. Declaration of competing interest The authors declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper. References [1] Dorigo M, Maniezzo V, Colorni A. Ant system: optimization by a colony of cooperating agents. IEEE Trans Syst Man Cybern B 1996;26(1):29–41. http://dx.doi.org/10.1109/3477.484436. [2] García MAP, Montiel O, Castillo O, Sepúlveda R, Melin P. Path planning for autonomous mobile robot navigation with ant colony optimization and fuzzy cost function evaluation. Appl Soft Comput 2009;9(3):1102–10. http://dx.doi.org/10.1016/j.asoc.2009.02.014. [3] Ross OM, Sepúlveda R, Castillo O, Melin P. Ant colony test center for planning autonomous mobile robot navigation. Comput Appl Eng Educ 2013;21(2):214–29. http://dx.doi.org/10.1002/cae.20463. [4] Brand M, Masuda M, Wehner N, Yu X-H. Ant colony optimization algorithm for robot path planning. In: 2010 international conference on computer design and applications, vol. 3. 2010. p. V3–436–V3–440. 8 C. Gavidia-Calderon and C. Beltrán Castañon / SoftwareX 11 (2020) 100400 [5] Dorigo M, Birattari M, Stutzle T. Ant colony optimization. IEEE Comput Intell Mag 2006;1(4):28–39. http://dx.doi.org/10.1109/MCI.2006.329691. [6] Isula: A framework for ant colony algorithms. http://cptanalatriste.github. io/isula/. [Accessed 17 February 2019]. [7] TIOBE Index for February 2019. https://www.tiobe.com/tiobe-index/. [Accessed 24 February 2019]. [8] Dorigo M, de Recherches Du Fnrs Marco Dorigo D, Stützle T, Stützle T. Ant colony optimization. A Bradford book, BRADFORD BOOK; 2004. [9] Malisia AR, Tizhoosh HR. Applying ant colony optimization to binary thresholding. In: Proceedings of the international conference on image processing. IEEE; 2006, p. 2409–12. http://dx.doi.org/10.1109/ICIP.2006. 312948. [10] Ouadfel S, Batouche M. Unsupervised image segmentation using a colony of cooperating ants. In: Bülthoff HH, Lee S, Poggio TA, Wallraven C, editors. Biologically motivated computer vision second international workshop, proceedings. Lecture notes in computer science, vol. 2525, Springer; 2002, p. 109–16. http://dx.doi.org/10.1007/3-540-36181-2_11. [11] Dorigo M, Caro GD, Gambardella LM. Ant algorithms for discrete optimization. Artif Life 1999;5(2):137–72. http://dx.doi.org/10.1162/ 106454699568728. [12] TSPLIB. https://www.iwr.uni-heidelberg.de/groups/comopt/software/ TSPLIB95/ [Accessed 17 February 2019]. [13] Dorigo M, Gambardella LM. Ant colony system: a cooperative learning approach to the traveling salesman problem. IEEE Trans Evol Comput 1997;1(1):53–66. http://dx.doi.org/10.1109/4235.585892. [14] Gavidia-Calderon CG. Segmentación de Imágenes Médicas Mediante Algoritmos de Colonia de Hormigas [Master’s thesis], Pontificia Universidad Católica del Perú, Escuela de Posgrado. Mención Magíster en Informática; 2014. [15] BrainWeb Simulated Brain Database. http://brainweb.bic.mni.mcgill.ca/ brainweb/. [Accessed 23 February 2019]. [16] Xu R, Luo L, Ohya J. Segmentation of brain MRI. In: Chaudhary V, editor. Advances in brain imaging. Rijeka: IntechOpen; 2012, http://dx.doi.org/10. 5772/27596. [17] Stutzle T, Hoos H. MAX-MIN ant system and local search for the traveling salesman problem. In: Proceedings of 1997 IEEE international conference on evolutionary computation. 1997, p. 309–14. http://dx.doi.org/10.1109/ ICEC.1997.592327. [18] Nadipally M. Chapter 2 - optimization of methods for image-texture segmentation using ant colony optimization. In: Hemanth DJ, Gupta D, Balas VE, editors. Intelligent Data Analysis for Biomedical Applications. Intelligent Data-Centric Systems, Academic Press; 2019, p. 21 – 47. http: //dx.doi.org/10.1016/B978-0-12-815553-0.00002-1. View publication stats [19] Wang Y, Tang C, Yang J, Wei L. Road extraction from high-resolution remotely sensed image based on improved ant colony optimization method. In: 2018 IEEE 16th Intl Conf on Dependable, Autonomic and Secure Computing, 16th Intl Conf on Pervasive Intelligence and Computing, 4th Intl Conf on Big Data Intelligence and Computing and Cyber Science and Technology Congress, DASC/PiCom/DataCom/CyberSciTech 2018, Athens, Greece, August 12-15, 2018. 2018, p. 300–9. http://dx.doi.org/10.1109/ DASC/PiCom/DataCom/CyberSciTec.2018.00058. [20] Ant colony optimization in Java at GitHub. https://github.com/topics/antcolony-optimization?l=java. [Accessed 24 February 2019]. [21] Ant colony optimization at GitHub. https://github.com/topics/ant-colonyoptimization. [Accessed 24 February 2019]. [22] Brownlee J. Clever algorithms : nature-inspired programming recipes. Lulu; 2011. [23] Stützle T, et al. An ant approach to the flow shop problem. In: Proceedings of the 6th European congress on intelligent techniques and soft computing, vol. 3. 1998. p. 1560–64. [24] López-Ibáñez M, Stützle T. The automatic design of multiobjective ant colony optimization algorithms. IEEE Trans Evol Comput 2012;16(6):861–75. http://dx.doi.org/10.1109/TEVC.2011.2182651. [25] Dorigo M, Stützle T. Ant colony optimization: Overview and recent advances. In: Gendreau M, Potvin J-Y, editors. Handbook of metaheuristics. Springer International Publishing; 2019, p. 311–51. http://dx.doi.org/10. 1007/978-3-319-91086-4_10. [26] Twomey C, Stützle T, Dorigo M, Manfrin M, Birattari M. An analysis of communication policies for homogeneous multi-colony ACO algorithms. Inform Sci 2010;180(12):2390–404. http://dx.doi.org/10.1016/j.ins.2010.02. 017. [27] Stützle T, López-Ibáñez M, Pellegrini P, Maur M, de Oca MAM, Birattari M, Dorigo M. Parameter adaptation in ant colony optimization. In: Hamadi Y, Monfroy E, Saubion F, editors. Autonomous search. Springer; 2012, p. 191–215. http://dx.doi.org/10.1007/978-3-642-21434-9_8. [28] Olivas F, Valdez F, Castillo O, González CI, Martinez GE, Melin P. Ant colony optimization with dynamic parameter adaptation based on interval type-2 fuzzy logic systems. Appl Soft Comput 2017;53:74–87. http://dx.doi.org/ 10.1016/j.asoc.2016.12.015. [29] Castillo O, Neyoy H, Soria J, Melin P, Valdez F. A new approach for dynamic fuzzy logic parameter tuning in ant colony optimization and its application in fuzzy control of a mobile robot. Appl Soft Comput 2015;28:150–9. http://dx.doi.org/10.1016/j.asoc.2014.12.002. [30] Castillo O, Lizárraga E, Soria J, Melin P, Valdez F. New approach using ant colony optimization with ant set partition for fuzzy control design applied to the ball and beam system. Inform Sci 2015;294:203–15. http: //dx.doi.org/10.1016/j.ins.2014.09.040.