Equilibratory Approach to Distributed Resource Allocation: Toward ...

0 downloads 0 Views 142KB Size Report
Let us call this ratio circulation ratio,. CR. That is,. CR = ∑m i=1 piwi. ∑m .... Kurose, J. F. and Simha, R.: A Microeconomic Approach to Optimal Resource.
Appeared in Castelfranchi, C. and Werner, E. eds., Artificial Social Systems, MAAMAW’92, Lecture Notes in AI 830, pp. 133–146, Springer-Verlag (1994)

Equilibratory Approach to Distributed Resource Allocation: Toward Coordinated Balancing Kazuhiro Kuwabara1 and Toru Ishida2 1

NTT Communication Science Laboratories 2-2 Hikaridai, Seika-cho, Soraku-gun, Kyoto 619-02 JAPAN e-mail: [email protected] 2

Department of Information Science Kyoto University Yoshidahon-machi, Sakyo-ku, Kyoto-shi, Kyoto 606-01 JAPAN e-mail: [email protected] Abstract. This paper presents a microeconomics-based equilibratory approach to a distributed resource allocation problem in a multi-agent system. In a multi-agent system, each agent has its own strategy to achieve its own objective. When a global objective function is given, a framework for reaching an overall desired state needs to be established. We call this type of framework Coordinated Balancing . Several microeconomic approaches previously proposed for resource allocation problems can be viewed as ways to achieve Coordinated Balancing. They include a cooperative approach, where agents cooperate with each other to achieve a global objective, and a competitive approach, where each agent tries to maximize its own utility. In contrast with these approaches, the proposed equilibratory approach reduces communication overhead by eliminating explicit cooperation and competition among agents. The proposed approach is evaluated through simulations where the global objective is to equalize resource utilizations.

1

Introduction

As hardware and software technologies have advanced, distributed computing has been receiving increasing attention. A multi-agent system, which consists of multiple autonomous agents, will play an important role in future computing systems. In these multi-agent systems, it is difficult to identify how each agent’s behavior affects the behavior of the system as a whole. It is an open question how to determine an agent’s behavior when a desired global behavior of a system is given. In addition, each agent does not have complete global information; it must act on incomplete information. It is difficult to achieve control from a global perspective, and consequently each agent needs to act autonomously based on the information available to it.

1

In order to design each agent’s strategy (behavioral rule) effectively, it is important to clarify a framework for reaching an overall desired state when multiple agents with their own strategies exist, which are all trying to achieve their own objectives. We call this type of framework Coordinated Balancing. In this paper, as the first step toward this Coordinated Balancing framework, a microeconomics-based equilibratory approach is proposed and applied to a distributed resource allocation problem in a multi-agent system. A distributed resource allocation problem is a typical example of Coordinated Balancing. This paper is structured as follows: in the following section, the proposed approach is presented along with the previously proposed microeconomic approaches. In Section 3, a resource allocation problem is formalized and mapped onto a multi-agent system. An example of this resource allocation problem is a path assignment problem in a communication network. In Sections 4 and 5, two distinct agent strategies are proposed and evaluated through simulation. Section 6 concludes the paper.

2

Microeconomic Approaches

Allocation mechanisms for resources such as CPU time and storage space in a distributed system, can intuitively be fit to a microeconomic mechanism because the economic activities of human beings can be viewed as a form of large-scale resource allocation without centralized control. In the following sub-sections, two distinct microeconomic approaches are reviewed. One is a cooperative approach, where agents cooperate explicitly in order to achieve a global objective. The other is a competitive approach, where agents compete against one another, yet are still expected to contribute to achieving a global objective through a socalled (Adam Smith’s) invisible hand. In a departure from these approaches, an equilibratory approach that can potentially reduce communication between agents is proposed. In a similar spirit, Eco Problem Solving was proposed, where many agents with their own heuristics interact with each other to solve one problem [1, 2]. Its main goal was to improve efficiency by decomposing a problem into multiple agents. In contrast to this Eco Problem Solving framework, the equilibratory approach is intended for use in a system where multiple agents already exist. The proposed approach deals with the problem of how each agent should behave with less communication in order to achieve a given global behavior. 2.1

Previous Approaches

Cooperative Approach A microeconomic approach was applied to a file allocation problem in a distributed system [5]. This problem attempted to minimize the sum of costs and delays in accessing a file distributed to multiple nodes in a system. When global utility is defined as the negative value of the cost and delay, the goal is, then, to maximize this utility value. In this problem, global utility is defined as a function of the size of a file’s portions that are allocated 2

to each node in a system. Each node knows this utility function, calculates its marginal utility (that is, the partial derivative of the utility function with respect to the file’s portions allocated to a node), and transmits this value to other nodes. A node calculates the average of marginal utilities received and increases the allocation at nodes with above average marginal utilities while decreasing the allocation at nodes with below average marginal utilities. By repeating these steps, files are allocated optimally. However, exchanging marginal utilities between nodes increases the amount of communication between nodes. Moreover, all nodes behave cooperatively. Therefore, control is distributed, but the nodes do not act autonomously. Competitive Approach Another example of how a microeconomic approach can be applied is found in the load-balancing problem in a distributed multiprocessor system [3]. The authors of this paper argue that effective global resource allocation can be achieved when an agent in an economy acts competitively in order to maximize its own utility without regard to the global objective. Their problem deals with how to allocate the CPU time of multiple processors to multiple incoming jobs. Each job and each processor is treated individually as an agent. An incoming job is given a certain amount of funds, with which it purchases CPU time and a communication path (used when a job is to migrate to another processor) in order to complete the job. The prices of CPU time and communication paths are determined through an auction. Each agent tries to maximize its revenue. Even though each agent acts selfishly, effective global resource allocation is expected to be achieved. Compared to schemes that do not use load balancing, this competitive microeconomic approach is reported to have successfully reduced the mean waiting time of jobs. While no agent actually tries to reduce the mean waiting time, better global results are nevertheless still obtained. This approach, in a sense, creates an computational market in a system. Markets were examined as models for computation, and a framework called Agoric systems was proposed for use in a software domain [7]. It is also argued in [7] that a market-based approach is appropriate as a foundation for an open system [4]. A market-like idea was also applied to resource management in a distributed system consisting of workstations connected by a network [6, 8]. In addition, Market Oriented Programming was proposed and applied to transportation planning [9]. This problem can also be considered a distributed resource allocation problem. In this competitive approach, agents behave selfishly without regard to global utility. Thus, it is relatively easy to describe an agent’s strategy. However, determining prices through an auction involves not only the cost of communication and computing overhead incurred in the auction, but also other implicit overhead costs. For example, an agent needs to anticipate other agents’ moves in order to make a successful bid. These overhead costs should not be overlooked.

3

2.2

Equilibratory Approach

The approaches explained so far require either explicit cooperation among agents or explicit competition among agents. As a result, they involve a communication overhead for exchanging marginal utility values or sending bids to an auction. In contrast, the proposed equilibratory approach does not require such explicit communication among agents. Price is not determined through an auction, and an agent acting as a seller simply sets its price according to demand. This price is then transmitted to agents acting as buyers by such means as intercomputer broadcasts. An agent (buyer) decides what and how much to buy according to the price. In this way, communication between agents is simplified; communication involves sending either price information or an agent’s (buyer’s) requests. The problem, then, is how can the agents behave as a whole based on this limited amount of communication when each agent acts according to its own strategy? In the following section, before discussing an agent’s strategy, a definition of a distribution resource allocation problem is given.

3 3.1

Distributed Resource Allocation Resource Allocation

Let us consider the problem of allocating m types of resource ri (1 ≤ i ≤ m) to n activities aj (1 ≤ j ≤ n). Ni represents the amount of resource type ri . The following conditions need to be satisfied for resource allocation. – Resources are allocated as a set. This set, represented by sj,k (1 ≤ k ≤ lj ), is called a resource-set and is predefined. lj represents the number of resource-sets in an activity aj . A resource-set is introduced in order to handle the situation where a set of resources must be allocated for the purpose of an activity. (For example, resource type r1 and r2 must be allocated simultaneously.) – For one unit of each resource-set sj,k , the amounts of required resources are given. These requirements are represented by a matrix Cj having the dimensions m × lj . The elements of this matrix, cji,k , represent the required amount of resource type ri for one unit of resource-set sj,k . For example, let us consider the following situation. There are three resource types, r1 , r2 , and r3 (m = 3). For agent a1 , both r1 and r2 (corresponding to resource-set s1,1 ) and/or both r1 and r3 (corresponding to resource-set s1,2 ) are required to be allocated (l1 = 2). If, for one unit of a resource-set, one unit of eachresource  110 type in the resource-set is required, the matrix C1 is given as C1 = . 101 – The total amount of the resource-set to be allocated is given, which is represented by Rj . For activity aj , the amount of the resource-set sj,k to be

4

obtained is denoted by d j,k . Let us consider the resource-set allocation vector dj = dj,1 . . . dj,lj . Then, Rj =

lj 

dj,k .

k=1

Let xi,j represent the amount of resource requests to resource type ri from activity aj . Then, the vector representing the  amount of resource type which all the activities request, xj = x1,j . . . xm,j , is given as follows: xj = dj Cj . Let wi denote the sum of resource requests to resource   type ri from all the activities. Using the vector notation, w = w1 . . . wm , w=

n 

xj =

j=1

n 

dj Cj .

j=1

The global objective function FO is given as a function of the sum of resource requests, wi , and the amount of each resource type, Ni . For example, when the objective is to minimize the variance of resource utilizations ui among all the resources, FO can be written as: m m m  2 2 2 m m i=1 (ui − ( i=1 ui /m)) i=1 ui − ( i=1 ui ) FO = , = m m2 where ui =

wi . Ni

The global objective is, therefore, to minimize FO . Path assignment problems in a communication network (Figure 1) can be mapped onto this problem. A link between nodes corresponds to a resource type (ri ). Link capacity corresponds to the amount of resource (Ni ). The specified activity aims to establish (possibly multiple) communication paths. Possible paths between an origin and a destination are already known. Each path corresponds to a resource-set (sj,k ). The total capacity of the paths to be established is given to an activity, and this value corresponds to the total amount of resource-set to be allocated (Rj ). An activity determines how much capacity each possible path (resource-set) has (dj,k ) in order to obtain the required total capacity. The global goal is to equalize the utilizations of links as much as possible in order to avoid bottle-necks.

5

C D B node

E

Resource- Set link A

Resource- Set

Resource- Set G

Resource- Set

F

Activity: Establishing paths from node A to C. Establishing paths from node F to B.

Fig. 1.: Communication Network Example

3.2

Mapping onto a Multi-Agent System

Let us first consider how this resource allocation problem can be mapped onto a multi-agent system. Each type of resource is associated with an agent acting as a seller. An agent associated with resource type ri has information on its resource such as the amount Ni , and the sum of current resource requests wi . Each activity is also associated with an agent acting as a buyer. An agent associated with an activity aj knows the resource-set matrix Cj , the total amount of resources to be allocated Rj , and the allocation vector of resource-set dj . An activity must obtain required resources. In this paper, it is assumed that the amount of available resources is so large that the resource requests are always granted. Let us now consider information exchanged between agents (buyers and sellers). A price is first determined by each seller. These prices are then broadcast. As a result, they can be accessed equally by all buyers. In this way, buyers can determine the price of any given resource. Buyers send their resource requests to appropriate sellers. However, no explicit communication takes place between sellers or between buyers. Therefore, it is difficult to achieve explicit cooperation between buyers or between sellers. What kind of strategy should an agent adopt under these assumptions? In the following section, example strategies are considered.

4

Strategies for Agents

It is assumed that a seller first determines its price and that a buyer then decides how much and which type of resource it is going to request, and that this iteration continues to repeat itself. In the following, let (t) denote the value at the tth iteration. 6

4.1

Seller’s Strategy

For each resource type, there is an associated seller (agent). It would be reasonable for a seller to try increasing its price if demand becomes high and decreasing its price if demand becomes low. An example implementation is as follows: a seller calculates the sum of resource requests from all buyers, and then computes its resource type’s utilization and adjusts its price accordingly. Let pi (t) denote the price of resource type ri at the tth iteration. The seller has a criterion parameter, uc , for the resource utilization, and it calculates the price at the next iteration based on uc and the current resource utilization ui (t) as follows: pi (t + 1) = pi (t) + β(ui (t) − uc)pi (t) , where β represents the price sensitivity. 4.2

Buyer’s Strategy

There exists an associated buyer (agent) for each activity. When a global objective function exists, the following two strategies can be considered to be at opposite ends of the spectrum: Selfish strategy: A buyer (activity) acts selfishly. In the equilibratory approach, no explicit competition such as bidding is carried out. A buyer simply adjusts its resource requests in order to minimize its payment. An example implementation is as follows: let ηj,k (t) denote the unit price  of resource-set  sj,k at the tth iteration. Using the vector notation p(t) = p (t) . . . p (t) and 1 m   ηj (t) = ηj,1 (t) . . . ηj,lj (t) , ηj (t) = Cj p(t) . A buyer calculates a unit price for its resource-sets and selects the resourceset with the lowest price. The resource-set with the lowest price is denoted by sj,q (q = arg min1≤k≤lj ηj,k ). There exists a distribution sensitivity α. When α = 1, only one resource-set, sj,q , is used, that is, dj,q = Rj . When α = 0, there is no change in the resource-set allocation. More concretely, dj,q (t + 1) = dj,q (t) + α(Rj − dj,q (t)) . As for dj,k (k = q), the allocation of the resource-set with the highest unit price (dj,u where u = arg max1≤k≤lj ηj,k ) is decreased by α(Rj − dj,q (t)), so that dj,q can be increased (Note that the sum of dj,k (1 ≤ k ≤ lj ) is given by Rj ). If dj,u(t) is not large enough (that is, dj,u(t) < α(Rj − dj,q (t))), the resource-set with the next highest unit price is also used, and its allocation is decreased. This continues until the value of dj,q becomes the one given above. Harmonious strategy: A buyer (activity) knows the global objective and acts accordingly. However, since there is no explicit communication between buyers, it is not possible to achieve complete cooperation, thus a buyer must rely on heuristics to help meet the global objective. 7

An example implementation is as follows: a buyer decides the allocation of resource-sets based on their unit prices. Let µj,k (t) denote the inverse of the unit price  of resource-set sj,k  at the tth iteration. Using the vector notation µj (t) = µj,1 (t) . . . µj,lj (t) , µj,k (t) =

1 (1 ≤ k ≤ lj ) , and ηj,k (t)

dj (t + 1) = lj

Rj

k=1 µj,k (t)

µj (t) .

The allocation of resource-sets is determined by the inverse proportion of the unit prices of resource-sets. These heuristics indicate the contribution of each buyer to the global objective function. They also make the product of the unit price of resource-set (ηj,k ) and the amount of resource-set allocation (dj,k ) the same for all the resource-sets in an activity.

5

Evaluation

5.1

Simulation

A simulation was conducted in order to examine the equilibratory approach. Both the selfish strategy and the harmonious strategy described in the previous section were examined. Simulation Parameters – The number of resource types, m, is 100. The number of activities, n, is also 100. – Each activity has five resource-sets (lj = 5 for all j). Each resource-set uses only one resource. This is done in order to examine a simpler case as the first step. – The amount of resources available for resource type ri , Ni , is in the range of 1 – 10,000, uniformly distributed. Thus, the average of Ni is around 5,000. – The amount of resources that each activity has to obtain is 500 (Rj = 500 for all j). Thus, the average resource utilization would be around 0.1. 3 Initial Values In order to make it more likely that the initial resource requests do not exceed the available amount of resources, the following policy was adopted. The initial price pi (0) of resource type ri was determined as the inverse of the amount of resource type ri , Ni , as follows: pi (0) = 3

n×Rj m×(average

of

Ni )

=

100×500 100×5000

= 0.1 .

8

P0 , Ni

where P0 is a constant. In this simulation P0 = 1, 000, 000. Using this initial price, the initial resource request was calculated based on the harmonious strategy even for the selfish strategy. (Note that the selfish strategy uses the resource request of the previous iteration to calculate its resource request, and there is no previous iteration at the first iteration.) Allocation Values The allocation of resources was rounded up so that the value of a resource request that a buyer makes is an integer. In this simulation, the absolute value of price is insignificant; rather, the relative value is important. This is because, for the selfish strategy, what counts is which resource-set is the cheapest, and for the harmonious strategy, only the ratios of prices are used in the calculation. The price was normalized so that the average price would be 1,000,000 at each iteration in order to avoid possible underflow/overflow. The price was also rounded up to be an integer. 5.2

Simulation Results

Changes in the variance of resource utilizations were measured for 10 randomly generated problems and the averages were taken. The results for the selfish strategy are shown in Figure 2. The distribution sensitivity α was varied, while the price sensitivity β was set at 1.0 and the criterion parameter for resource utilization, uc , was set at 0.1. This value was determined from the estimated average resource utilization. For comparison purposes, the result for the harmonious strategy is also included in the figure. Figure 3 shows the results for the harmonious strategy when the price sensitivity β was varied. In order to see how much the selfish strategy contributes to reducing a buyer’s (activity’s) spending, the ratio of the total requested resource (calculated as the products of the price (pi ) and the sum of resource requests (wi )) to the total amount of resource (calculated as the products of the price (pi ) and the amount of resource type (Ni )) was also measured. Let us call this ratio circulation ratio, CR. That is, m i=1 pi wi . CR = m i=1 pi Ni The results for the selfish strategy are shown in Figure 4. For comparison purposes, the result for harmonious strategy is also included. When the circulation ratio is higher, the buyers as a whole pay more for resources. The results of changes in the circulation ratio for the harmonious strategy when β was varied are shown in Figure 5. From these results, the following observations can be made for the two specific strategies described in this paper. The selfish strategy causes oscillation and the harmonious strategy does not. When buyers behave according to the selfish strategy, as α increases, the changes in the variance of resource utilizations begin to oscillate, especially when some degree of equalization has been achieved. However, no oscillation was observed for the harmonious strategy. 9

0.0040

Variance of Resource Usage Ratios

0.0035

α=0.001

α=0.005

α=0.02

α=0.002

α=0.01

Harmonious

0.0030 β=1.0 0.0025 0.0020 0.0015 0.0010 0.0005 0.0000 0

10

20

30

40

50

60

70

Number of Iterations Fig. 2.: Changes in Variance of Resource Utilizations (Selfish Strategy)

The reason the selfish strategy causes oscillation can be considered to be as follows: when the allocations of resource-sets are adjusted, only the cheapest resource-set is considered. Thus, the demand on the resources used by this resource-set increases. Accordingly, the price of these resources goes up, resulting in demand shifting back to the original resources, and thus causing an up-anddown seesaw effect in the curve of the variance of resource utilizations. On the other hand, when a buyer adopts the harmonious strategy, not only the allocation of the cheapest resource-set, but all of the allocations of resourcesets are adjusted according to price. Thus, a sudden change in demand of a particular resource is less likely to occur. Although it is not shown in the graph, when the selfish strategy (with α = 0.001) is used, the variance of resource utilizations reaches around 0.0005 after more than 500 iterations. Interestingly, when the variance reaches around 0.0005, the curve of the variance of resource utilizations shows oscillation with a long cycle (≈ 100 iterations) and a narrow width (≈ 0.0001). This indicates that oscillation is inherent in this implementation of the selfish strategy. There is a trade-off between reducing the oscillation of the changes in the variance of resource utilizations and reducing the circulation ratio for the selfish strategy. The oscillation is kept low only when the distribution sensitivity α is low. However, the variance of resource utilizations does not decrease rapidly. Moreover, the circulation ratio is relatively high when 10

0.0040

Variance of Resource Usage Ratios

0.0035

β=0.2

β=1.0

β=5.0

0.0030 0.0025 0.0020 0.0015 0.0010 0.0005 0.0000 0

10

20

30

40

50

60

70

Number of Iterations Fig. 3.: Changes in Variance of Resource Utilizations (Harmonious Strategy)

α is low. This means that when α is low, the selfish strategy does not contribute much to reducing the spending of the buyers as a whole. In order to decrease the amount of money the buyers as a whole have to pay, α needs to be high, resulting in oscillation in the curve of the variance of resource utilizations. The selfish strategy is effective for buyers. When the distribution sensitivity α is relatively high for the selfish strategy, the variance of resource utilizations oscillates. However, the resulting circulation ratio is lower than that of the harmonious strategy. This means that from the buyer’s perspective, the selfish strategy with a large α is effective since it contributes to reducing the spending of the buyers as a whole. The harmonious strategy’s heuristics are effective from the global perspective. The harmonious strategy achieved better equalization of the resource utilizations than did the selfish strategy. This result indicates that the heuristics of the harmonious strategy are effective in equalizing the resource utilizations. Also, the greater the price sensitivity β, the faster the resource utilization variance decreases. 5.3

Research Issues

These preliminary results show some interesting characteristics of the equilibratory approach. The following research issues need to be addressed as the next 11

0.20 0.18 0.16

Circulation Ratio

0.14 0.12 0.10 0.08 0.06

α=0.001

α=0.005

α=0.02

0.04

α=0.002

α=0.01

Harmonious

0.02

β=1.0

0.00 0

10

20

30

40

50

60

70

Number of Iterations Fig. 4.: Changes in Circulation Ratio (Selfish Strategy)

step. Quantitative evaluation of communication overhead: One of the main reasons for using the equilibratory approach is to reduce communication between agents. Quantitative comparison of communication overhead in the equilibratory approach with that of the previous microeconomic approaches is needed. Communication overhead depends on the network topology of agents. For example, broadcasting is relatively cheap for the Ethernet. Any quantitative evaluation should therefore take the network topology into consideration. Integration of global utility into an agent’s own utility: In this example, the harmonious strategy excelled in global performance by using simple heuristics. However, it is difficult to explain what this strategy implies from the viewpoint of the agent’s own utility. The question is, then, how to naturally integrate global utility into an agent’s own utility. The idea of a “portfolio” in the business world can be applied here. Extension of an agent’s strategies to deal with resource shortages and inaccurate information: This paper assumed that there were enough resources to avoid starvation. It also assumed that price information was accurate and conveyed without delay. These assumptions are useful for the first approximation of the communication network example, but they are in practice too restrictive. In order to lift these restrictions, it is necessary to extend the proposed strategies so that an agent can deal with resource shortages and 12

0.20 0.18 0.16

β=0.2

β=1.0

β=5.0

Circulation Ratio

0.14 0.12 0.10 0.08 0.06 0.04 0.02 0.00 0

10

20

30

40

50

60

70

Number of Iterations Fig. 5.: Changes in Circulation Ratio (Harmonious Strategy)

inaccurate price information. Application of a price system to reflect real-world problems’ characteristics: As described above, a price system provides common ground for representing various aspects of a problem. For example, reassigning a resource often involves costs in the real world. By giving a price to resource reassignments, these costs can be treated within the same framework. Moreover, priorities among activities can be incorporated by giving different funds to each activity (buyer). Different qualities of resources can also be treated in the price system. Making more use of the price system for considering various characteristics of a real-world problem should be further investigated.

6

Conclusion

This paper proposed an equilibratory approach for a distributed resource allocation problem. In this approach, agents do not explicitly cooperate or compete; they simply determine their own behavior according to their own strategy and the information available to them. Agents do not exchange marginal utilities nor are they involved in auctions. Compared to the previous microeconomic approaches, communication between agents can be reduced. As the first research step in the equilibratory approach, two strategies (selfish and harmonious) were developed and applied to a resource allocation problem. 13

The simulation results illustrate the effectiveness of this approach. The proposed approach can be considered effective toward achieving Coordinated Balancing. Another important problem for future consideration is coping with dynamically changing environments. In this paper’s example, the amount of resource may change or the requirements of an activity may change. In such a case, it will be necessary to be able to create or modify resource-sets as needed. Can the equilibratory approach effectively deal with changing environments? Moreover, what would be the overall behavior of the system if agents changed their strategies and if agents with different strategies existed in the same system? These are interesting questions to pursue.

Acknowledgments This work was conducted while the second author was with NTT Communication Science Laboratories. The authors would like to thank Seishi Nishikawa and Ryohei Nakano for their support of this work. The authors would also like to thank Tatsuya Suda, Michael P. Wellman, Makoto Yokoo and Yoshiyasu Nishibe for their helpful comments on early drafts of this paper.

References 1. Drogoul, A. and Dubreuil, C.: Eco-Problem-Solving Model: Results of the N-Puzzle, in Werner, E. and Demazeau, Y. eds., Decentralized A.I. 3, pp. 283–295, NorthHolland (1992). 2. Ferber, J.: Eco Problem Solving: How to Solve a Problem by Interactions, 9th Workshop on Distributed Artificial Intelligence, pp. 113–128 (1989). 3. Ferguson, D., Yemini, Y., and Nikolaou, C.: Microeconomic Algorithms for Load Balancing in Distributed Computer Systems, 8th International Conference on Distributed Computing System, pp. 491–499 (1988). 4. Hewitt, C.: Offices Are Open Systems, in Huberman, B. A. ed., The Ecology of Computation, pp. 5–23, Elsevier Science Publishers (1988). 5. Kurose, J. F. and Simha, R.: A Microeconomic Approach to Optimal Resource Allocation in Distributed Computer Systems, IEEE Transactions on Computer, Vol. 38, No. 5, pp. 705–717 (1989). 6. Malone, T. W., Fikes, R. E., Grant, K. R., and Howard, M. T.: Enterprise: A Market-like Task Scheduler for Distributed Computing Environments, in Huberman, B. A. ed., The Ecology of Computation, pp. 177–205, Elsevier Science Publishers (1988). 7. Miller, M. S. and Drexler, K. E.: Markets and Computation: Agoric Open Systems, in Huberman, B. A. ed., The Ecology of Computation, pp. 133–176, Elsevier Science Publishers (1988). 8. Waldspurger, C. A., Hogg, T., Huberman, B. A., Kephart, J. O., and Stornetta, W. S.: Spawn: A Distributed Computational Economy, IEEE Transactions on Software Engineering, Vol. 18, No. 2, pp. 103–117 (1992). 9. Wellman, M. P.: A General-Equilibrium Approach to Distributed Transportation Planning, AAAI-92, pp. 282–289 (1992).

14