# An Intelligent Approach to Allocating Resources within an Agent-Based Cloud Computing Platform
## 1 Introduction
Current state-of-the-art research is based on methods that use centralized algorithms focused on mathematical and heuristic models [15; 16; 17], neither of which ensures the efficiency of the system, or even its availability in the case of a system failure. In general terms, these algorithms add or eliminate the resources assigned to a particular computational service, according to the SLA established with the end user, the consumption of energy in the CC environment, and the actual state (available resources) of the CC environment [18]. Because of these shortcomings derived from centralization (unavailability, bottlenecks, bandwidth consumption, etc. ), new techniques need to be explored for the development of CC models with elasticity of services. This research suggests that the application of models based on artificial intelligence (AI) as a CC is distinguished by its large distribution, its heterogeneity and its high level of uncertainty, and it is precisely in this area that the application of AI techniques offers considerable opportunities. The incorporation of proactivity, self-adaptation and learning capacity is the reason for the evolvement of such elastic management algorithms for the allocation of computational resources. In this research, agents and multi-agent systems (MAS) [19] have been selected from among all the available AI techniques due to their distributed nature and ability to adapt to different environments, such as CC systems, which are open systems. MAS are considered particularly effective because they can provide advanced and innovative solutions [20] by exploiting differentiating elements as part of the strategy defined for the provision of customer satisfaction, providing flexibility, capability and response speed [21]. This approach allows existing models to evolve toward a model in which different distributed agents are represented within an uncertain environment, causing them to interact and share information with their peers [22]. This would make it possible for the algorithms that manage the resources to be distributed over the whole system, which would ease their use regardless of the size of the data center. The MAS-based structure proposed in in this paper offers a self-adaptive and dynamic model for the deployment of computational resources in a CC. This framework has learning capabilitiesthrough the implementation of a case-based reasoning (CBR) system [23], a model which, to the best of our knowledge, has not been applied before in distributed systems with these characteristics. These reasoning systems use past experience to solve new problems; their intelligent model resembles human intelligence. Consequently, we have developed a computational resource distribution model to be used in distributed environments, capable of managing resources according to past experiences, and of dynamically adjusting the resources allocated to each service. Using such a model makes it possible to achieve appropriate responses to demand and to increase the degree of effectiveness/efficiency of the solution and the state of the CC. Therefore, managing the functions of the nucleus of a CC system through an agent-based model and a CBR approach makes it possible to create a much more efficient, scalable and adaptable platform than the current ones. This paper is structured as follows: the next section describes the context of the current work and the state-of-the-art approaches related to the presented one. Section 3 focuses on the MAS-based platform that supports the technical proposal. Section 4 presents the resource allocation algorithms applied in each agent, while Section 5 presents the evaluation and validation of the proposal. Finally, the last section draws conclusions from the conducted research.