MANGO: MultiAgent eNvironment for Global Optimization

Table of Contents

MANGO: MultiAgent eNvironment for Global Optimization

MANGO (MultiAgent ENvironment for Global Optimization) project aims at designing an extensible multiagent platform for solving global optimization problems.

Agents in the proposed environment are autonomous and asynchronously execute deterministic or stochastic, single-point or multi-point optimization methods. The cooperation mechanism is quite flexible to allow any type of hybrid implementation. The cooperation is via messaging and various cooperation protocols are being designed. The agents introduce themselves to the system through a registry mechanism but no agent exactly knows the algorithms other agents own. Through communication, agents share partial solutions and coordinate their search.

The Environment

  • Middleware Architecture
  • Communication Protocol

    Each message contains by default the following fields:

    • messageSenderId: ID of the sender agent, which is assigned by the system.
    • messageReceiverId: ID of the receiver agent, which is assigned by the system.
    • messageAuthentication: Authentication info of the requester.
    • messageType: Type of the message.
    • messageId: Unique ID number of the message.
    • correlationId: ID to link request messages to reply messages.

    Addition to these fields each message contains a content, which is explained in the rest of this document.

    Following abbreviations are used in the rest of this document:

    • OA = OptimizationAgent
    • DA = DirectoryAgent
  • Cases
    • Directory Registration
      • OA -> RegistrationRequest(String agentName, Capability[] capabilities) -> DA
      • OA <- RegistrationReply(String agentID, String agentQueueName) <- DA
    • Agent Lookup
      • OA -> LookupRequest(String agentID, Capability[] capabilities) -> DA
      • QA <- LookupReply(String[] capableAgentQueueNames) <- DA
    • Solution Sharing
      • OA -> SolutionRequest(String agentID, SolutionType !solutionType) -> OA
      • OA <- SolutionReply(String agentID, SolutionInformation solutionInformation) -> OA
    • Exploration
      • OA -> ExplorationRequest(String agentID, Region explorationRegion) -> OA
      • OA <- ExplorationReply(String agentID, Boolean accepted) -> OA
    • Refraining
      • OA -> RefrainingRequest(String agentID, Region refrainingRegion) -> OA
      • OA <- RefrainingReply(String agentID, Boolean accepted) -> OA
    • Content Objects
      • Capability: A Capability object describes a capability of an agent. For instance each optimization algorithm that can be used by an agent is a capability of this agent.
      • SolutionType: A SolutionType object defines what type of information is required as a solution request. For instance the requested solution might be the best solution so far or the last solution. Additionally the requester may also request the history until the solution obtained.
      • SolutionInformation: SolutionInformation object represents a shared solution. It contains following objects: a Cost object and one or more Solution objects.
      • Cost: A Cost object represents the cost of a solution. It consist of the information about the cpu time, the number of gradient evaluations and the number of function evaluations.
      • Solution: A Solution object contains a Point object that represents the solution point and a Double value that represents the objective value of this point.
      • Region: A Region is a set of Points, which describe a region in the search space.
      • Point: A Point is a set of coordinates, which describe a point in the search space.


Install and Run

Download and extract the .zip file for the source code. Add MangoLib.jar to build path.


  • MANGO: A MultiAgent ENvironment for Global Optimization, L. Kerçelli, A. Sezer, F. Öztoprak, P. Yolum, and Ş. İ. Birbil, 1st International Workshop on Optimization in Multiagent Systems (OPTMAS), in 7th International Joint Conference on Autonomous Agents and Multi-Agent Systems (AAMAS'08), Estoril, Portugal, (2008).
  • Solving Global Optimization Problems using MANGO, A. Günay, F. Öztoprak, Ş. İ. Birbil, and P. Yolum, In Proceedings of the 3rd International KES Symposium on Agents and Multi-agent Systems—Technologies and Applications, pp. 783–792, LNAI 5559, Springer, 2009.
  • Multiagent cooperation for solving global optimization problems: An extendible framework with example cooperation strategies, F. B. Aydemir, A. Günay, F. Öztoprak, Ş. İ. Birbil and P. Yolum, Journal of Global Optimization, Volume 57, Issue 2, pp 499-519, October 2013, Springer. <doi:10.1007/s10898-012-0012-3>

Date: 2013-10-23T15:59-0400

Author: Fatma Başak Aydemir

Org version 7.9.3f with Emacs version 24

Validate XHTML 1.0