Harium / suneidesis

A project to represent knowledge
MIT License
2 stars 1 forks source link

[Core] Add requirements to actions #30

Open yuripourre opened 6 years ago

yuripourre commented 6 years ago

We can add requirements to actions. Requirements can be a group of concepts needed to perform and action.

E.g.: Chop requires you to have a sharp tool. Walk requires you to have legs (otherwise you will be jumping, crawling, swimming, moving, etc.)

In order to add mechanisms to help Beings to understand goals and how to follow the steps.

yuripourre commented 4 years ago

Collector behavior Go to the spot to aquire loot, aquire loot, go to the spot to sell.

Go to spot may require multiple steps (way point) and also could be a virtual address (internet).

Aquire loot may be a bunch of actions e.g. waypoints and search items/kill monsters, etc.

Sell may require a bunch of actions (publish and wait) or go to the buyer, or pack/deliver, etc.

Measure time and what it's needed for each step. And how much is estimates to earn.

Compare multiple strategies to choose the best.

It should be generic enough to handle game situations and real life situations.

yuripourre commented 4 years ago

The main goal here would be the use of high level instructions.

For physical planning it would have to consider area of interaction (sight, size of arms) and also a concept of storage (where to find something / do I possess it?)

Last but not least the concept of property, can I borrow it? Who owns it?

E.g.: Chop Garlic = Find a garlic, obtain the garlic/buy a garlic, find a sharp tool to chop, get the tool, find a surface, walk near the surface, chop the garlic.

Strategy to obtain could compare time to buy, time to borrow or simply time to go to a storage and pick it. Maybe related to #19

Tasks may also have a instruction interface so they can actually perform actions depending on the context (physical or pure hypothetical)

E.g.: InspectTask (Physical context) If storage is far(can't reach), move to near If closed, open and then inspect

yuripourre commented 4 years ago

The first iteration of planning can be extremely simple:

interface Task {
    void start();
    boolean isRunning(); // better name?
    boolean isDone();
    boolean canStart(); // better name?
}
yuripourre commented 3 years ago

Requirements can be related to be, have or can. #97

Drive: is Human? Have Driver License? Know how to drive?