Inicializace a deinicializace |
|
Nový hledací engine musí být vytvořen pomocí funkce peInit. Ta zajistí konzistetní naplnění PED struktury. Po té je možné zavolat peSetHeuristic nebo peSetSettings pro bližší specifikování parametrů hledacího enginu. Obě funkce mohou být zavolány kdykoliv v průběhu života PED. Pozn.: V peInit jsou zavolány s implicitními hodnotami (definované v pathlib.h). Korektní uvolnění PED zajistí peDone.
Ukládání a načítaní PED struktury zajišťují peSave a peLoad |
|
|
|
PED* peInit(int msx, int msy, int iMaxRequests, int iHeapSize, int iMPCPT, int iMaxWalkers); |
msx |
|
rozměr mapy x |
msy |
|
rozměr mapy y |
iMaxRequests |
|
maximalní počet požadavků v kruhové frontě |
iHeapSize |
|
maximalní počet MapNodů v haldě |
iMaxWalkers |
|
maximální počet Walkerů |
|
Alokuje a inicializuje PED strukturu a vrací ji. Alokuje všechny vnitřní struktury podle zadaných velikostí. Nastaví implicitní parametry chování enginu (definované v pathlib.h). V případě neúspěchu vrací NULL. |
PE_NOERR | PE_NOMEM |
|
|
|
|
char peDone(PED* PE); |
PE |
|
struktura určená ke zrušení |
|
Dealokuje engine PE. |
PE_NOERR |
|
|
|
|
PED* peLoad(FILE* f); |
f |
|
otevřený binární stream, ze kterého se má načíst struktura PED |
|
Alokuje a načítá PED strukturu ze souboru. V případě neúspěchu vrací NULL. |
PE_NOERR | PE_NOMEM |
|
|
|
|
char peSave(PED* PE, FILE* f); |
f |
|
otevřený binární stream pro zápis, do kterého se má uložit struktura PED |
|
Ukládá PED strukturu do souboru. |
PE_NOERR |
|
|
|
|
char peSetHeuristic(PED* PE, peHeuristic* H); |
|
Nastaví novou heuristickou funkci pro algoritmus.
peHeurisctic je definovaná takto: typedef int peHeuristic(void* PE, MapNode* A,MapNode* B);
COST je součet všech TC na cestě z A do B.
MINCOST je nejmenší COST přes všechny cesty z A do B.
heuristická funkce dává algoritmu odhad pro MINCOST z A do B v daném enginu PE.
Pokud bude funkce vracet identickou 0 bude algoritmus pracovat jako obyčejný Dijkstruv algoritmus.
Pokud bude funkce zajištovat vždy dolní odhad skutečného MINCOST algoritmus najde nejlepší cestu.
V opačném případě nejlepší možná cesta nalezena být nemusí.
Implementovány jsou tyto heuristiky:
HeuristicMax - maximová (vrací maximum z dx a dy)
HeuristicPythagoras - vrací vzdálenost "vzdušnoučarou"
HeuristicDijkstra - vrací identickou 0
|
PE_NOERR |
|
|
|
|
char peSetSettings(PED* PE, int MAXTC, int StandingBlockerCost, int WalkingBlockerCost, int FootStepCost, int BaseCost, int HorizontalCost, int DiagonalCost, int NearDestination, int BadFinalRatio, int BadFinalShift, int WaitingTimeout); |
MAXTC |
|
|
StandingBlockerCost |
|
|
WalkingBlockerCost |
|
|
FootStepCost |
|
|
BaseCost |
|
|
HorizontalCost |
|
|
DiagonalCost |
|
|
NearDestination |
|
|
BadFinalRatio |
|
|
BadFinalShift |
|
|
WaitingTimeout |
|
|
|
Nastaví volitelné parametry enginu
|
PE_NOERR |
|
|
|