- Python
- numpy
- There is 2D grid that represents restaurant:
- 0 means empty floor
- 1 means wall
- 2-9 tables numbered from 0 to 7
- Customers come to restaurant at random and take random tables
- There exists markov network describing probability of each dish being ordered form menu
- menu consists of a few menu items and each of them consists of 3 chemical elements in different mass ratios
- clients consume their meals by using some chemical elements and producing others E.g. 2O + 3N -> 5C
- each client has it's tolerance threshold for each element. For example when there is too much Oxygen, they stop eating and leave.
- Table needs to be cleared (from leftover chemicals) before new customer can come.
- uses linear regression to learn thresholds of each customer. Then uses this knowledge to try to guess when customer is close to finishing their meal. Training data is generated randomly by simulating agents coming, eating, and leaving as they please. There is also added some random noise to make the training harder and more resembling real-life scenarios.
- uses A* algorithm to find path to table with client that is closes to finishing their meal. Waiter sees world as a matrix of integers
- when waiter reaches any table, it cleans it, allowing new customers to come.
- waiter is also meant to suggest customers other meals they might like. The training data is generated based on markov network. (But the actual network is never given, instead we are just presented with sample orders generated by it)
Autonomous waiter moves on 2D grid by performing 3 types of actions:
- turn left
- turn right
- move forward
If waiter reaches any table, it will be automatically served (sing recommendations generated with probabilistic algorithm ). Target table is chosen based on likelihood of finishing meal, noticed by waiter.