dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Fast Pathfinder by Storm
Goto page Previous  1, 2, 3, 4, 5  Next
 
dev.gamez.lv Forum Index -> Tavi projekti
View previous topic :: View next topic  
Author Message
nai



Joined: 20 Dec 2006
Posts: 48

PostPosted: Sun Nov 25, 2007 12:24 am    Post subject:

Storm wrote:
Man ir ideja XD

http://taint.org/x/2007/cake-maze.jpg
http://astrolog.org/labyrnth/maze/larger.gif

Hehe. Es gan vairāk tēmēju uz "normālām" kartēm.

Quote:
Skreenu? Pastaastiisi kaads tev Open/Closed lista implementaacijas? Maybe vari piedaavaat standalone, gribu paskatiities cik aatri buus un mana, vaargaa xD procesora (P4 640 3.2Ghz)


Ir binary heaps, kura elementi satur openlista elementa indeksu un F vērtību. Un tad ir pats open lists ar pārējo infu.

Tav itkā vajadzētu pat izpildīties ātrāk, jo PF man laižas uz vienas kores(2.13ghz).

Pielaboju atmiņas reservēšanu std::vectoram un no 500ms nokritās līdz 200ms(10,000reizēm).


Nav simpātisks test environments.
Back to top
View user's profile
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Nov 25, 2007 12:28 am    Post subject:

Kapeec 10k visu laiku xD Postee vnk kur ir 1 reizei :P Ar exe padaliisies?

Edit : Kas vains karteem :D es vinjas tuuliit centiisos dabuut cilveeku formaataa (visticamaak ka baitinju listaa xD) Un ieposteesu uz testu, ceru ka padaliisies ar excutabli pasreizeejo lai varu paskatiities kaa atskiraas performance uz mana datora :)

P.S Subarea count? Vai tu sadali veel seachu subareaaas un izmanto to konektivitaaes informaaciju?


Fails (lielaa karte - nav gan 512x512 bet 399x399 :P)
No saakuma, piemeeram no [0,0] uz [398,298] (masiivaa)
399*399 baiti 0 - siena 1 - briivs :


http://yy.lv/download.php?f=82669
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 25, 2007 3:20 am    Post subject:

Storm wrote:
Man ir ideja XD
http://taint.org/x/2007/cake-maze.jpg
http://astrolog.org/labyrnth/maze/larger.gif

Bah nesaprotu tavu domu... vai nu arī es nesaprotu A*. Manā skatījumā A* nav paredzēts šāda veida labirintiem. Šādām "kartēm" vislabāk derēs vienkārša apstaigāšana dziļumā. Reku palaidu uz to larger.gif labirintu savu kādu laiku atpakaļ rakstīto dziļumā apstaigātāju:
Atrastais ceļš - http://maiss.02.lv/faili/bubu/larger_out.png
Apstaigātās rūtiņas - http://maiss.02.lv/faili/bubu/larger_out_full.png
Code:
Time = 912.375 msec
Path length = 235956
Total visited cells = 8573546
Dead-ends = 428463

Nepilna sekunde!! Tas uz Core duo (bez 2) 1.8 Ghz (lai tu nepadomā, ka man te klāsteris ar meinfreimiem :)

Un pasaki tagad, vai tavs A* spēs kaut vai veselās 5-ās sekundēs atrast kaut vienu ceļu šajā labirintā? Īstenībā tur tikai precīzi viens arī ir - speciāli palaidu apstaigātāju plašumā (nevis dziļummā) un dabūju visu iekrāsotu sarkanu tajā full bildē.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Nov 25, 2007 3:28 am    Post subject:

Tas nav lai paarbaudiitu cik aatri izstaigaa labririnu Wink taa ir vienkaarsa Open/Closed lista performance un visa A* performance pa absurdi sarezgiitu situaaciju. Un parada to loti labi Razz
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 25, 2007 3:49 am    Post subject:

Hm.. ok, ja tā uz to skatās, tad cita runa! Jāpadomā, diezgan interesanti palikās ;) Moš arī sanāks A* uztaisīt. Ļaunais Storm iebaroja tik interesantu tēmu ar visu lielo labirintu... :)

Btw, ja kādam vajag, tad rekur tas larger labirints vieglāk nolasāmā veidā nekā gif fails: http://maiss.02.lv/faili/bubu/larger.zip
Pirmie divi baiti failā - platums.
Nākamie divi baiti - augstums.
Abi divi ir 5769.
Pēc tam viss pārējais failā ir pats labirints. Platums skaitā rindas no augšas uz leju, no kreisās malas uz labo. Katrs baits = viena rūtiņu tādā pat formātā kā sākumā Storm deva.
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 25, 2007 4:51 pm    Post subject:

Tāks. Pirmajā piegājienā bez nekādas vēl optimizēšanas implementēju A*, kas uz to mazo, Storm sākumā doto labirintu, izmanto aptuveni tikpat daudz laika - 0.5msec, taču atrod īsāko ceļu - to pašu, ko nai.

Taču tas larger ir riktīgi ļauns, jo tajā ir tikai viens vienīgs ceļš uz izeju, tāpēc sanāk apstaigāt diezgan daudz. Pašlaik ir aptuveni 75 sekundes. Apstaigāts tiek 99% visu brīvo rūtiņu (16480736 no 16634913). Staigāju tikai pa 4-way-connected rūtiņām. Reku bilde: http://maiss.02.lv/faili/bubu/larger_out_a_star.png

Patlaban izmantoju Manhetenas distanci heiristikas funkcijai. Visāda veida konteineriem lietoju tikai STL - closed lists ir std::map ar nodēm. Open lists ir std::map ar nodēm un std::multimap sakārtotām nodēm pēc svara, kas glabā iteratorus uz pirmo std::map. Tātad visas darbības ar šiem listiem ir O(log N). Tagad laiks būtu ķerties klāt pie optimizēšanas :)
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Nov 25, 2007 7:02 pm    Post subject:

bubu wrote:
Storm sākumā doto labirintu, izmanto aptuveni tikpat daudz laika - 0.5msec, taču atrod īsāko ceļu - to pašu, ko nai.


Man arii atrod iisaako celju, bet ne jau pie H=32, un relase buildaa(pirmais skriins ir debug + studija fonaa) + H prieks iisaakaa celja laiks ir 0.2msec :P

Lielo trako gabalu man atrod ~24 sekundees, bet tas ir neobjektiivs rezultaats, since man vinjam jaarokaas pa disku, jo nav rama XD, maybee panemam mazliet reaalaako, 399x399 variantu? :lol:

Quote:

Tav itkā vajadzētu pat izpildīties ātrāk, jo PF man laižas uz vienas kores(2.13ghz).


Hehe, mulkiibas, tavs procis ir apmeeram 2x aatraaks Laughing http://www.tomshardware.com/us/
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 25, 2007 7:16 pm    Post subject:

Vai tad jēga Debug konfigurācijā kautko mērīt? Es mērīju release konf, bet fonā webu browsēju, kad šis meklēja to ceļu.
Kas ir tas H=32 tev?
Un par to atmiņu - tev tas algoritms tik daudz izmanto, vai arī fiziski datorā maz atmiņas?
Paskatījos, cik man sanāca izmantot... ap 800MiB. heh, tas ar būs jāoptimizē.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Nov 25, 2007 7:23 pm    Post subject:

yup, paslaik kompii tikai 512 Very Happy Disks gan man aatrais bet nesaliidzinaami leenaaks par ramu shaa vai taa... Pirmdien aiziesu nopirksu ramu 2Gb (nemot veeraa kaadas cenas tagad :lol) un tad skatiisiemies to lielo Twisted Evil H ir heruistiks.

Kaada jeega optimizeet gandriiz 6k reiz 6k gridu atminjas laucinjaa? Tu tak nedomaa sho izmantot? XD Anyway, daudz ko tur saspiest nav Razz


Last edited by Storm on Sun Nov 25, 2007 7:25 pm; edited 1 time in total
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Nov 25, 2007 7:24 pm    Post subject:

doh..
jūs abi ar kompjiem sacenšaties vai ar astariem?
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 25, 2007 7:44 pm    Post subject:

Reku uz to 399x399 sanāk šis te:

Code:
Time = 61.4905 msec
Path length = 1111
Total free cells = 79999
Total visited cells = 23377 (29.2216%)

Uzliku, lai staigā pa 8-way-connectivity. Lai būtu tāpat kā tev.
Tas pat ir arī īsākais ceļš! Papildus uzlaidu Dijkstru virsū - tas izdeva šo pašu ceļu 1111 garumā (ja vien neesmu kļūdījies tās implementācijā).

Kautkā nepatīk tas plašums sākumā... Jāskatās. Vēlāk būs noteikti vēl ātrāk :) Šis ir tikai, kā jau teicu, galīgi neoptimizēts variants - vienas stundas laikā uzrakstīju. Atmiņas patēriņu nespēju pagaidām nomērīt - programma nostrādā acumirklīgi, taskmangerī nepaspēju ieraudzīt izmantoto skailit ;) Vēlāk uzlikšu, lai programma skaita pati.

Quote:
Anyway, daudz ko tur saspiest nav

Ir ir! Pašlaika atmiņu riju kā traks. Viens items Closed listā man aizņem vismaz 32 baitus, bet Open listā vismaz 68 baitus. Vismaz - jo īsti tagad no galvas nezinu STL papildus pielikto atmiņu katrai mapa/multimapa nodei (pieņēmu 3 pointerus, slinkums sizeof'us salikt :). Un to visu var vismaz uz pusi nomest nost, jo tur glabājas diezgan lieka informācija (tā bij vienkāršāk kodu uzrakstīt).

Quote:
H ir heruistiks.

Es jau prasu - kas tas ir? Konstante vai?
Man heiristikas funkcija ir šāda (iepriekš teicu - Manhetenas attālums):
Code:
class Heuristic
{
public:
    Heuristic(const Position& goal) : _goal(goal)
    {
    }
   
    uint operator () (const Position& node) const
    {
        return std::abs(_goal.x - node.x) + std::abs(_goal.y - node.y);
    }

private:
    Position _goal;
};


Last edited by bubu on Sun Nov 25, 2007 7:53 pm; edited 2 times in total
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Nov 25, 2007 7:46 pm    Post subject:

Cake.raw (399x399), Taadaa pasaa formaataa kaa bubu (width, height, data)
http://yy.lv/download.php?f=82884

H tiek piereiznaats pie heuristic f-jas iznaakuma, es paarmekleeju 8 virzienus un lietoju Euclidean variantu...

P.S lieto unsigned short nevis int ;)

Bubu - tev ir smuka paarmekleeto apgabalu apskatiisana, kaa izskatiisies no 0,0 liidz 0,398 ?
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 25, 2007 7:59 pm    Post subject:

Quote:
H tiek piereiznaats pie heuristic f-jas iznaakuma

Hm. Sāk palikt ļoti interesanti. Rīktīgi labs performances ieguvums sanāca!
Paņēmu H=3, ieguvu daudz labāku rezultātu (uz citiem skaitļiem sanāk drusku sliktāk, bet arī H=2..5 dod aptuveni šo pašu variantu):

Code:
Time = 29.6879 msec
Path length = 1111
Total free cells = 79999
Total visited cells = 11822 (14.7777%)

Acīmredzami, ka mazāk jāstaigā.

Quote:
P.S lieto unsigned short nevis int ;)

Nu jā, tagad to varu. Iepriekš nevarēju. Tai lielai kartei ceļa garums bija stipri virs 65535.
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 25, 2007 8:08 pm    Post subject:

Storm wrote:
Bubu - tev ir smuka paarmekleeto apgabalu apskatiisana, kaa izskatiisies no 0,0 liidz 0,398 ?

Šoreiz sanāk labāk ar lielākiem H (>10).
H=20.


Ar atrada īsāko ceļu.

Code:
Time = 56.4315 msec
Path length = 1525
Total free cells = 79999
Total visited cells = 22391 (27.9891%)

Nezinu gan tikai, ko mans algoritms meklē tajā labajā apakšējā stūrī ejot uz augšu :)

Parādi tagad savus skaitļus, lai zinu uz ko man jātiecas ;)
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Nov 25, 2007 8:13 pm    Post subject:

Man shameejam variantam sanaak 11.0msec ar H = 40
Ja no 0,0 liidz 398,398 tad ar H = 4 sanaak 4.2msec :P

Edit : tas ir lietojot manhatanu un 4 virzienus, tiesi kaa tev xD
Back to top
View user's profile
Display posts from previous:   
dev.gamez.lv Forum Index -> Tavi projekti All times are GMT + 2 Hours
Goto page Previous  1, 2, 3, 4, 5  Next
Page 4 of 5

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group