I want to make a game in which the players create different products (supply), and I give them a certain finite number of customers (demand). Players can choose the price and quality of their products (among perhaps other variables).

I've been trying to come up with an algorithm to decide on the market share of each product based on those variables. I could do something random, but thought I'd ask first!


1 Answer 1


You can do this quite effectively with the following approach:

  • Give each product an "attribute vector" (quality variables such as amount of crunchiness, whatever....)
  • Create pool of 1,000 customers or so to represent the market
  • Give each customer a "taste vector" - i.e. how much they value each product attribute
  • Each customer evaluates all products, and chooses the product where the dot product of the taste vector with the attribute vector minus the price is highest (if this is still negative... the customer opts not to buy anything)

If you want to add in more real world market features you can also try:

  • Customer stickiness - customers stick with the previous product they purchased X% of the time (chosen randomly).
  • Brand perception - make the actual attributes of the product different from the perceived attributes of the product.
  • Novelty effect - if a product is new and well-marketed, customers may buy it once anyway regardless of their preferences (this typically only applies if the purchase is relatively small, of course...)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .