Starting condition:
- A population of applications that have differing levels of QAs, they'd like to achieve.
- Each application has multiple sub-components that do not know the higher/parent component's QA level (to model global/higher level info, that is not percolated down to lower levels)
- Markets exist for the sale of following types of components: A, B, C, D, E, F, G, H
- Each application has/needs a subset of the components available
- Application gets a relative weight amongst QA attributes
- Application gets a budget to spend
- Application distributes budget amongst each of its components' trading agent
- From the buyers perspective:
- Each agent creates a bid consisting of: limit price, QA attribute-levels. Each QA attribute is modelled as a value on a likert scale (0 - 10)
- The Expected Value of the agent is the summation of the QA attribute-values in the bid
- The Actual Value of the agent is the summation of the QA attribute-values after the trade
- If no trade happens (due to a very low limit price or too high QA value), actual value is zero (hence, incentive to trade)
- From the seller's perspective:
- Each agent trades in one market (Agents that trade in multiple markets are not considered yet)
- Each agent creates an 'Ask' consisting of: asking price, QA attribute-levels. Modelling of values is same as above.
- Each agent has a privately known cost function. It's asking price will never be lower than the the cost function.
- From the market's perspective:
- A set of buyers and sellers submit 'bids' and 'asks'.
- All those that can be matched are considered 'trades'
- The price at which trade is made is called 'trade_price'. For closest matching QA, trade_price = (limit_price + ask_price / 2)
- Market clears after making all possible 'trades'
- Calculation of profits is as follows:
- Real_Value + (normalized) savings
- Real_Value = Actual_Value - Expected_Value
- savings = budget - trade_price
- Savings and Value can be negative, hence profits can be negative.
- How profits constitute feedback:
- Sub-components with an Actual Value closer to the parent's Expected Value are given a proportionally higher share of the next budget
- Sub-components with positive savings are given a proportionally higher share of next budget
- Once sub-components get their budget for the next iteration, they can deduce whether their Actual_Value was closer to desired outcome or Savings or both.
- They adjust their next bid appropriately
No comments:
Post a Comment