# An Intelligent Approach to Allocating Resources within an Agent-Based Cloud Computing Platform
## 2 Related Technologies and State-of-the-Art Approaches
#### Current Approaches to Allocated Computational Resources  
There are two main approaches to resource distribution in the state-of-the-art systems [8]. The first one involves the search for the cheapest and most efficient provider in terms of resource usage. Thus, this approach follows a model in which a broker or resource manager, usually an external one, is in permanent and simultaneous contact with various providers, and selects the most appropriate one for each client at any given moment. The key technologies employed in this approach are service discovery, negotiation, etc. However, this approach is not the focus of this research and thus will not be considered any further. The second approach is within the scope of this study, as it is concerned with the efficiency of resources within a CC provider's data centers. In this case, the problem can be contemplated from two different perspectives [30; 31]. On the one hand, a large-scale CC resource provider with different distributed data processing centers throughout the world must process client requests according to two variables: the distance from the data center, and the current workload at each center. This makes it easier to reduce the latency of giving a response to clients. This model is known as a time-drive adaptive mechanism [31]. On the other hand, a small-scale resource provider is one that distributes resources from an individual data center, regardless of its size. The task of distributing resources is performed by a component usually referred to as the resource allocation system (RAS). Regarding this perspective, the state-of-the-art systems presents two major approaches [8]:  
* QoS-aware, or the market-oriented approach [8]. This approach is related to a customer-oriented resource and service distribution model, seeking to minimize computing risks in order to distribute computing resources, following the SLA and a pay-per-use model. In this model, computer resource management techniques aim to comply with these agreements at all times, thus providing the quality of service requested by the end user. In line with this approach, the state-of-the-art systems include proposals such as RAS-M [15], which is a model based on the market economy. Its aim is to redistribute resources that will lead to a fair market price. Other studies address the distribution of resources on a mathematical basis, such as game theory [32; 33], or the maximization of an optimization function, based on linear programming techniques, given that it simply involves the optimization of resources [34; 35; 36]. * Energy-aware approach [8]. In this second case, the distribution of resources considers both energy consumption and the pre-established SLA, which implies compliance with both. This approach has less published research because it is more recent. This includes a variety of techniques such as the application of energy savings policies in physical machines and VMs [16; 37], the efficient redistribution of VMs according to the consumption of each physical machine [38], or models that are based on optimization techniques [17; 39]. Each of these can be found in an incipient state of development, which makes their application in large computing centers more complicated. In the light of the examination of the most recent studies, it is essential to build a model for the distribution of computer resources that will consider energy consumption as a key variable. The objective of including this variable is to seek to reduce energy consumption to the point that it satisfies the SLAs that have been established with the users of the environment. Moreover, all algorithms presented in this section follow centralized approaches, which use mathematical and economic theory models to provide the best suited algorithms depending on the type of problem.