2011-07-04T00:00:27 *** jmreardon has quit IRC (Quit: jmreardon) 2011-07-04T00:06:47 *** antimatroid has joined #aichallenge 2011-07-04T00:32:25 mleise: i just remembered sometihng about my a* compared to sir_macelons 2011-07-04T00:32:58 i'm retrieving my heuristic location from a set every time i run that, because it's set up for multiple targets 2011-07-04T00:33:02 that could be slowing it down 2011-07-04T00:33:05 i'll play around later 2011-07-04T00:33:46 i see 2011-07-04T00:37:57 weighted a* or just ordering by min h seems really promising though 2011-07-04T00:38:09 for speed increases and minimal loss of optimality 2011-07-04T00:45:21 *** Gudradain has quit IRC (Quit: Page closed) 2011-07-04T01:16:24 *** BtbN has quit IRC (Remote host closed the connection) 2011-07-04T01:32:12 *** Palmik has joined #aichallenge 2011-07-04T01:33:05 *** janzert has joined #aichallenge 2011-07-04T01:34:12 amstan: you around and any idea on when the beta server might be back? 2011-07-04T01:34:59 nawww, mcleopolds map paste site thing doesn't show food 2011-07-04T01:35:05 i just made a path finding map gen 2011-07-04T01:35:45 I know he asked mleise to add that ability to the viewer 2011-07-04T01:35:55 :) 2011-07-04T01:36:16 use ants instead of food for now 2011-07-04T01:36:20 I didn't forget 2011-07-04T01:37:58 anyone know how long the beta server has been inaccessible? 2011-07-04T01:38:59 http://ants.zeroviz.us/Osr3M/ 2011-07-04T01:39:34 contestbot: later tell McLeopold the beta server seems to be cutoff from the network. I'm going to shutdown one of the workers until I see it come back online 2011-07-04T01:39:35 janzert: Ready to serve. 2011-07-04T01:40:35 http://ants.zeroviz.us/UHkgx/ :) 2011-07-04T01:42:47 nice 2011-07-04T01:46:07 *** janzert has left #aichallenge 2011-07-04T01:50:55 *** _flag <_flag!~flag@69-165-173-172.dsl.teksavvy.com> has quit IRC (Quit: Lost terminal) 2011-07-04T01:59:46 @later tell mcstar http://pastebin.com/DvLPv4VP here's a larger path finding example 2011-07-04T01:59:46 antimatroid: Ready to serve, my lord. 2011-07-04T02:00:07 @later tell mcstar min h and weighted a*'s paths suck 2011-07-04T02:00:07 antimatroid: Job's done. 2011-07-04T02:04:45 erm, there's something wrong with those :\ 2011-07-04T02:04:45 *** VilleH has joined #aichallenge 2011-07-04T02:09:12 Good morning, is the beta server down? 2011-07-04T02:09:34 yeah it looks like it 2011-07-04T02:13:36 *** gobang has joined #aichallenge 2011-07-04T02:21:05 *** amstan has quit IRC (Ping timeout: 260 seconds) 2011-07-04T02:33:48 *** gobang has quit IRC (Ping timeout: 255 seconds) 2011-07-04T03:06:13 *** ibdknox has joined #aichallenge 2011-07-04T03:08:56 *** aerique has joined #aichallenge 2011-07-04T03:10:16 *** mcstar has joined #aichallenge 2011-07-04T03:12:37 *** ibdknox has quit IRC (Quit: Page closed) 2011-07-04T03:14:42 *** ibdknox has joined #aichallenge 2011-07-04T03:15:48 I'm working on a Clojure starter-pack, and just uploaded it seems as though the server isn't up? Anyone know for sure? 2011-07-04T03:15:59 @rankings 2011-07-04T03:16:04 mcstar: Top 10 players: FlagCapper(92.7), sir_macelon(89.9), Sto03RepliCrush(85.0), GreenTea(84.8), OlexandrT(82.6), antimatroid(81.5), Zaphtest02(81.1), sto_greed_002(80.1), Zaphus(79.8), BaronTrozo(78.6) 2011-07-04T03:16:13 its up 2011-07-04T03:16:27 rather, the process to unzip and compile 2011-07-04T03:16:33 Works fine for me 2011-07-04T03:17:05 my submission has been in the state of "Uploaded: ready to be unzipped and compiled" for about 30 minutes 2011-07-04T03:17:10 (except c#) 2011-07-04T03:19:56 aichallenge: aerique epsilon * r06926cd / website/starter_packages.php : Update Mono version description. - http://bit.ly/ifaJE4 2011-07-04T03:21:52 @later tell amstan could you check my comment about using_the_tools.php please? then I can continue to update the other pages 2011-07-04T03:21:52 aerique: OK 2011-07-04T03:22:14 @later tell amstan here that is: https://github.com/aichallenge/aichallenge/issues/128 2011-07-04T03:22:14 aerique: I come to serve. 2011-07-04T03:24:17 *** ltriant has quit IRC (Quit: Computer has gone to sleep) 2011-07-04T03:24:26 *** gobang has joined #aichallenge 2011-07-04T03:26:18 ibdknox: I'm not sure Clojure support is complete yet, have a look at: https://github.com/aichallenge/aichallenge/blob/epsilon/worker/compiler.py 2011-07-04T03:27:23 Seems that the worker is dead as it doesn't unzip and compile files currently 2011-07-04T03:27:31 that *should* mostly work, the problem is mainly that I can't prove it won't unzip it 2011-07-04T03:28:10 since it won't* 2011-07-04T03:28:17 Doesn't work for c# either. I'm stuck in same message as ibdknox 2011-07-04T03:32:30 have both of you tried uploading, for example, the java starter package and see if that works? 2011-07-04T03:33:33 Wait a sec, I'll try 2011-07-04T03:34:51 Doh, I need to wait some time as it seems that someone has put the 10min limit on uploads 2011-07-04T03:35:01 it hasn't reset 2011-07-04T03:35:08 I've been waiting just shy of an hour 2011-07-04T03:35:11 so I can't upload again 2011-07-04T03:35:20 some process must not be running 2011-07-04T03:35:20 :D 2011-07-04T03:35:42 Like I said, worker.py is probably dead and its not unzipping / testing those uploads 2011-07-04T03:35:49 yeah 2011-07-04T03:36:52 aerique: anyway c# hasn't worked at all since I started, so I don't have currently own bot running on beta server. :( 2011-07-04T03:42:11 "The current game rate is about 0.0 players per minute." "Your next game could take awhile..." :D 2011-07-04T03:50:59 i cant download subtitles from http://www.opensubtitles.org, maybe the two problem is connected 2011-07-04T03:54:23 mcstar: rather weird that i didn't get the optimal path with my a* before :s 2011-07-04T03:54:32 haven't got around to working out what happened yet 2011-07-04T03:55:39 oh? 2011-07-04T03:56:01 how long is the optimal? 2011-07-04T03:56:16 rather "an" optimal 2011-07-04T03:56:39 dunno, but i could see where it obviously twisted suboptimally in open space 2011-07-04T03:56:49 i think min f then min h got the optimal path 2011-07-04T03:56:51 did you get my link? 2011-07-04T03:56:57 wehn? 2011-07-04T03:57:05 i just arrived 2011-07-04T03:57:29 http://pastebin.com/DvLPv4VP 2011-07-04T03:58:06 ah, the maze map 2011-07-04T03:58:14 weighted a* and just min h got really crap paths, but i'll try that again once i work out what went wrong with normal a* 2011-07-04T03:58:34 ill check it in a minute 2011-07-04T03:58:58 antimatroid: could you pls in the future use tha exact map encoding that ANts uses? 2011-07-04T03:59:01 mcstar: i also made a "path generator" 2011-07-04T03:59:10 which will make situations on my maze maps for you to path find 2011-07-04T03:59:17 you can add your ants, food, and enemy ants 2011-07-04T03:59:39 mcstar: the path generator outputs in the map format :) 2011-07-04T03:59:46 ok 2011-07-04T04:00:09 at least tell me the dimensions of the above 2011-07-04T04:00:33 http://pastebin.com/x61jhnkL :) 2011-07-04T04:01:57 hehe, vim macro's was faster 2011-07-04T04:02:05 i already have the m_ 's 2011-07-04T04:03:07 *** Naktibalda has joined #aichallenge 2011-07-04T04:08:03 antimatroid: it found a 101 long path 2011-07-04T04:08:21 have you got an image or ascii version? 2011-07-04T04:08:38 a min 2011-07-04T04:09:09 err, it was my min f otherwise max h that i think found an optimal path 2011-07-04T04:09:18 the rest didn't, but the first three should all be optimal :\ 2011-07-04T04:09:37 http://imgur.com/rNBuu 2011-07-04T04:10:03 at least tell me path lengths 2011-07-04T04:10:14 i haven't got that there yet :P 2011-07-04T04:10:58 my path went up though 2011-07-04T04:11:58 ppppppppp 2011-07-04T04:12:01 pp.%...pp 2011-07-04T04:12:06 thats interesting 2011-07-04T04:12:32 that's wong isnt it? 2011-07-04T04:13:01 http://pastebin.com/s5frM2DW that's the path i got from one of mine 2011-07-04T04:13:08 i have no idea why the rest got suboptimal paths :s 2011-07-04T04:13:39 are they different maps? 2011-07-04T04:13:46 hmmm, my bad maybe? :P 2011-07-04T04:15:43 on this you sent the path is 76 long 2011-07-04T04:17:24 they are the same maps 2011-07-04T04:18:28 i'm confused? 2011-07-04T04:18:33 was your path not optimal too? 2011-07-04T04:18:43 im checking 2011-07-04T04:20:56 it seems so 2011-07-04T04:21:24 ill check what function im using, i have 6 versions with lots of comments :S 2011-07-04T04:22:56 aaaah 2011-07-04T04:23:01 im using a buggy version i think 2011-07-04T04:23:18 i fcuked up version 6 optimizations wise last nite, and im using version 4 now 2011-07-04T04:23:35 but i forgot theres a bug in it which your little map revealed 2011-07-04T04:24:40 try weighted a* on it too :) 2011-07-04T04:31:02 *** qacek has quit IRC (Quit: WeeChat 0.3.5) 2011-07-04T04:32:59 pffff 2011-07-04T04:33:08 im searching towards another coordinate 2011-07-04T04:33:23 what are the start/target coordinates? 2011-07-04T04:34:13 the start is ok, the target i got wrong 2011-07-04T04:34:37 i dunno what they are 2011-07-04T04:34:49 *** sigh has joined #aichallenge 2011-07-04T04:35:24 i was searching for row 47 instead of 41 2011-07-04T04:35:28 let me do it again 2011-07-04T04:35:31 *** sigh has quit IRC (Remote host closed the connection) 2011-07-04T04:36:51 it says 97 but it look ok too 2011-07-04T04:37:42 http://imgur.com/IsvaE 2011-07-04T04:38:31 *** ZanniqlcKzxkq has joined #aichallenge 2011-07-04T04:39:22 *** Zannick has quit IRC (Disconnected by services) 2011-07-04T04:39:32 *** ZanniqlcKzxkq is now known as Zannick 2011-07-04T04:40:55 hehehehhehe 2011-07-04T04:40:59 i still got it wrong 2011-07-04T04:41:10 its hard to navigato on your ascii maps 2011-07-04T04:42:13 yeah i know 2011-07-04T04:42:26 *** pcavs has joined #aichallenge 2011-07-04T04:42:26 i will readjust my putput later so i can just paste it to ant paste 2011-07-04T04:42:46 *** ibdknox_ has joined #aichallenge 2011-07-04T04:43:12 *** ibdknox has quit IRC (*.net *.split) 2011-07-04T04:47:46 antimatroid: yesterday i tried 3 heap packages 2011-07-04T04:48:02 and they worked destructively on the given sets 2011-07-04T04:48:18 and ~3 oclock i put mine back in 2011-07-04T04:48:31 but with mine, i have to assign the return value 2011-07-04T04:48:37 its seems i have not done that 2011-07-04T04:48:39 :) 2011-07-04T04:48:45 so let me change that 2011-07-04T04:51:57 *** pcavs has quit IRC (Ping timeout: 255 seconds) 2011-07-04T04:57:55 *** eashoka has joined #aichallenge 2011-07-04T04:58:18 *** ibdknox_ has quit IRC (Remote host closed the connection) 2011-07-04T04:59:15 antimatroid: there's something spooky 2011-07-04T04:59:32 after i finished watching The Core ill look into it 2011-07-04T04:59:50 :) 2011-07-04T04:59:55 i'm watching kickass with a friend 2011-07-04T05:20:09 this is a really bad movie :( 2011-07-04T05:55:28 *** sigh has joined #aichallenge 2011-07-04T06:07:41 just wondering.. If google is indeed sponsoring this, why can't they cough a few bucks and lend UW few servers to run the games properly. It's down again :-( has been like that for 8 hours today 2011-07-04T06:26:05 I think that they aren't official sponsors yet 2011-07-04T06:26:48 hmm sorry if that's a boring subject which has already got asked in here many times before. I'm still new here. :-) just liked to see the game server up.. 2011-07-04T06:27:43 villeH: thought they were the official sponsor even in last year. 2011-07-04T06:29:38 even the HTML title of every page says 'Google AI challenge'. hmm ..... 2011-07-04T06:30:31 google did provide some server money for pw and may again for ants 2011-07-04T06:30:49 but they are mostly a sponsor because it looks good for both parties :) 2011-07-04T06:31:29 ah so I thought.... :-) 2011-07-04T06:32:29 if they are gonna provide some server money they better do it quick I think. otherwise this (poor servers going down under load frequently) doesn't look good for their name... ;-) 2011-07-04T06:32:57 eashoka: we're still on the beta server 2011-07-04T06:35:25 aerique : yea, we know. Just providing you guys some ammo to use next time any of you meet up a google person :-) 2011-07-04T06:35:34 and the beta is thanks to demerzel as the site suggests... 2011-07-04T06:40:55 Any idea how powerful server do you usually need for this kind of contests? 2011-07-04T06:41:29 mcstar : exactly! (thanks demerzel!) it would be nice if google can help the important beta work too isn't it ? This is a very nicely done competion (too good for running on inadequate resources). Hope thousends would play in this year. This could easily be 'THE programming competion" (if not already) 2011-07-04T06:44:32 Hmm, what does -end_wait parameter on playgame? 2011-07-04T06:44:50 playgame.py waits for the bots to clean up their mess 2011-07-04T06:44:59 earlier, it killed them instantly :) 2011-07-04T06:45:50 VilleH: it will run in "the cloud" 2011-07-04T06:45:54 there is no server 2011-07-04T06:46:17 you get a process with recources of a modern day processor 2011-07-04T06:46:17 villeH : let's see. (ur first qsn) one turn could take 1 second. so a game could take upto 1500 seconds or 25 minutes! 2011-07-04T06:47:37 eashoka: wiki mentions a name who supposed to be doing the "gather money" task 2011-07-04T06:47:37 if every body has to play at least one game in every 25 minutes then that means the cloud has to running a game involving a player contantly. one immediately after the next etc ... 2011-07-04T06:47:46 maybe he isnt doing it too good... i dont know 2011-07-04T06:47:55 amstan ? 2011-07-04T06:47:58 no 2011-07-04T06:48:52 mcstar: yeap, but is the current beta running on some ubuntu box? 2011-07-04T06:49:23 so, if there are n players and a single game can get involved 10 players, (let's say) then the servers should be powerful enough to run n/10 games parally at all times. 2011-07-04T06:49:25 j3camero 2011-07-04T06:49:38 oops, i dont want to wake him 2011-07-04T06:49:49 cloud again 2011-07-04T06:50:01 but a different subscription 2011-07-04T06:50:39 if n becomes 1000 (very likely) that means 100 games in parellal. what's more ppl would like to get involved in more than 1 game in 25 minutes. so something like the cpu power to run 200 games in parellal at any given time. 2011-07-04T06:51:16 in EC2 terms, how many instances one would need to run 200 games smoothly ? 2011-07-04T06:51:18 eashoka: the resources are dynamically allocated in a cload 2011-07-04T06:51:19 eashoka You can run even more games parallel as the next match doesn't depend on previous one? 2011-07-04T06:51:48 next mathc would depend on previous isn't it ? (to calculate ratings properly) 2011-07-04T06:51:49 i think every bot-thread gets 1 thread 2011-07-04T06:52:19 i think rating simply accumulate, the order shouldnt matter 2011-07-04T06:52:28 hell, i miss the s's 2011-07-04T06:52:49 mcstar, villeh : true. but what ever, there should be enough CPU/memory capacity to run about 200 games symultanously I think 2011-07-04T06:53:17 that would need few EC2 instances on the cloud 2011-07-04T06:53:34 msstar : ratings are used to pairings. 2011-07-04T06:54:04 mcstar: so I guess the order is important. 2011-07-04T06:54:05 I think ratings could be also done so that they are calculated once / day 2011-07-04T06:54:31 villeh : nope, u need quick feedback on your new version 2011-07-04T06:54:45 *** locutus2 has joined #aichallenge 2011-07-04T06:54:58 villeh : can't improve the bots if you don't get frequent games and rating updates 2011-07-04T06:56:13 You could still get the games and see wins / losses, but your opponents could be based on ratings calculated based on previously 2011-07-04T06:56:39 But of course real time updates are better for the players in this kind of competition 2011-07-04T06:57:19 villeH : yeah, and I guess running 200 games is not a big deal for the cloud 2011-07-04T06:57:38 villeH : IF there is a sponsor that is :-) 2011-07-04T06:57:43 we don't let all bots make their moves in the same time block 2011-07-04T06:57:53 we use sigstop or whatever to pause processes 2011-07-04T06:58:30 antimatroid : but that means each game take more time to finish ? 2011-07-04T06:58:50 eashoka: yes, but it means we give people a better idea of how much time they actually have each turn 2011-07-04T06:58:57 theoratically 1 game could go upto 1500 cpu seconds right ? 2011-07-04T06:59:16 we could always significantly reduce the turn time to achieve basically the same thing, but doing so significantly reduces the number of cool strategies people can reasonably try out 2011-07-04T06:59:45 antimatroid : yeah agreed. at least 1 second is a must. 2011-07-04T06:59:55 eventually there will be a tcp server where you will basically be able to constantly run games :) 2011-07-04T07:00:13 antimatroid : cool 2011-07-04T07:00:33 mcstar: i'ma fix up my path finding output 2011-07-04T07:03:12 antimatroid by tcp server, do you mean something like Thrift is? 2011-07-04T07:03:23 i don't know what that is 2011-07-04T07:04:09 Here: http://thrift.apache.org/ 2011-07-04T07:04:35 Facebooks dinosaur bots uses that 2011-07-04T07:05:48 This one here: http://www.facebook.com/careers/puzzles.php?puzzle_id=19 2011-07-04T07:08:45 *** eashoka has quit IRC (Quit: Page closed) 2011-07-04T07:08:50 I had dinosaur bot which did quite well on those puzzles ready so I then just turned it to an ant bot 2011-07-04T07:10:21 mcstar: how do you get your backtrack information? 2011-07-04T07:18:17 mcstar: i'm unsure about how valid a* is on this map? 2011-07-04T07:19:15 give me a moment 2011-07-04T07:19:18 *** _flag <_flag!~flag@69-165-173-172.dsl.teksavvy.com> has joined #aichallenge 2011-07-04T07:19:21 im really disappointed 2011-07-04T07:19:26 i wasnt ready for a movie this ba 2011-07-04T07:19:28 d 2011-07-04T07:20:31 antimatroid: i backtrack by simplywalking on the visited(close set) squares 2011-07-04T07:20:40 it a struct with parent coordinates 2011-07-04T07:20:46 s 2011-07-04T07:20:49 mcstar: i used the g information, but it breaks :\ 2011-07-04T07:21:09 what do you mean how valid? 2011-07-04T07:21:21 it always finds one optimal route 2011-07-04T07:21:34 it must, if it doesnt, thats our mistake 2011-07-04T07:22:12 http://pastebin.com/raw.php?i=itCC5c5c 2011-07-04T07:22:31 it's hard to see here, below the "below here" the search path goes below the visited squares 2011-07-04T07:22:39 then goes around it, which gives my suboptimal path 2011-07-04T07:23:01 when adding a node to the search queue i can scan the neighbours for min g but i'm still not sure if that will always work? 2011-07-04T07:23:26 the reason this is happening is because either direction can decrease the estimated distance i think 2011-07-04T07:23:52 in other words, my problem ( i think) is that the g calculations aren't always the min path to a search square as i'm currently doing it 2011-07-04T07:25:03 http://pastebin.com/raw.php?i=DFYChChG i added my g information at the bottom 2011-07-04T07:27:30 any path finding experts about? \ 2011-07-04T07:27:40 sigh: what's your knowledge on path finding like? 2011-07-04T07:27:50 do you know if a* should work on toroidal maps? 2011-07-04T07:28:09 well, the optimal path has got to touch the outline of the close set(the open set) and any square in the open set always points back to the parent, which gives the shortest path to the origin, so by indcution this schemes always finds an optimal path 2011-07-04T07:28:23 antimatroid: absoulutely 2011-07-04T07:28:28 antimatroid: sure, why not 2011-07-04T07:28:57 the only difference that the open set can meet with itslef but its not a problem at all 2011-07-04T07:29:03 is that* 2011-07-04T07:29:03 sigh: when i am searching, it seems to be searching around the shortest paths to some places, then getting sub optimal g values 2011-07-04T07:29:20 which i think is due to the fact that both directions from a square can look like the decrease the heuristic value 2011-07-04T07:29:28 is your heuristic admissible? 2011-07-04T07:30:00 yes, i'm doing a single source and single target search with manhatten dist as the heuristic value 2011-07-04T07:30:02 your heuristic needs to care about the toroidalness 2011-07-04T07:30:07 let me ant paste the path it gets 2011-07-04T07:30:19 yes, always calc. the min distance 2011-07-04T07:30:23 the manhatten distance wraps obviously if that's what you mean? 2011-07-04T07:30:30 but you it this way.. 2011-07-04T07:30:38 @topic 2011-07-04T07:30:38 antimatroid: Official Google AI Challenge: http://ai-contest.com/ || Channel Logs: http://contestbot.hypertriangle.com/ || Code Repo: http://github.com/aichallenge/aichallenge || Beta testers needed: http://aichallengebeta.hypertriangle.com/ (amstan) || Launch Preparation Meeting http://bit.ly/kYYbD4 (amstan) 2011-07-04T07:30:48 (do*) 2011-07-04T07:31:20 if you get a suboptimal path, it should be easy to debug 2011-07-04T07:31:34 just look at the data-structure at the end, and see why the optimal path is scoring less 2011-07-04T07:32:24 http://ants.zeroviz.us/6kWmX/ 2011-07-04T07:32:26 antimatroid: im going to disconnect to deal with the problem 2011-07-04T07:32:39 that's the suboptimal path, you will notice the stupid little kink to the left of red 2011-07-04T07:33:25 last words, 2011-07-04T07:33:29 *** foRei has joined #aichallenge 2011-07-04T07:33:29 ? 2011-07-04T07:33:36 http://pastebin.com/raw.php?i=DFYChChG the bottom map there gives my "g" information, you'll see where it breaks to the left of a, and i think the first search map with 's' == searched and 'v' == added to search queue sort of explains why it's getting the g information wrong 2011-07-04T07:34:36 *** mcstar has left #aichallenge ("WeeChat 0.3.5") 2011-07-04T07:34:51 sigh: does that make sense? :P 2011-07-04T07:35:32 if i sorted by min f, then max h, it seemed to get it right, but that might have just been this case 2011-07-04T07:36:06 something is broken in your algorithm 2011-07-04T07:36:42 you did math, you should be able to prove a* for yourself :P 2011-07-04T07:37:45 should a location i'm adding to my search queue always be found from a minimum path from the source? 2011-07-04T07:39:15 yes 2011-07-04T07:40:04 in your output where is goes from 9 to 12, something is broken 2011-07-04T07:40:26 do you understand the above map? 2011-07-04T07:40:55 the s goes below the v when searching, because it looks just as close if it walked down, searching around the shortest path on the up side 2011-07-04T07:41:50 but why did it go up from 11 to 12, instead of going left from 9 2011-07-04T07:42:09 becuase it searched from the 9 below and to the right first 2011-07-04T07:42:14 going along the left below 2011-07-04T07:42:23 the h(x) from 12 is a constant, and g(x) is shorter from 9 than from 11 2011-07-04T07:42:27 hence the 12 got added from the 11 below before the top 9 was removed from the search queue 2011-07-04T07:42:54 i'll do some calculations and see if i still think somethings not broken my end 2011-07-04T07:43:04 you are adding things in the wrong order 2011-07-04T07:43:42 it's pulling stuff off the search queue if it has the minimum expected path from source to target 2011-07-04T07:43:46 isn't that what it's meant to do? 2011-07-04T07:44:09 through the current locaiton it's pulling off 2011-07-04T07:45:11 *** locutus2 has quit IRC (Ping timeout: 240 seconds) 2011-07-04T07:47:47 what is h(x) for 11 and what's h(x) for 9? 2011-07-04T07:47:59 and what's h(x) for 12 above 11, left of 9? 2011-07-04T07:48:04 yeah, i'm writing out something on paper so i can work this out 2011-07-04T07:52:42 i have h = 30 for both g(x)=9 locations 2011-07-04T07:52:57 so it's arbitrarily picking the bottom one (because i go n, e, s, w) 2011-07-04T07:54:08 i don't think my algorithm is broken :\ 2011-07-04T07:54:21 the 9 should have been expanded before 12 2011-07-04T07:54:44 but what about the 11 below the 12? 2011-07-04T07:54:46 otherwise 9+h(9) > 12+h(12) ==> 9+1+h(12) > 12+h(12) ==> 10+h(12) > 12+h(12) 2011-07-04T07:54:54 if i expand that, then the 12 is added to the search queue 2011-07-04T07:55:02 sure, but it in the queue 2011-07-04T07:55:03 should i also be adding it to the search queue again? 2011-07-04T07:55:13 no, 12 is just in the queue 2011-07-04T07:55:18 you haven't reached it yet 2011-07-04T07:55:36 so i update the g value for that when i come across the location again from the second 9? even though it's in the queue? 2011-07-04T07:56:21 hang on 2011-07-04T07:57:08 i think that'd work 2011-07-04T07:57:18 ok, I see what you are going 2011-07-04T07:57:37 you are declaring that a node is reached once it's in the queue (the open set) 2011-07-04T07:57:53 yep, and assuming i found the shortest path there already 2011-07-04T07:58:21 the whole point of the queue is so that you can tell the shortest path by the elements that make it to the front 2011-07-04T07:58:30 yeah i know 2011-07-04T07:58:45 i'd need to add the location again and either leave the old one or remove it 2011-07-04T07:58:49 which is a bit painful 2011-07-04T07:59:00 i might have to do the whole open/closed set implementation, but would that save me? 2011-07-04T07:59:22 why can't you just add it to the queue? 2011-07-04T07:59:33 don't mark the node or anything until it is in the closed set 2011-07-04T07:59:34 and leave the other copy of it in the queue? 2011-07-04T07:59:44 sure 2011-07-04T08:00:06 unless you muck around with fancier data-structures, that seems perfectly valid 2011-07-04T08:00:32 otherwise you need a priority queue where you can change the values and stuff.... too much hassel 2011-07-04T08:00:42 i haven't even got a closed set :P i should implement it properly :P 2011-07-04T08:01:02 you already mark squares as visited, yeah? 2011-07-04T08:01:17 how are you doing that? 2011-07-04T08:01:25 yeah, when i add them to the search queue? 2011-07-04T08:01:51 *** sir_macelon has joined #aichallenge 2011-07-04T08:02:04 hi 2011-07-04T08:02:08 yeah, don't do that... wait till you pop them off the queue, if the square is marked then skip it, otherwise mark the square and process 2011-07-04T08:02:14 why workers are down? 2011-07-04T08:03:02 okay, and then if i pull a location off in the "closed set" then ignore it? 2011-07-04T08:03:06 okay, i'm good again :) 2011-07-04T08:03:21 i understand the whole a* thing now, i'm glad i made that error :P 2011-07-04T08:03:23 yeah, that's what I meant by skip it 2011-07-04T08:03:41 it's not that hard :P 2011-07-04T08:03:56 yeah, but i had mixed that up :P 2011-07-04T08:04:19 problems with a*, ha? :P 2011-07-04T08:04:25 sir_macelon: yeah :P 2011-07-04T08:04:31 http://ants.zeroviz.us/6kWmX/ 2011-07-04T08:04:35 the sub optimal path there 2011-07-04T08:05:13 how did you manage to get that? :) 2011-07-04T08:05:24 seems like a bug 2011-07-04T08:05:36 if you want to guarantee that your open set is optimal, then you are stuck with plain BFS 2011-07-04T08:05:44 marked squares as closed/visited when adding them to the search queue, not when taking them off, getting suboptimal path to x (g) values 2011-07-04T08:06:24 antimatroid: haven't you used the original algorithm from wiki? 2011-07-04T08:06:46 no, i just read the intro and implemented it how i thought it worked :P 2011-07-04T08:06:53 haha 2011-07-04T08:06:56 i thought their implementation was overly messy, turns out i was wrong :P 2011-07-04T08:09:01 antimatroid: don't try to invent stuff that is already there :) 2011-07-04T08:09:24 sir_macelon: i have yet to tire from reinventing the wheel ;) 2011-07-04T08:09:45 you've lost quite a handy amount of time on that, you've learned your lesson surely :) 2011-07-04T08:10:03 i don't consider that time lost :P 2011-07-04T08:10:13 i'm here to learn 2011-07-04T08:10:35 but there's more interesting stuff in here than just path finding :) 2011-07-04T08:10:48 my favourite part of these contests is playing around with these problems, even if they're previously been solved 2011-07-04T08:11:06 sure, but path finding i've never properly played with 2011-07-04T08:11:19 i've just implemented it as in the wiki one day and just forgot about it :P 2011-07-04T08:11:37 ahh, i have lots of plans for my path finding :P 2011-07-04T08:11:57 that's why you are working on those maze maps, ha? :) 2011-07-04T08:12:14 :P 2011-07-04T08:12:44 (i was told to make mazes for reference, but :P) 2011-07-04T08:12:53 speaking of those, when they will be available to test on the beta? 2011-07-04T08:13:08 i think mcleopold wants to save them for the main launch 2011-07-04T08:13:18 make the launch a bit more special? 2011-07-04T08:14:39 *** olexs has joined #aichallenge 2011-07-04T08:15:06 sir_macelon: they're pretty awesome though? 2011-07-04T08:15:14 i think they are anyway :P 2011-07-04T08:15:38 *** Accoun has left #aichallenge 2011-07-04T08:16:03 antimatroid: indeed they are! I'm a big fan of those! :D 2011-07-04T08:16:19 they would bring more diversity to strategies 2011-07-04T08:16:37 yeah, and they sort of make sense for the context of the game 2011-07-04T08:16:38 antimatroid: do you know this site?: http://weblog.jamisbuck.org/ He has some nice blog posts about mazes. 2011-07-04T08:17:13 *** jmreardon has joined #aichallenge 2011-07-04T08:17:23 aerique: i do not, i just used the recursive back track thing on wikipedia 2011-07-04T08:17:53 http://en.wikipedia.org/wiki/Maze_generation_algorithm#Recursive_backtracker that 2011-07-04T08:19:12 i think it's a "bug" that causes almost entire lines of water on the edges of symmetry, often with 1 width holes, but it's a bug i'm quite fond of 2011-07-04T08:20:07 *** mcstar has joined #aichallenge 2011-07-04T08:20:17 antimatroid: you there? 2011-07-04T08:20:21 i am 2011-07-04T08:20:26 i have solved my problem, have you solved yours? 2011-07-04T08:20:31 well sigh solved my problem :P 2011-07-04T08:20:49 i used a bad distance function it seems :( 2011-07-04T08:20:57 :P 2011-07-04T08:20:58 for h 2011-07-04T08:21:45 give me coordinates for another search will you? 2011-07-04T08:22:09 i haven't fixed my one yet :p 2011-07-04T08:23:28 mcstar: http://codepad.org/s9EDD7NG 2011-07-04T08:23:38 that's my very rough draft path generator 2011-07-04T08:23:46 there's a map at the bottom :P 2011-07-04T08:24:51 :S all i see from that is self 2011-07-04T08:24:53 self. 2011-07-04T08:25:29 ill run it later 2011-07-04T08:26:19 *** _flag <_flag!~flag@69-165-173-172.dsl.teksavvy.com> has quit IRC (Quit: Lost terminal) 2011-07-04T08:26:23 antimatroid: the only thing that bothers me with your map generator is that its not in c++ 2011-07-04T08:26:36 mcstar: i wish i was allowed :( 2011-07-04T08:26:57 the maze generator is way faster than the old one though 2011-07-04T08:27:27 unless you ask it to make a symmetric tile map with a specific number of players 2011-07-04T08:30:41 mcstar: are you still just reordering your queue each move? 2011-07-04T08:31:06 i dont reorder 2011-07-04T08:31:13 its a priority queue 2011-07-04T08:31:24 but i can delete from it 2011-07-04T08:31:32 ahh okay 2011-07-04T08:31:54 i think i might leave the duplicates in there then just ignore them if they're closed when i pull them off 2011-07-04T08:32:48 you mean after updating to a smaller g-value? 2011-07-04T08:32:55 so you leave the old in? 2011-07-04T08:33:04 ergh 2011-07-04T08:33:04 i'm going to 2011-07-04T08:33:12 my problem was i wasn't even considering it again 2011-07-04T08:33:14 *** onensora has joined #aichallenge 2011-07-04T08:33:25 i was "marking it closed" when i added it to the search queue, not when i pulled it off 2011-07-04T08:33:27 this is going to be wong isnt it? 2011-07-04T08:34:00 when you didnt find a path from the top of the queue, you will eventually encounter a replica of the popped ones 2011-07-04T08:34:35 let me think 2011-07-04T08:34:40 yes, but then it will be marked closed and i can just skip over it 2011-07-04T08:36:13 ah, but thats another thing to check 2011-07-04T08:36:45 it might be faster that to always check another value like node.kind or something 2011-07-04T08:36:46 *** jmreardon has quit IRC (Quit: jmreardon) 2011-07-04T08:36:54 what would be awesome is if ant paste would take "games/animations" in the way of repeatative char maps 2011-07-04T08:36:54 omg wall of python 2011-07-04T08:37:02 jmcarthur: yeah :P 2011-07-04T08:37:04 i mean faster if you delete it, but not sure 2011-07-04T08:39:45 *** jmreardon has joined #aichallenge 2011-07-04T08:43:03 antimatroid: wait, you're not *allowed* to do the map gen in C++? 2011-07-04T08:43:25 jmcarthur: they want stuff like that all in python 2011-07-04T08:43:30 bah 2011-07-04T08:43:57 meh, it's done now 2011-07-04T08:44:17 to change the subject slightly, i don't really "get" the python philosophy 2011-07-04T08:44:25 does anyone know why there are no games running on beta now? 2011-07-04T08:44:42 because that's what most of the original people are used to? 2011-07-04T08:44:55 no, i don't mean the ai contest stuff 2011-07-04T08:45:10 i mean in general. the rationale behind python design decisions and coding conventions 2011-07-04T08:45:16 oh, i can't stand python 2011-07-04T08:45:19 i think it's really messy 2011-07-04T08:45:21 jmcarthur: what is the python phylosophy? indentation has meaning? 2011-07-04T08:45:33 mcstar: there's only one way to do it 2011-07-04T08:45:38 "..." 2011-07-04T08:45:39 probably doesn't help that i know almost none of it 2011-07-04T08:45:45 or rather... 2011-07-04T08:45:49 "there's only one right way to do it" 2011-07-04T08:45:53 i hate python because indentation can break your code 2011-07-04T08:46:07 i love indentation aware syntax, but not python's 2011-07-04T08:46:14 python does it wrong wrong wrong 2011-07-04T08:46:22 i heard haskell has some rules tooo 2011-07-04T08:46:27 im afarid of it 2011-07-04T08:46:32 haskell's syntax is indentation aware, yes 2011-07-04T08:46:43 but it doesn't suck 2011-07-04T08:46:53 it works on "blocks" instead of "indentation levels" 2011-07-04T08:47:17 so it cares more about whether things are aligned than whether they have n spaces more than other lines 2011-07-04T08:47:41 python does that doesn't it? 2011-07-04T08:47:45 its hard to follow indentation through multiple pages 2011-07-04T08:47:49 provided a whole "block" is double indented, it's fine? 2011-07-04T08:47:58 i prefer brackets 2011-07-04T08:48:12 *** gobang has quit IRC (Ping timeout: 255 seconds) 2011-07-04T08:48:51 python does not do the same thing 2011-07-04T08:48:55 i prefer syntax without infix notation 2011-07-04T08:49:04 in haskell i can start a block without being forced to do a new line, for example 2011-07-04T08:49:31 also, indentation sensitivity is optional in haskell. there's always a way to use semicolons and curly braces instead 2011-07-04T08:49:49 yeah i forgot 2011-07-04T08:49:52 although most people just use indentation because it's actually pretty nice 2011-07-04T08:51:51 anyway, the thing i don't get about python is the "there's only one way to do it" philosophy. it has led to strange decisions like removing switch statements and stuff 2011-07-04T08:52:26 yes, guido, i understand that switch statements in OO smell fishy sometimes, but sometimes they are just the nicest way to write the code you want 2011-07-04T08:53:31 also, given that python's motto seems to favor rigidity, i'm not sure why it's dynamically typed at all 2011-07-04T08:53:44 I hate all single-paradigm languages with equal passion. 2011-07-04T08:54:05 i don't believe in the existence of paradigms 2011-07-04T08:55:08 i believe python is very well suited to many people, those who met it, love it, and forgot to look past it 2011-07-04T08:56:10 python was originally designed for teaching beginners how to program, and i think many of its design decisions are okay for that purpose 2011-07-04T08:56:32 it's just kind of dumbed down. that's why i don't understand its popularity 2011-07-04T08:56:40 but like pascal it got lose in the wild :) 2011-07-04T08:56:50 python's getting one hell of a bashing with no pythoners here to defend it :P 2011-07-04T08:56:51 and by dumbed down, i mean to the point of being less useful 2011-07-04T08:57:10 i'm not really trying to attack pythoners 2011-07-04T08:57:13 just python :) 2011-07-04T08:58:33 somebody wrote a wrong distance function, and some i remembered it( i dont use that one in my engine) and now it f'ed up my search alg. 2011-07-04T08:58:37 i was really just hoping a pythoner could maybe explain why they think these design decisions are worth it, and i wasn't going to argue about it, but i guess i'm the wrong channel at the wrong time 2011-07-04T08:58:37 where was it???? 2011-07-04T08:58:47 some* somehow 2011-07-04T09:02:59 cpp/cl/pyhton is ok 2011-07-04T09:03:14 where the hell is it, i clearly have it in my mind :S 2011-07-04T09:10:45 *** gobang has joined #aichallenge 2011-07-04T09:11:51 mcstar: :P 2011-07-04T09:11:58 my astar is now working 2011-07-04T09:12:24 'bout time 2011-07-04T09:12:28 :D 2011-07-04T09:12:38 gimme coordinates gime gime 2011-07-04T09:12:46 coordinates for what? 2011-07-04T09:13:04 just test a couple of points together on the prev. map 2011-07-04T09:13:15 and tell me the length of the paths 2011-07-04T09:14:10 lol, way too messy for me to do that easily atm :P 2011-07-04T09:14:14 let me clean stuff up 2011-07-04T09:14:39 you have to put little a's and *'s on the map? 2011-07-04T09:19:06 ahhhh, with this correctly wrapped distance weighted a* behaves quite differently scan-pattern wise 2011-07-04T09:19:33 my testmaps were blocked on the edges, so for them , the non wrapping distance is better 2011-07-04T09:19:36 *** moondust has quit IRC (Read error: Operation timed out) 2011-07-04T09:19:40 *** moondust has joined #aichallenge 2011-07-04T09:20:54 http://imgur.com/MipOH 2011-07-04T09:21:13 this is a weighted a*, normal a* would scan the entire aerea 2011-07-04T09:21:34 e->i 2011-07-04T09:21:48 *** amstan_ has joined #aichallenge 2011-07-04T09:21:48 *** ChanServ sets mode: +o amstan_ 2011-07-04T09:21:52 wiighted? 2011-07-04T09:21:53 *** gobang has quit IRC (Read error: Connection reset by peer) 2011-07-04T09:23:06 but this is better: 2011-07-04T09:23:08 http://imgur.com/Zx4Sa 2011-07-04T09:23:15 has a home-grown heuristic 2011-07-04T09:26:29 the previous heuristic in a nother situation: 2011-07-04T09:26:31 http://imgur.com/GcC1G 2011-07-04T09:28:09 so the weighting makes the heuristic overestimate the distance sometimes, i'm guessing? 2011-07-04T09:28:44 yup 2011-07-04T09:29:05 another option is to just order stuff my min h 2011-07-04T09:29:09 stinky 2011-07-04T09:29:14 it's faster :P 2011-07-04T09:30:20 ok, since you all are very curious what heuristic im using ill share with you 2011-07-04T09:30:38 g+3*euclidean_d 2011-07-04T09:30:52 it works fabulously on open maps 2011-07-04T09:31:18 on maze maps g+2..10*manhattan_d works better 2011-07-04T09:32:39 so, since the map will look like an open map(sort of) because in the game planned paths will be short, ill be using euclidean distance for heuristics probably 2011-07-04T09:32:58 why euclidean? :s 2011-07-04T09:34:49 have you seen the images? 2011-07-04T09:35:03 it's very nice as far as im concerned 2011-07-04T09:35:23 tries to go straight to the target, overestimates, but not much 2011-07-04T09:35:27 they're not all the same map though yeah? 2011-07-04T09:35:36 yes 2011-07-04T09:35:44 well, source and target? 2011-07-04T09:35:44 Do you think a* is usable in ants? 2011-07-04T09:35:46 the ones i just pasted are the same maps 2011-07-04T09:35:53 VilleH: very much so 2011-07-04T09:35:55 VilleH: dont even try it 2011-07-04T09:36:03 now which one is right? 2011-07-04T09:36:32 antimatroid: from upper-left to lower right 2011-07-04T09:36:40 and then from left to right 2011-07-04T09:36:47 you see the green line 2011-07-04T09:36:57 mcstar: is your euclidean metric wrapped? 2011-07-04T09:37:03 yes 2011-07-04T09:37:14 no 2011-07-04T09:37:15 are you sure? 2011-07-04T09:37:17 not yet :) 2011-07-04T09:37:31 but for those maps its good this way 2011-07-04T09:37:33 http://imgur.com/Zx4Sa that will change :P 2011-07-04T09:37:40 mcstar: In the ants you cant see more than n distance so youll be moving short distances any way 2011-07-04T09:37:57 VilleH: i have said that many times 2011-07-04T09:37:57 VilleH: you can see from other ants 2011-07-04T09:38:03 which may have better options near by 2011-07-04T09:38:10 *** amstan_ has quit IRC (Ping timeout: 250 seconds) 2011-07-04T09:38:14 or you might have food information that is over water 2011-07-04T09:38:17 and you need to find a path to it 2011-07-04T09:38:42 or food information out of view 2011-07-04T09:38:46 antimatroid: yeah but if its over water and you cant see where the water starts / ends which way you go? 2011-07-04T09:39:01 i make the assumption that everything is land until i'm told otherwise 2011-07-04T09:39:19 i use multi source and multi target a star to find the shortest paths from an ant to an uncollected food square 2011-07-04T09:39:33 also how about other ants do you consider them as a blocks? 2011-07-04T09:39:40 antimatroid: oh, i forget to tell, but now i see it cause im viewing the function: i take the square root of the euc. distance 2011-07-04T09:39:52 mcstar: :P 2011-07-04T09:39:58 VilleH: what do you mean? 2011-07-04T09:40:14 blocking path finding? 2011-07-04T09:40:19 i am going to build that in i think 2011-07-04T09:41:00 I mean do you consider other ants as a blocks in path as then you need to calculate routes on every step 2011-07-04T09:41:17 i still don't understand? 2011-07-04T09:42:04 i am considering having a set > to indicate when a location is going to be "taken", and using that information while path finding 2011-07-04T09:42:12 and other information depending on what i'm finding a path for 2011-07-04T09:44:07 When you have n+100 ants, do you calculate paths for each ant on every turn? 2011-07-04T09:45:56 i do, but i limit how much time i allocate to each thing 2011-07-04T09:46:03 I'm trying to say that for me it seems that the problem isn't the water but other ants that are also moving on your paths 2011-07-04T09:46:56 antimatroid: he means the same thing i was telling you before: do you plan the paths so that ants dont step on each other 2011-07-04T09:47:13 VilleH: i guess its not a problem since he recalculates paths on every turn 2011-07-04T09:47:41 i am considering doing that anyway 2011-07-04T09:47:46 mcstar: Yeah 2011-07-04T09:48:02 but even then it'd be tough to recycle paths, i'd need to also check paths aren't going onto newly found water 2011-07-04T09:48:14 antimatroid: path finding with multiple units that aren't allowed to pass through each other is very hard 2011-07-04T09:48:30 jmcarthur: he isnt going for the best solution 2011-07-04T09:48:41 jmcarthur: set > :P 2011-07-04T09:48:58 antimatroid: so you mean that you are going to have each ant determine it's path one at a time? 2011-07-04T09:49:03 instead of concurrently? 2011-07-04T09:49:04 yes 2011-07-04T09:49:06 okay 2011-07-04T09:49:09 that's much easier then 2011-07-04T09:49:14 although you might end up with some terrible paths 2011-07-04T09:49:34 like when collecting food, i will collect a food item, then consider the moving ants new location and time available, as well as the new ant when that's available to collect the rest of the food 2011-07-04T09:49:45 how will that get terrible paths? 2011-07-04T09:49:52 also, it still means you have to so your A* in a 3d space instead of a 2D space 2011-07-04T09:49:55 *to do 2011-07-04T09:50:02 why? 2011-07-04T09:50:15 each position is now indexed by time, as well 2011-07-04T09:50:52 it also gives you another "direction" to move: stay still 2011-07-04T09:50:59 yeah 2011-07-04T09:51:13 *** gobang has joined #aichallenge 2011-07-04T09:51:15 i don't think that will be too painful though 2011-07-04T09:51:22 :D 2011-07-04T09:51:22 it will make it slower though 2011-07-04T09:51:29 you just work out "stand still" moves while bracktracking your path 2011-07-04T09:51:41 no that's not what i mean 2011-07-04T09:52:00 i mean those are actual nodes in the algorithm 2011-07-04T09:52:35 yeah, but say you come across a node that is taken with the g you have for it, then you just find the next highest g that it isn't taken then add that information to the search queue? 2011-07-04T09:52:38 if you extrude the map by time and include other ants' paths in it then you have essentially a 3d map, and "standing still" is the same as simply "going forward in time without moving" 2011-07-04T09:53:21 it's a 3D map where all moves or non-moves go in the same direction along one of the axes (time) 2011-07-04T09:53:23 Was it some ubuntu box currently running beta server? I could grab computer with me and put up own server to try to fix that annoying c# test bug.. 2011-07-04T09:53:29 jmcarthur: his solution in 3d is more like a branching tree 2011-07-04T09:54:01 in time, it leaves behind leafes, and starts on another paths 2011-07-04T09:54:09 sorry, lefes->branches 2011-07-04T09:54:21 is that actually more efficient? 2011-07-04T09:55:13 i dont think its very efficient at all, but the wants to do it this way 2011-07-04T09:55:27 :) 2011-07-04T09:55:29 i mean its a lot of wasted effort 2011-07-04T09:55:29 Gotta go, cu 2011-07-04T09:55:34 bb 2011-07-04T09:55:35 agreed 2011-07-04T09:55:37 *** VilleH has quit IRC (Quit: Page closed) 2011-07-04T09:55:59 how would you guys do it? 2011-07-04T09:56:01 IMO, if you already have A*, might as well just apply it to a more complicated map instead of complicating the algorithm itself 2011-07-04T09:56:27 i would literally do the 3D map version i was talking about 2011-07-04T09:56:28 antimatroid: i'd let antimatroid figure out a better solution, and then id make him tell me 2011-07-04T09:57:10 it would probably be lazily generated though, since i won't necessarily care about all time-space in the game 2011-07-04T09:57:42 i kind of make multiple tiers of the map, a node could have different g values with different parents, every node could be a stack of those 2011-07-04T10:02:33 no reactions? yeah, i should consider it myself not just spit it out into the open to let someone else analyze it 2011-07-04T10:03:14 antimatroid: if i nag you, would you implement the coordinate-inputs faster? 2011-07-04T10:03:35 i don't know what you want? 2011-07-04T10:04:00 just you want me some coordiantes on your map to test against 2011-07-04T10:04:15 *** sigh has quit IRC (Remote host closed the connection) 2011-07-04T10:04:21 i want you to give me* 2011-07-04T10:04:33 compared to mine? 2011-07-04T10:04:39 my code is a huge mess atm :P 2011-07-04T10:04:47 so that we can test simultaneously 2011-07-04T10:04:55 i need to clean everything 2011-07-04T10:05:01 it probably wont be done tonight :p 2011-07-04T10:05:05 ok, 10 minutes then? 2011-07-04T10:05:08 ah ok 2011-07-04T10:05:19 i need to change a lot of structural stuff to clean it up 2011-07-04T10:05:21 ill play by myself 2011-07-04T10:05:25 i hacked lots of messy stuff in all over the place 2011-07-04T10:10:28 antimatroid: have you tried profiling it? 2011-07-04T10:10:36 profiling? 2011-07-04T10:10:51 i'd be curious how much time you spend with the prique routines 2011-07-04T10:10:54 yes 2011-07-04T10:11:02 with a profiler 2011-07-04T10:11:17 gprof? 2011-07-04T10:11:45 or whatever works with cpp 2011-07-04T10:15:12 i have no idea about those kind of things :P 2011-07-04T10:15:15 i am cleaning up though 2011-07-04T10:20:01 *** locutus2 has joined #aichallenge 2011-07-04T10:24:15 im down to 0.18 ms for a path on yesterday's examples 2011-07-04T10:24:52 games on beta are finally back again! 2011-07-04T10:27:02 now you can eat me again, bravo 2011-07-04T10:27:06 :D 2011-07-04T10:33:22 *** olexs has quit IRC (Read error: Connection reset by peer) 2011-07-04T10:33:22 *** VilleH has joined #aichallenge 2011-07-04T10:38:14 mcstar: I'm not hungry :P 2011-07-04T10:38:43 *** aerique has quit IRC (Quit: ...) 2011-07-04T10:39:18 *** MuTaLiSk has joined #aichallenge 2011-07-04T10:41:40 Someone kickstarted the server again, nice! 2011-07-04T10:43:08 Is there server specs somewhere, so I could install own server? 2011-07-04T10:48:02 *** foRei has quit IRC (*.net *.split) 2011-07-04T10:48:23 VilleH: check out the github stuff in the topic 2011-07-04T10:48:58 the server itself i think is running ubuntu natty, i forget whether it's 32 or 64 bit 2011-07-04T10:50:41 jmcarthur: Yeah, I checked the wiki on github, but didn't find any exact specs on server 2011-07-04T10:53:41 *** locutus2 has quit IRC (Ping timeout: 240 seconds) 2011-07-04T11:01:45 *** onensora has quit IRC () 2011-07-04T11:02:31 heh, i wonder how practical an agda bot would be 2011-07-04T11:02:40 that might make this more interesting for me 2011-07-04T11:02:52 probably would be slow as molasses 2011-07-04T11:29:05 *** gobang has quit IRC (Read error: Connection reset by peer) 2011-07-04T11:29:31 *** gobang has joined #aichallenge 2011-07-04T11:45:57 woo, shiny. Just installed ubuntu, its been while since I've had linux box at home. 2011-07-04T11:50:08 bah, i hate it when something isn't doing what you expect and you can't work out why 2011-07-04T11:50:24 VilleH: i switched from xp earlier this year, i couldn't go back :) 2011-07-04T11:50:37 windows is too painful to program on 2011-07-04T11:50:54 windows is too painful in general 2011-07-04T11:51:02 Depends on what you are doing :P 2011-07-04T11:51:04 turned out pretty much everything i use these days is open source and cross platform anyway :) 2011-07-04T11:51:23 or that there was an "equivalent" alternative 2011-07-04T11:51:35 i still have nothing on ms paint though :( 2011-07-04T11:52:39 http://ants.zeroviz.us/u2Fhj/ groan 2011-07-04T11:52:50 I could basicly use linux at home also 2011-07-04T11:53:07 though my digitv card doesn't have working drivers for linux 2011-07-04T11:53:09 i understand it not finding the optimal path, but it should be able to find the better suboptimal path through the light brown 2011-07-04T11:54:04 Heh, don't worry about couple side-steps :P 2011-07-04T11:56:44 *** sir_macelon has quit IRC (Quit: Page closed) 2011-07-04T12:01:42 the sample inputs at show the same score lines for both bots. shouldn't the scores be rearranged so that the first one is always "me"? 2011-07-04T12:05:20 also, are there any large game inputs i can test with statically? 2011-07-04T12:06:53 jmcarthur: yes it probably should be arranged like that 2011-07-04T12:06:58 and dunno about static input? 2011-07-04T12:07:22 i have contemplated writing something for myself to transform a char map into bot input 2011-07-04T12:07:38 *** nux67 has joined #aichallenge 2011-07-04T12:07:52 antimatroid: are you sure you update the g-values correctly? 2011-07-04T12:08:09 mcstar: yeah, that's when i just order by min h 2011-07-04T12:08:27 i think it's a matter of it updating the g value after it's already been searched, and that not "proagating" through 2011-07-04T12:08:38 is there a way to download bot inputs from a replay? 2011-07-04T12:08:52 not sure 2011-07-04T12:09:02 when you get the nbors of an open cell, you have to check to see if any of them is in the open set, if it is, then see, if the g value would be lower if you came from here, then from its current parent 2011-07-04T12:09:14 if so, update it and its parents too 2011-07-04T12:10:00 not its parents, but the variables, representing its parents' coordinates 2011-07-04T12:11:04 aham 2011-07-04T12:11:19 antimatroid: when you backtrack, where do you get the nodes from? 2011-07-04T12:11:30 *** pcavs has joined #aichallenge 2011-07-04T12:11:34 do you by any chance use the data from the priority queue? 2011-07-04T12:11:35 i have a matrix of g information atm 2011-07-04T12:11:44 but i'm considering storing "parent" info 2011-07-04T12:11:55 ? you have to store it 2011-07-04T12:12:07 how else would i have it? 2011-07-04T12:12:40 so, where do you store the "closed" nodes, that you put away? 2011-07-04T12:12:58 the brown ones 2011-07-04T12:12:58 i think antimatroid is destructively mutating the nodes to say he has visited them 2011-07-04T12:13:03 aaaaaa 2011-07-04T12:13:14 im not sure what he is doing anymore :S 2011-07-04T12:13:35 what do you mean by store? 2011-07-04T12:13:41 i just mark that as closed 2011-07-04T12:13:50 and don't search from there again 2011-07-04T12:14:02 *** smiley1983 has joined #aichallenge 2011-07-04T12:14:22 ok, but those nodes must have information of it's parents 2011-07-04T12:14:56 well, they could, or i could work it out again at the end :P 2011-07-04T12:14:59 but you're right, that's better 2011-07-04T12:15:15 i did the path back track as an afterthought for debugging 2011-07-04T12:15:25 like i said, it's all a big mess :P 2011-07-04T12:15:38 aham, so you leave every node in the priority queue 2011-07-04T12:16:03 but still, it must have information of its parents, i mean how else would you backtrack? 2011-07-04T12:16:20 this is what i dont understand 2011-07-04T12:16:37 if you didnt store the parents, what guides you? 2011-07-04T12:19:09 ok i got it 2011-07-04T12:19:29 so you simply search backwards, always choosing the node with the smaller g value 2011-07-04T12:19:37 yep 2011-07-04T12:19:58 but, since you left duplicate elements in the queue, this scheme will collapse 2011-07-04T12:20:07 why? 2011-07-04T12:20:26 i just clear my queue once i find a target 2011-07-04T12:20:26 because 1 node will appear twice, for example, with different g values 2011-07-04T12:20:45 no, i have a single matrix of g values, containing the smallest one i find for each location 2011-07-04T12:20:54 aham 2011-07-04T12:20:58 i use that to extract the path 2011-07-04T12:21:20 actually this should work 2011-07-04T12:21:22 :) 2011-07-04T12:21:46 ill think about this while i wash the dishes 2011-07-04T12:21:53 did we ever decide whether to use makefiles or some other equivalent? 2011-07-04T12:21:54 i'm off to sleep :) 2011-07-04T12:22:02 bb 2011-07-04T12:22:07 jmcarthur: don't think it's happening this time :( 2011-07-04T12:22:12 dang 2011-07-04T12:22:16 yep 2011-07-04T12:23:05 *sigh* it also looks like i'm still going to have to include external libraries in my bot code 2011-07-04T12:23:32 well, maybe not necessarily, but surely by this time somebody else has picked up or replaced my old starter thing 2011-07-04T12:24:52 dang, we aren't even installing the haskell platform. it's still just ghc 2011-07-04T12:28:35 *** McLeopold has joined #aichallenge 2011-07-04T12:29:15 don't think so :P 2011-07-04T12:33:10 jmcarthur: you should be happy to know we are using our original ant battle method :) 2011-07-04T12:34:09 yes antimatroid told me yesterday :) 2011-07-04T12:34:41 i am now making a significantly less complex starter, with fewer library dependencies 2011-07-04T12:35:08 still has a couple though :\ 2011-07-04T12:36:53 @later tell sir_macelon is your bot deterministic? 2011-07-04T12:36:53 McLeopold: OK 2011-07-04T12:37:09 * antimatroid thinks we need a later ask 2011-07-04T12:37:24 @later tell _flag is your bot deterministic? 2011-07-04T12:37:24 McLeopold: Yes master! 2011-07-04T12:38:03 mcleopold: deterministic irrelevant of starting position? 2011-07-04T12:38:07 that is hard to achieve 2011-07-04T12:38:29 I want to replay this game with a different cutoff setting http://aichallengebeta.hypertriangle.com/game/58696 2011-07-04T12:38:33 a function of starting position is still deterministic 2011-07-04T12:38:44 sir_macelon was questioning if it was cutoff too early 2011-07-04T12:39:12 right now if you can old 66% of the population(including food) for 150 turns, it will stop the game 2011-07-04T12:39:18 so far only one complaint 2011-07-04T12:39:35 I haven't seen evidence of games going the wrong way yet 2011-07-04T12:41:17 maybe it would also be good to look for a trend in a sliding window or something before cutting the game short 2011-07-04T12:41:27 starts to get complicated though 2011-07-04T12:41:43 makes it harder for bots to estimate the end of the game 2011-07-04T12:42:16 jmcarthur: if you have verbose turned on in the latest playgame, you can see the logic of the cutoff 2011-07-04T12:42:36 it displays the current bot with 66% or move, and counts the turns 2011-07-04T12:42:43 /move/more/ 2011-07-04T12:43:38 also, with the cutoff logic, if there is 66% percent of food for 150 turns, the game gets stopped, this shortens games of bots that suck and can't find food 2011-07-04T12:43:46 That's probably the biggest payoff 2011-07-04T12:43:57 in games per minute, that is 2011-07-04T12:46:17 *** McLeopold has left #aichallenge 2011-07-04T12:46:50 antimatroid: are you asleep? 2011-07-04T12:47:50 mcstar: i am terrible at going to bed :) 2011-07-04T12:47:56 ok :) 2011-07-04T12:48:15 hey i noticed that from going either direction my alg. scans more squares than yours 2011-07-04T12:48:25 at least 2x much 2011-07-04T12:48:31 more not much 2011-07-04T12:48:51 So what's the current situation with Java bots? I read something along the lines of how the sandboxing really hinders performance, is that still accurate? 2011-07-04T12:48:55 which image of mine are you going off? 2011-07-04T12:48:58 so, maybe the problem isnt with backtracking, i think that scheme should work 2011-07-04T12:49:08 http://ants.zeroviz.us/u2Fhj/ 2011-07-04T12:49:14 the sub-suboptimal one 2011-07-04T12:49:29 that's when i order my search queue based off min h 2011-07-04T12:49:33 no minimising f at all 2011-07-04T12:49:37 aaaa 2011-07-04T12:49:44 ok 2011-07-04T12:49:55 so when you do, whats the problem then? 2011-07-04T12:50:00 i do notice a smaller number of searched squares off min f then min h on a draw though 2011-07-04T12:50:20 mcstar: my problem is that there is a better suboptimal path through the "Searched squares" 2011-07-04T12:50:31 i have a feeling weighted a* is going to have hte same problem 2011-07-04T12:50:40 and i don't think your backtrack method is going to be any better 2011-07-04T12:50:59 so when you use the normal a*, is there a problem or not? 2011-07-04T12:51:03 no problem 2011-07-04T12:51:11 ok 2011-07-04T12:51:19 try yours with normal a*, min f then min h, and min h 2011-07-04T12:51:25 is the path 76 long? 2011-07-04T12:51:32 77 2011-07-04T12:51:38 ok 2011-07-04T12:51:41 i could have overestimated it though 2011-07-04T12:51:42 so yeah 2011-07-04T12:51:56 76 between targets :) 2011-07-04T12:52:30 than all is right, i thought there was a bigger problem 2011-07-04T12:52:44 mcstar: http://ants.zeroviz.us/CgHBE/ i get that when i search with min f then min h 2011-07-04T12:53:04 it's better than just plain min f 2011-07-04T12:54:08 *** Naktibalda has quit IRC (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330]) 2011-07-04T12:54:51 http://ants.zeroviz.us/sGsmV/ that's min f 2011-07-04T12:56:43 mine is the same except a 5x5 region 2011-07-04T12:57:16 and a bit less jagged path 2011-07-04T12:58:50 *** _flag <_flag!~flag@69-165-173-172.dsl.teksavvy.com> has joined #aichallenge 2011-07-04T13:02:55 *** jmreardon has quit IRC (Quit: jmreardon) 2011-07-04T13:06:28 <_flag> @later tell McLeopold my bot is deterministic provided it starts in the same position (despite the map being symmetrical). If two moves are rated equally it might chose a different one based on the order they happen to be in which is based on its location on the map. 2011-07-04T13:06:28 _flag: Aye, aye, sir 2011-07-04T13:17:40 *** onensora has joined #aichallenge 2011-07-04T13:17:42 *** filter has joined #aichallenge 2011-07-04T13:38:48 *** sir_macelon has joined #aichallenge 2011-07-04T13:39:44 *** BtbN has joined #aichallenge 2011-07-04T13:40:28 * jmcarthur attempts to get a statically linked binary to run on the server 2011-07-04T13:40:41 contestbot: later tell mcleopold yes, it is deterministic 2011-07-04T13:40:41 sir_macelon: Ready to serve, my lord. 2011-07-04T13:40:50 it's a little bit of trouble, but i think easier than including all my dependencies 2011-07-04T13:41:28 jmcarthur: what functionality do you get from the external libraries? 2011-07-04T13:41:43 so far, just a decent hash table 2011-07-04T13:41:50 but i will eventually be using others too 2011-07-04T13:42:16 oh, i was storing things in them too 2011-07-04T13:42:26 key row, value (col1,col2...) 2011-07-04T13:44:43 *** Naktibalda has joined #aichallenge 2011-07-04T13:45:14 *** sir_macelon has quit IRC (Ping timeout: 252 seconds) 2011-07-04T13:45:16 another nice thing about this is i can pass runtime flags to my executable, like GC settings and stuff 2011-07-04T13:50:34 *** sergey_ has joined #aichallenge 2011-07-04T13:52:51 *** smiley1983 has quit IRC (Quit: leaving) 2011-07-04T13:52:55 *** sergey_ is now known as SSNikolaevich 2011-07-04T14:00:02 *** SSNikolaevich has quit IRC (Ping timeout: 258 seconds) 2011-07-04T14:02:07 *** Kingpin13 has joined #aichallenge 2011-07-04T14:02:45 yay my binary works! 2011-07-04T14:02:58 took long enough 2011-07-04T14:03:10 thanks a lot, iconv... *grumble grumble grumble* 2011-07-04T14:05:17 You used binary in uploaded zip and got it working? 2011-07-04T14:05:54 yeah 2011-07-04T14:06:01 hmm 2011-07-04T14:06:18 i had to make a wrapper that execs it 2011-07-04T14:06:47 also had to set some env variables since the server is different from my dev machine 2011-07-04T14:07:22 what language are you using? 2011-07-04T14:07:26 haskell 2011-07-04T14:07:30 ok 2011-07-04T14:07:34 i even got the server to show that by writing the wrapper in haskell 2011-07-04T14:13:45 sqrt is too expensive, lets roll my own 2011-07-04T14:14:25 mcstar: srsly? 2011-07-04T14:14:36 srsly 2011-07-04T14:15:11 what do you mean? 2011-07-04T14:15:34 actually i guess that's not a bad idea. we are dealing with small enough numbers that a tiny lookup table is probably sufficient 2011-07-04T14:16:59 at first i just was wondering how you would improve over the standard sqrt function 2011-07-04T14:17:02 id use a small iteration 2011-07-04T14:17:15 well, i dont need full precision 2011-07-04T14:17:20 yeah 2011-07-04T14:17:47 actually, why do you need to compute it at all? 2011-07-04T14:18:27 i like the way my a* works with euclidean heuristics 2011-07-04T14:18:37 and i need to take the sqrt 2011-07-04T14:19:19 it seems that my alg. faster than the call to sqrt 2011-07-04T14:19:41 so i dont want it to unnecessarily make it slower 2011-07-04T14:21:39 look at this: 2011-07-04T14:21:42 diff: 468.87723 2011-07-04T14:21:44 diff: 219.62624 2011-07-04T14:21:46 diff: 95.99179 2011-07-04T14:21:48 diff: 36.10255 2011-07-04T14:21:50 diff: 9.62265 2011-07-04T14:21:52 diff: 1.1224937 2011-07-04T14:21:54 diff: 0.019239426 2011-07-04T14:21:56 diff: 7.6293945e-6 2011-07-04T14:21:58 diff: 0.0 2011-07-04T14:22:04 *** gobang has quit IRC (Read error: Connection reset by peer) 2011-07-04T14:22:07 9 iterations, computing sqrt(1000) 2011-07-04T14:22:22 *** gobang has joined #aichallenge 2011-07-04T14:23:24 For how big numbers you need the sqrt? 2011-07-04T14:24:01 that is larger than i would do with a lookup table, yes, so the iterative version is probably fine, especially if you don't care as much about precision and you can cut the iterations down 2011-07-04T14:25:38 in fact, i bet you could even get pretty fancy if you felt like doing through the trouble... perform the heuristic for each neighbor in lock step and short cut the evaluation as soon as you are sure enough about which one is most optimal 2011-07-04T14:25:47 (reduce (lambda (sofar s) (* 0.5 (+ sofar (/ s sofar)))) (make-list 8 :initial-element 1000)) 2011-07-04T14:25:50 this is it 2011-07-04T14:25:55 that is, cut the iterations short 2011-07-04T14:25:56 im curious about its speed 2011-07-04T14:26:20 *** jmreardon has joined #aichallenge 2011-07-04T14:31:53 ok, speed wise ill have to drop reduce obviously 2011-07-04T14:32:12 * jmcarthur doesn't know what reduce does 2011-07-04T14:32:20 come on 2011-07-04T14:32:24 sure you do 2011-07-04T14:32:35 haskell doesnt have reduce? 2011-07-04T14:32:41 it has fold right? 2011-07-04T14:32:41 if it does it isn't named reduce 2011-07-04T14:32:51 is reduce a kind of fold? 2011-07-04T14:32:54 yes 2011-07-04T14:33:02 what does it do? 2011-07-04T14:33:19 (f (f (f (f a) b) c) d) 2011-07-04T14:33:29 where those come from a list 2011-07-04T14:33:47 sorry, the inner most is (f 0 a) for example 2011-07-04T14:33:47 no initial value? 2011-07-04T14:33:50 okay 2011-07-04T14:33:56 that's foldl in haskell 2011-07-04T14:35:16 i'm guessing the result of that make-list expression would be (1000 1000 1000 1000 1000 1000 1000 1000) ? 2011-07-04T14:35:30 yes 2011-07-04T14:35:50 and i dont think i have to explain lambda :) 2011-07-04T14:38:06 foldl' (\sofar -> (*0.5) . (+sofar) . (/sofar) $ replicate 8 1000 2011-07-04T14:38:16 i suck 2011-07-04T14:38:19 $ is for evaluations right? 2011-07-04T14:38:20 foldl' (\sofar -> (*0.5) . (+sofar) . (/sofar)) $ replicate 8 1000 2011-07-04T14:38:55 $ is just a way to get function application with different precedence 2011-07-04T14:39:04 foldl' (\sofar -> (*0.5) . (+sofar) . (/sofar)) (replicate 8 1000) 2011-07-04T14:39:07 ^^ same thing 2011-07-04T14:39:09 hey, tell me how to make it work in the interpreter 2011-07-04T14:39:34 i thought its for overriding delayed evaluation 2011-07-04T14:39:40 nah 2011-07-04T14:39:43 it's just sugar 2011-07-04T14:39:52 it's defined as f $ x = f x 2011-07-04T14:40:01 with a fixity declaration 2011-07-04T14:40:11 *** ibdknox has joined #aichallenge 2011-07-04T14:40:22 Not in scope: `foldl'' 2011-07-04T14:40:28 anyway, to get it to work in ghci, run ghci, then type ":m Data.List" to load the list module, then run that expression 2011-07-04T14:40:37 hmm 2011-07-04T14:40:52 i must have written that wrong 2011-07-04T14:40:58 No instance for (Num [a0]) 2011-07-04T14:41:02 i basically just translated what you wrote without paying attention to what it means 2011-07-04T14:41:03 blah blah 2011-07-04T14:41:08 oh 2011-07-04T14:41:17 cause now it complains a lot 2011-07-04T14:41:20 well, and i point freed s 2011-07-04T14:42:05 * mcstar doeasnt know what that means 2011-07-04T14:42:33 oh, what is the initial value for reduce? 2011-07-04T14:42:53 foldl expects a function and an initial value 2011-07-04T14:42:56 along with the list 2011-07-04T14:43:21 an almost literal translation from your code: (foldl' (\sofar s -> ((*) 0.5 ((+) sofar ((/) s sofar)))) (replicate 8 1000)) 2011-07-04T14:43:32 without removing parens or switching to infix 2011-07-04T14:43:48 but it still fails because there is no initial value 2011-07-04T14:44:24 does reduce just use the first element of the list as the initial value? 2011-07-04T14:44:47 if so then the correct translation would use foldl1' 2011-07-04T14:45:21 *** gobang has quit IRC (Read error: Connection reset by peer) 2011-07-04T14:45:42 *** gobang has joined #aichallenge 2011-07-04T14:46:13 with foldl1' it works fine 2011-07-04T14:46:18 so i guess that was it 2011-07-04T14:47:58 oh, sure start from the first element 2011-07-04T14:48:04 an almost literal translation from your code: (foldl' (\sofar s -> ((*) 0.5 ((+) sofar ((/) s sofar)))) (replicate │ VilleH 2011-07-04T14:48:06 | 8 1000)) │ Zannick 2011-07-04T14:48:08 20:43:32 jmcarthur | without removing parens or switching to infix │ Zepp 2011-07-04T14:48:10 20:43:48 jmcarthur | but it still fails because there is no initial value │ 2011-07-04T14:48:14 hell 2011-07-04T14:48:16 i hate this 2011-07-04T14:48:17 lol 2011-07-04T14:48:23 wrong buffer 2011-07-04T14:48:24 iterate (\n -> (*0.5) . (+n) . (/n) $ 1000) 1000 !! 8 2011-07-04T14:48:26 ^^ another version 2011-07-04T14:48:57 (defun sqrt-iter (val &key (iter 10)) 2011-07-04T14:48:59 (labels ((aux (sq times) 2011-07-04T14:49:01 (if (< times iter) 2011-07-04T14:49:03 (aux (* 0.5 (+ sq (/ val sq))) (1+ times)) 2011-07-04T14:49:05 sq))) 2011-07-04T14:49:07 (aux val 0)))now thats it, the cl version 2011-07-04T14:49:31 iterate (\n -> (1000 / n + n) / 2) 1000 !! 8 2011-07-04T14:50:02 and is it fast? 2011-07-04T14:50:04 " ok, speed wise ill have to drop reduce obviously" <-- why? 2011-07-04T14:50:20 yeah, in haskell that code should be pretty optimal, actually 2011-07-04T14:50:35 i could compile and check the core it generates if you'd like 2011-07-04T14:50:38 can you put it in a timer? 2011-07-04T14:50:46 or i could bench it, sure 2011-07-04T14:51:03 of course run it like a million times 2011-07-04T14:51:09 i'll use criterion 2011-07-04T14:52:18 okay, so i should stick with 8 iterations counting the initial value then? 2011-07-04T14:52:56 thats ok 2011-07-04T14:53:11 dang i didn't have criterion installed 2011-07-04T14:53:25 pardon me while i want for it to build 2011-07-04T14:53:34 *** choas has joined #aichallenge 2011-07-04T14:55:46 *wait 2011-07-04T14:57:42 *** karumph has joined #aichallenge 2011-07-04T14:57:46 oh, disclaimer... by "optimal" i mean "as good as it's going to get with ghc no matter how hard you try." ghc isn't amazing with floating point arithmetic 2011-07-04T14:58:18 should be acceptable though 2011-07-04T14:58:26 i'll compare it to the sqrt primop, too 2011-07-04T14:58:33 ok 2011-07-04T15:01:36 *** locutus2 has joined #aichallenge 2011-07-04T15:03:50 mcstar: http://hpaste.org/48723 2011-07-04T15:05:40 there is something wrong 2011-07-04T15:05:42 jmcarthur: looks like you used sqrt' in all the tests? 2011-07-04T15:05:53 no 2011-07-04T15:05:53 haha 2011-07-04T15:05:57 actually i did 2011-07-04T15:06:04 really? 2011-07-04T15:06:16 ah, ok the inner blocks 2011-07-04T15:06:34 yeah the primop is much much faster 2011-07-04T15:06:58 16.9ns instead of 301.6ns 2011-07-04T15:07:04 :) 2011-07-04T15:07:07 much better 2011-07-04T15:07:11 but let me check the core and make sure this compiled well 2011-07-04T15:07:14 i have similar results with cl 2011-07-04T15:07:55 *** karumph has quit IRC (Quit: Page closed) 2011-07-04T15:08:25 wow it compiled pretty horribly, actually 2011-07-04T15:08:29 i'll try the fold 2011-07-04T15:10:31 *** stocha has joined #aichallenge 2011-07-04T15:10:45 yeah the fold compiled a lot better. let me bench it 2011-07-04T15:10:55 i didn't realize that (!!) wouldn't fuse :\ 2011-07-04T15:11:02 jmcarthur: i totally agree with you about food spawn speed needing to be settled into stone somehow. 2011-07-04T15:12:18 mcstar: see the annotation: http://hpaste.org/48723 2011-07-04T15:12:19 jmcarthur: because otherwise we simply can't design a good food collection (impossible to anticipate spawning) 2011-07-04T15:12:25 stocha: yeah 2011-07-04T15:12:41 mcstar: so the fold version goes about twice as fast as the iterate/!! version 2011-07-04T15:12:49 disappointing 2011-07-04T15:12:57 but the core for the fold is optimal at least 2011-07-04T15:13:35 jmcarthur: i also totally agree about anything that affect the game or winning strategy should be speced. 2011-07-04T15:13:36 it's a tight, unboxed, recursive loop 2011-07-04T15:14:36 wtf, actually it's only unboxed on the accumulator 2011-07-04T15:14:38 grr 2011-07-04T15:14:39 ok, 1/30 speed 2011-07-04T15:14:44 that's i'm, i'm breaking out stream fusion 2011-07-04T15:14:47 thats not very bad 2011-07-04T15:15:09 stream fusion wtf are you talking about? 2011-07-04T15:15:14 :) 2011-07-04T15:15:18 noobie alert 2011-07-04T15:16:57 it's the big guns when it comes to fusion these days 2011-07-04T15:18:10 mine is like 1/60 of the speed of the original 2011-07-04T15:18:43 this one is down to 118ns 2011-07-04T15:19:15 so about 1/8 or 1/7 the speed of the original 2011-07-04T15:19:21 though the built in is using 2.58 ns 2011-07-04T15:19:46 that's pretty good compared to ghc's builtin 2011-07-04T15:19:56 yeah 2011-07-04T15:20:00 like i said, ghc is pretty bad at floating point :( 2011-07-04T15:20:02 but maybe you are on a phone 2011-07-04T15:20:16 it's the code generator, mainly 2011-07-04T15:20:16 kidding 2011-07-04T15:20:23 hmm, i'll the a different back end 2011-07-04T15:20:29 hey, they say lisp is bad for floating point 2011-07-04T15:20:46 but im not gonna code this up in c 2011-07-04T15:20:56 or will i? 2011-07-04T15:20:58 *try 2011-07-04T15:21:19 if i need speed badly enough i just write a little C for the main loop and bind to it from haskell 2011-07-04T15:21:33 antimatroid: i'm very sorry that the main team doesn't even want to beta tests the maps. I would like maps to be part of the specification. Because they are the main rule. 2011-07-04T15:21:39 cl has cffi, i could do that too 2011-07-04T15:21:48 but the contest doesnt allow this 2011-07-04T15:22:04 it's not against the rules if you can make it work 2011-07-04T15:22:21 it could be easier 2011-07-04T15:22:38 dang, the llvm backend isn't working for some reason 2011-07-04T15:22:49 i dont understand why cant they make a compiler-extension for makefiles 2011-07-04T15:23:00 or is there one? 2011-07-04T15:23:10 can the compile script run scripts? 2011-07-04T15:23:32 dunno 2011-07-04T15:23:40 i upload a file MyBot.makefile 2011-07-04T15:23:43 and thats all 2011-07-04T15:23:45 i'm now building binaries locally and uploading a wrapper to call out to my binary 2011-07-04T15:24:01 :S that ugly isnt it? 2011-07-04T15:24:03 *** stocha has quit IRC (Quit: Page closed) 2011-07-04T15:24:07 not that bad 2011-07-04T15:24:13 my wrapper is just a one-liner, really 2011-07-04T15:24:33 anywho,makefiles should work 2011-07-04T15:24:45 looks like my llvm woes are arch linux's fault 2011-07-04T15:25:05 yeah i wish :\ 2011-07-04T15:25:47 youre an archer too? 2011-07-04T15:26:07 yeah 2011-07-04T15:26:15 well, hello then 2011-07-04T15:26:19 nice to meet you 2011-07-04T15:26:30 i think it's just that arch has a bleeding edge llvm installed 2011-07-04T15:26:50 apparently ghc HEAD accounts for it now. i should get a copy of HEAD anyway 2011-07-04T15:26:54 look for an older one in the aur 2011-07-04T15:27:14 wth is llvm anyway? 2011-07-04T15:27:26 llvm is hotness 2011-07-04T15:27:37 Low Level Virtual Machine 2011-07-04T15:27:56 nah there isn't an older one in aur 2011-07-04T15:28:28 building ghc takes a while, so i'll just drop this benchmarking thing for the time being 2011-07-04T15:30:04 sure 2011-07-04T15:30:06 omg 2011-07-04T15:30:11 feels soo weird 2011-07-04T15:30:14 writing c 2011-07-04T15:30:25 i havent done that in quite some time 2011-07-04T15:30:28 heh 2011-07-04T15:30:47 its like i have to dumb down whats inside my head :) 2011-07-04T15:37:15 *** gobang has quit IRC (Ping timeout: 255 seconds) 2011-07-04T15:37:51 *** ibdknox has quit IRC (Remote host closed the connection) 2011-07-04T15:38:50 *** gobang has joined #aichallenge 2011-07-04T15:43:05 *** aerique has joined #aichallenge 2011-07-04T15:43:32 i forgot to program in c 2011-07-04T15:43:50 error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘-’ token 2011-07-04T15:43:51 how to? 2011-07-04T15:44:02 and i dont see the problem :S 2011-07-04T15:44:12 paste teh line 2011-07-04T15:44:31 can i have - in names? 2011-07-04T15:44:34 no 2011-07-04T15:44:37 aaaaaaaaa 2011-07-04T15:44:53 try an underscore 2011-07-04T15:44:55 im soo used to know, in cl we separate words with dash 2011-07-04T15:45:02 why'd you think they use those ugly underscores all the time :) 2011-07-04T15:45:14 okok 2011-07-04T15:45:19 i remember now 2011-07-04T15:46:34 they make fun of emacs but then turn around and use a shifted char in their variable names (not to mention {}) 2011-07-04T15:47:24 they make fun of emacs? 2011-07-04T15:47:54 i dunno, i'm just blabbering 2011-07-04T15:47:57 Who is "they" in this context? All C programmers? 2011-07-04T15:48:04 certainly not all ;) 2011-07-04T15:50:09 aaaaaa 2011-07-04T15:50:11 wtf 2011-07-04T15:50:32 is the arrangement on the server for each bot to virtually have a core all to itself for each turn? 2011-07-04T15:50:38 *** sir_macelon has joined #aichallenge 2011-07-04T15:50:58 or is it just one bot at a time for the whole game regardless of cores? 2011-07-04T15:51:22 *one bot at a time on the whole machine, that is 2011-07-04T15:51:53 *** _will_sell_5_BTC <_will_sell_5_BTC!~1@static-213-88-39-97.chebnet.ru> has joined #aichallenge 2011-07-04T15:51:58 100 000 000 repetitions of sqrt 0.466 sec, for the recursive: 26.4 sec 2011-07-04T15:53:26 jmcarthur: what is like the haskell varsion? 2011-07-04T15:53:38 is it tail-recursive, or is it a loop of some kind? 2011-07-04T15:53:50 jmcarthur: i don't know the arrangement but the game engine does have the option to run serially so it's easy to switch of there's any problems 2011-07-04T15:54:41 mcstar: it generates a tail recursive implementation 2011-07-04T15:55:15 this recursive c function is very sloooow 2011-07-04T15:55:38 c compilers suck at recursion 2011-07-04T15:55:50 but gcc should at least be able to handle simple tail recursion 2011-07-04T15:55:59 building with optimizations? 2011-07-04T15:56:04 but if i use -O3, its gone instantly 2011-07-04T15:56:18 well then use -O3 ;) 2011-07-04T15:56:21 i guess its not doing any work, cause i dont use the result 2011-07-04T15:56:24 ah 2011-07-04T15:58:56 *** Naktibalda has quit IRC (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110622232440]) 2011-07-04T15:59:04 with an iterative code, its 16 seconds 2011-07-04T15:59:38 so the difference is a factor of 30 2011-07-04T16:00:11 jmcarthur: i guess i wont be replacing sqrt after all 2011-07-04T16:01:57 contestbot: later tell mcleopold I didn't want to complain, just didn't know that cut off parameters were changed (from 90% and 100 turns), shouldn't this be stated officially? 2011-07-04T16:01:57 sir_macelon: Yes master! 2011-07-04T16:03:11 *** amstan has joined #aichallenge 2011-07-04T16:03:11 *** ChanServ sets mode: +o amstan 2011-07-04T16:07:57 well, certainly not with so many iterations 2011-07-04T16:09:29 *** pcavs has left #aichallenge 2011-07-04T16:09:31 *** VilleH has quit IRC (Quit: Page closed) 2011-07-04T16:09:33 well i'm still interested in seeing if the llvm backend at least beats ghc's native code generator, so i'll report back later. some time tonight i guess 2011-07-04T16:11:53 is it a virtual machine for haskell code? 2011-07-04T16:18:23 for haskell I believe it just acts as an optimization phase for the compiler, it's supposed to be quite good 2011-07-04T16:18:47 (in general, can't speak for how well it works with ghc) 2011-07-04T16:23:46 it's for many languages 2011-07-04T16:24:17 it can compile to machine code or to bytecode with a JIT interpreter 2011-07-04T16:24:25 in the case of ghc specifically it's only used to compile to machine code 2011-07-04T16:24:26 http://en.wikipedia.org/wiki/Fast_inverse_square_root 2011-07-04T16:24:30 take a look at this 2011-07-04T16:24:38 Overview of the code section 2011-07-04T16:25:03 do you need the sqrt or the inverse sqrt? 2011-07-04T16:26:37 sqrt 2011-07-04T16:26:50 it doesnt matter, im showing it as a curiosity 2011-07-04T16:27:19 nice comment 2011-07-04T16:27:25 ah 2011-07-04T16:27:27 well, i g2g 2011-07-04T16:27:35 bb 2011-07-04T16:28:06 *** gobang has quit IRC (Ping timeout: 255 seconds) 2011-07-04T16:33:14 *** jmreardon has quit IRC (Quit: jmreardon) 2011-07-04T16:36:28 *** jmreardon has joined #aichallenge 2011-07-04T16:37:37 *** pcavs has joined #aichallenge 2011-07-04T16:48:57 *** ibdknox has joined #aichallenge 2011-07-04T16:52:59 *** _flag <_flag!~flag@69-165-173-172.dsl.teksavvy.com> has quit IRC (Quit: Lost terminal) 2011-07-04T16:54:17 *** henry16 has joined #aichallenge 2011-07-04T16:55:41 *** aerique has quit IRC (Quit: ...) 2011-07-04T17:45:43 *** locutus2 has quit IRC (Ping timeout: 240 seconds) 2011-07-04T17:47:21 *** onensora has quit IRC (Ping timeout: 276 seconds) 2011-07-04T17:47:46 *** onensora has joined #aichallenge 2011-07-04T17:50:54 *** _flag <_flag!~flag@69-165-173-172.dsl.teksavvy.com> has joined #aichallenge 2011-07-04T17:52:52 *** ltriant has joined #aichallenge 2011-07-04T17:57:53 *** ltriant has joined #aichallenge 2011-07-04T18:15:47 *** Palmik has quit IRC (Remote host closed the connection) 2011-07-04T18:19:20 *** choas has quit IRC (Quit: leaving) 2011-07-04T18:26:58 *** Apophis has quit IRC (Read error: Connection reset by peer) 2011-07-04T18:29:25 *** Apophis has joined #aichallenge 2011-07-04T18:38:41 *** henry16 has quit IRC (Quit: Page closed) 2011-07-04T18:38:42 *** parsley has joined #aichallenge 2011-07-04T18:46:43 *** nux67 has quit IRC (Quit: Page closed) 2011-07-04T19:39:38 *** sir_macelon has quit IRC (Quit: Page closed) 2011-07-04T19:59:39 *** mcstar has quit IRC (Quit: WeeChat 0.3.5) 2011-07-04T20:19:06 *** jbrechtel has joined #aichallenge 2011-07-04T20:22:49 We still won't be able to include precompiled libraries to use with our bots this time, will we? 2011-07-04T20:40:23 *** antimatroid has quit IRC (Ping timeout: 240 seconds) 2011-07-04T20:51:26 *** _flag <_flag!~flag@69-165-173-172.dsl.teksavvy.com> has quit IRC (Read error: Connection reset by peer) 2011-07-04T20:51:34 *** pcavs has quit IRC (Ping timeout: 250 seconds) 2011-07-04T20:55:02 *** _flag <_flag!~flag@69-165-173-172.dsl.teksavvy.com> has joined #aichallenge 2011-07-04T21:02:38 *** jbrechtel has quit IRC (Remote host closed the connection) 2011-07-04T21:05:09 *** jbrechtel has joined #aichallenge 2011-07-04T21:21:17 *** pcavs has joined #aichallenge 2011-07-04T21:21:24 jbrechtel: you potentially could, but it's not supported 2011-07-04T21:22:38 amstan: Ok, cool. It's not against the rules though, just potentially not supported. 2011-07-04T21:23:09 With that in mind, is there any real reason I need to send my source? Is it just because the compiler step would fail otherwise with no source files to compile? 2011-07-04T21:23:23 as fas as i know, the only way to include precompiled things and then get the contest to execute them is python/ctypes 2011-07-04T21:23:24 s/potentially not supported/potentially won't work/ 2011-07-04T21:24:02 if the compiler step fails it won't let the bot in 2011-07-04T21:24:37 It *looks like* the Scala compiler code tries to support included jars. Though the Scala compiler code seems to be broken anyways. 2011-07-04T22:04:49 *** onensora has quit IRC () 2011-07-04T22:09:37 *** smiley1983 has joined #aichallenge 2011-07-04T22:22:38 *** jbrechtel has quit IRC (Ping timeout: 252 seconds) 2011-07-04T22:49:42 *** AlliedEnvy has quit IRC (Ping timeout: 255 seconds) 2011-07-04T22:55:37 *** antimatroid has joined #aichallenge 2011-07-04T23:01:30 *** AlliedEnvy has joined #aichallenge 2011-07-04T23:01:39 *** smiley1983 has quit IRC (Quit: leaving) 2011-07-04T23:06:48 *** MuTaLiSk has quit IRC (Quit: Bye) 2011-07-04T23:10:30 jmcarthur: why are you calculating square roots anyway? 2011-07-04T23:10:40 if it's for the euclidean metric, just square it and all distances are integers 2011-07-04T23:14:11 antimatroid: that was mcstar, not me 2011-07-04T23:14:38 antimatroid: we got sidetracked by various ways to write sqrt 2011-07-04T23:15:06 antimatroid: but anyway, mcstar is using it for something in his heuristic for A* and says he can't get rid of it, so... 2011-07-04T23:15:12 i asked the same question 2011-07-04T23:15:34 i don't understand why he can't get rid of it, but i'll ask him ;) 2011-07-04T23:26:29 amstan: that's not the only way. my current submission is a binary 2011-07-04T23:26:52 amstan: i just wrote a wrapper program to exec the binary. the server just compiles the wrapper and calls it a success 2011-07-04T23:27:19 oh, *libraries* 2011-07-04T23:27:28 well, that's possible outside of python, too 2011-07-04T23:28:10 so long as you can sneak it into the linking stage of your build system. tough to do with gcc, but not necessarily the case with other compilers 2011-07-04T23:29:00 *** computerwiz_222 has joined #aichallenge 2011-07-04T23:32:03 the llvm backend helped a little across the board in my sqrt benchmarks, but didn't fundamentally change anything 2011-07-04T23:48:12 *** pcavs has quit IRC (Ping timeout: 255 seconds)