jacek: good morning
pp704554: Good morning
jrke: jacek i wanna know what does caturday means?
dbdr: caturday is tomorrow
jrke: what does it means
jacek: everyday shall be caturday
jrke: :money_mouth: jacek
jrke: i like your all minimax bots jacek
ZombieAuntie_6b84: Hello guys
jacek: minimax bots?
jacek: horee shit im 1st in oware
Astrobytes: gg jacek, I'm impressed. What did you change?
jacek: last iteration i fixed my move pool and added tree reuse
Astrobytes: It seems to be working!
Astrobytes: good score too, think you can improve it?
jacek: if I learn AVX stuff for my eval
Astrobytes: ah, have fun with that :)
baobigbang: how to learn more about backend python?
tomatoes: do backend python
Astrobytes: It's not funny, it's true.
baobigbang: thank everyone :D
TheSpiffiest: Craaaap. I have an awesome job offer to do some amazing stuff in C, but I'm trying to convince them to use Rust instead so I can maintain some sanity
TheSpiffiest: I think I am going to turn it down if any little typo blows the stack somehwere
YCS-Venom: i want to tell something
YCS-Venom: Hello world
YCS-Venom: who have solved ASCII Art?
YCS-Venom: i have solve it but there is a problem in case 3
proscripterlol: i cant do any ascii art problems
proscripterlol: it confuse me
YCS-Venom: it's very simple
YCS-Venom: but it depends on which language do you use
proscripterlol: what do you use?
YCS-Venom: which problem?
ConvexHullTrick: hi guys i code for 1 $
YCS-Venom: for one hour?
YCS-Venom: Can you explain mr.fish
YCS-Venom: True && False
jacek: SyntaxError: invalid syntax
Washier: love that track
Washier: yes, i'm old
Washier: like a million years old
Apurba: how to solve ASCII ART?
tomatoes: that's classified information
k4ng0u: anyone has tips on how to make simulations faster on othello? I currently use 64bits bitboards (one for me, one for opp) but it's still really slow. It's likely that the way i compute the next move is really suboptimal (iteration on every cell in all directions until I find a move)
MSmits: k4ng0u use this https://www.hanshq.net/othello.html
MSmits: was shared on this chat before by RoboStac
MSmits: you can make it even faster using SIMD instructions, but this is already quite fast
Astrobytes: Hey MSmits, donno if you fixed it but your bot was printing a9 again last night
MSmits: oh really
MSmits: never fixed it then lol
MSmits: I've given up on my eval for now. I need to find a way to automatically tune weights
MSmits: like TD or coevolutionary learning
MSmits: can also use that for other multis
tomatoes: 8x8 is not enough
k4ng0u: thanks MSmits, I think "Storing the disks in bitboards is memory efficient, but it's nothing more than a cute trick unless we can operate on them efficiently" is a good summary of why my bot is performing quite poorly despite using bitboards :D
MSmits: yeah thats true
MSmits: though, if you're doing mcts or similar, you can store the board on the node if it is small
MSmits: so it helps even if your move generation sucks
tomatoes: i stuck on training too :slight_smile:
MSmits: yeah, I get the gist of both TD and coevolutionary training, but I need a good example really
MSmits: i dont want to spend the time to figure it out all on my own
MSmits: oh btw Astrobytes I found a way to cheaply calculate disk stability, but then it didn't improve my bot at all
Astrobytes: I've got my offline runner ready, and that's about it lol
Astrobytes: Oh really MSmits?
Astrobytes: I thought stability would be important
MSmits: so far the only thing that i've seen work for my bot were mobility, C and X corners
MSmits: yeah, it even solves games slightly sooner
MSmits: because when you have 32 stable disks you win
MSmits: 33 that is
Astrobytes: Hm yes, that's true
MSmits: so it should work, but who knows, maybe it's being hurt by a different parameter that is too low or high
MSmits: thats why i need TD or similar
Astrobytes: Oware all over again
Astrobytes: Wonder if a GA would be any good for tuning
MSmits: thats basically coevolutionary learning
MSmits: but I've never done a GA either
Astrobytes: Yeah, sorry, just thinking aloud
MSmits: i've skimmed through a lot of papers
MSmits: seemed TD was able to train an Othello bot more narrowly, performing well against strong bots
MSmits: GA was more versatile, making bots that destroy weaker bots, but performs somewhat worse against strong bots
MSmits: its not that strange i think if you consider how the process goes
MSmits: TD can be vulnerable to overtraining I think
Astrobytes: GA also vulnerable to overfitting
Astrobytes: Anyway, gotta go for now, bbl
MSmits: cya Astrobytes
icecream17: people are spawning at the same place i am https://www.codingame.com/share-replay/477501683
MSmits: they use the same heuristics as you do
eulerscheZahl: you found the annoying part of platinum rift
eulerscheZahl: there are some ways to counter this. but only by chance, depending on your opponents it might be worse
eulerscheZahl: like spawn in 2nd turn or spawn at 1 continent only
eulerscheZahl: some even take the antarctica and hope for a 2nd place in 4 player matches
icecream17: all of those strategies sound very interesting...
icecream17: Ok i got a pesudorandom generator, but i don't know what to do with these numbers: (sample) [551568, -54194, 1, -2606272, 624, 13182, -8, -1791432, 25492589328]
nitekat: strange... on one CoC I pass all the tests but get 0% after I submit the result... don't get it...
thanhhv317: i am Thanh
tomatoes: what was your plans about random generator?
thanhhv317: am using JS, with nodejs, react js and mongo i am becoming a fullstack developer
MSmits: I'm not even halfstacked
icecream17: spawn in places with maxplatinum but messed-up-ish randomly
MSmits: but hi
icecream17: i had an idea to detect "sections"
Washier: short stacked myself
MSmits: I think I'm bytestacked
Astrobytes: My stack overflows
Washier: cant beat that
Washier: is that a good thing stro?
Astrobytes: Sometimes? :D
Astrobytes: I quite like stro, like 'stro
Washier: yes. me too. thats how nicknames are created :)
Astrobytes: Got a good ring to it
Washier: what's the cat's name?
Washier: ah, had a Gizmo once. was awesome
Astrobytes: She has a big chin, makes her look just like Gizmo from Gremlins
eulerscheZahl: like Gizmo from wechall
Astrobytes: lol, every time
eulerscheZahl: yes :D
eulerscheZahl: am i the only one mentioning that?
Washier: no idea what that is
MSmits: i only know the gremlins reference
eulerscheZahl: i guess wechall isn't that popular after all
Washier: mee too
Astrobytes: For the uninitiated: https://www.wechall.net/
eulerscheZahl: http://www.wechall.net/profile/Gizmore oh, it's not even gizmo :D
Astrobytes: Just noticed that
Astrobytes: Close enough, I always read it as Gizmo
Washier: sure people know this : https://projecteuler.net/
MSmits: Astrobytes I think I fixed my A9 error
Astrobytes: When 'Defend the Web' was hackthis.co.uk I won a t-shirt
Astrobytes: Years and years ago
Astrobytes: What was it this time MSmits?
MSmits: i was reusing the tree while checking whether the boards for p1 and p2 are the same, forgetting that the player that is next to move is also a factor
MSmits: with passes that will screw things up
Astrobytes: Yes, indeed. And I believe passes were involved when I saw it happen
Astrobytes: Yes Washier
MSmits: my bot is in the ballpark with rank 2-4 now I think... I simply added all features I could think off, gave them a weight and it worked somehow. Turned everything back on :P
Washier: when i try to do that it doesnt work that well :)
Astrobytes: Did you see jacek's Oware?
MSmits: yeah, it's a NN?
Astrobytes: Not 100% sure what it is, some hybrid thing
MSmits: I see
MSmits: I really need to figure out a way to auto-fit weights
MSmits: no more of that cg bench :poop:
MSmits: it would be cool if i could create a program where I feed it a bot with arguments for current weights and it starts training and changing those weights
MSmits: it could even be arena-less
MSmits: because all my bots have a solver
MSmits: so i dont need the referee
MSmits: mmh not a GA in the usual sense I think
MSmits: a GA usually has a fixed scoring system for a solution
MSmits: my bot will just lose, draw or win some number of times
MSmits: the opponents will vary as well
MSmits: nice submit right? jacek is beating me hard, but otherwise it's cool
Astrobytes: good job man
Scarfield: For each weight run N sims 3 times with different values. Assume the winrate is 2nd order polynomium with respect to the weight value, solve for "optimum" weight value. repeat for next weight. Or something like this approach could work i suppose
MSmits: thats what i've been doing for 2 years
MSmits: more or less
MSmits: but i run against CG bench players. Even though i pick several, I end up overfitting
MSmits: usually I pick 4 opponents around my rating, one or two of which are stronger and i simply take the global winrate as the score
jacek: yes, for oware its jacekmax and MLP
Washier: multi layer perceptron?
Washier: so NN :)
jacek: yes, NN
Scarfield: if you are using a prune array, it should be JaCegMax
Astrobytes: Hi Prunefield
Scarfield: hello, but heading off again, noobs in CS needs owning
Scarfield: 'stroBytes :p
Washier: haha. 'stro
karliso: How does NN work? Is it like large lookup array with multiple inputs?
MSmits: NN in general karliso?
karliso: In context of CG
jacek: in my context i use it for eval
karliso: So it is like precumputed eval function
MSmits: mmh kinda
Washier: yes, but trained.
MSmits: a NN is basically a giant function with thousands of parameters
karliso: But suppose i have 8 inputs... with 8 values... .. it gets large very fast.
MSmits: it's not a lookup array
karliso: So how do you retrieve value?
jacek: imagine chess. and evaluation function which takes material into consideration. so youre summing pawns * weight1 + rooks * weight2 + queens * weights3 etc.
MSmits: there's layers of nodes and each layer of nodes is connected to the next
MSmits: until you get to output layer
jacek: your input is number of your pawns and enenmy pawns, you multiply by weights and get the result
MSmits: the multilayered approach makes the network able to encode higher dimensional patterns
MSmits: similar to ntuples, but it could be anything
jacek: in NN you have hidden layer, which would take the results, scramble them more and give output
jacek: and hidden layer could see some more interactions between pawns and give better eval
MSmits: karliso you should really watch some introductory videos, it's not easy for us to explain it here
karliso: I have watched about NN, was a while back.
AntiSquid: i question my own time investment after reading chat :/
MSmits: how so AntiSquid?
icecream17: Example NN:
icecream17: Input 5
icecream17: Node 1: 5 * weight + bias = 2
karliso: How do you train NN?
MSmits: you play tons of games
MSmits: the results are backpropagated along the network
Washier: also fancy math called backprop
MSmits: adjusting the weights
MSmits: its not like backpropagation of mcts though
MSmits: it uses gradient descent
AntiSquid: look up any tutorial vids karliso
karliso: So you use referee to play games?
MSmits: but create your own ofc
AntiSquid: well depends how you wanna train it
karliso: Your own referee?
Washier: you can also evolve NN's :)
MSmits: you've never made your own copy of a simple arena for a game?
MSmits: not even uttt?
AntiSquid: wdym evolve
Washier: yes, karliso you are the utt champ :)
karliso: I did for hypersonic... but then i realized someone had already programmed the thing.
MSmits: so you use a java referee for uttt?
MSmits: oh thats fine ofc, it's not really the bottleneck anyway
AntiSquid: MSmits i mean look how easily he ranks higher, then asks questions about more complicated stuff (not first time it happens) ... clearly i fked up somewhere :p
MSmits: it's just so simple to code a uttt game
Washier: use the NN as the eval. GA's work by evolving a solution, that means crossing over and mutating the population continiously. Survival of the fittest. you play the population against each other to rank
Washier: takes time.
inoryy: did someone say NN?
MSmits: AntiSquid it's because I only learn what I think I need and then I leave out a lot of stuff that is generally assumed common knowledge
MSmits: oh you mean karliso
Nanosplitter: Is there a good reason no one has made a chess competition on CG?
MSmits: yes he does this too, maybe more so
MSmits: Washier isnt this coevolutionary learning?
Astrobytes: inoryy has been awoken from his slumber
MSmits: because that may be what I need to learn about
karliso: But even if NN is good it may not be the best approach in CG due to code size.. right?
AntiSquid: i think thats called ensamble, personally would have thought a self modifying NN is evolving ... Washier
MSmits: in some cases that's true karliso
MSmits: the simpler the game the easier it is to train a bot and the more easily it fits into codesize
MSmits: train a NN i mean
AntiSquid: Nanosplitter people afraid of precomputed moves
MSmits: remember that the codesize limit is also an advantage in that you're forced to train simpler NN's and it makes sure you dont need to rent TPU's to even train them :)
inoryy: Astrobytes :D
Nanosplitter: My NN is bronze in UTTT, but that could just be because I didn't do a good job training it
MSmits: Nanosplitter currently there are no top-NN's in uttt
Nanosplitter: AntiSquid what if I used the
inoryy: MSmits TPUs aren't actually the biggest in terms of model size capacity
Nanosplitter: bumped enter lol
MSmits: i'm just throwing out fancy words inporry
jacek: why maths in backprop is so complicated
AntiSquid: NN best approach, just need to squeeze it in after you figure out best model ...
Nanosplitter: Really Bad Chess (an app) strategy, of randomizing the chess pieces in their staring pos
jacek: why do they use derivatives and whatnot, when in code its just simple loops and additions
MSmits: it doesnt seem complicated. Coding it effectively seems more so
karliso: My uttt codesize is close to 100K and I even got rid of opening book.
MSmits: how does that happen karliso?
Washier: Backprop is not the same as evolving. Evolving it means you're searching randomly, backprop means you're training it against a ground truth.
MSmits: large variable names? I have less than 1k lines
inoryy: you're mixing something up, Washier
karliso: 3700 lines
MSmits: how is that possible karliso, what did you put in that bot?
MSmits: my bot is considered large at 1k
karliso: I guess some parts of the code have evolved in great detail.
AntiSquid: jacek "because a formula is easier to read and understand at a glance"
MSmits: they must have karliso
Astrobytes: that Really Bad Chess is like Fischer Random++
Nanosplitter: Yeah, does that seem feasible for CG?
Nanosplitter: Removes precomputed moves
Astrobytes: I think so. struct was considering doing Fischer Random and regular, this would be pretty cool I think
Astrobytes: But he's busy at the moment
Nanosplitter: I'm just worried that I can't gaurentee each board would be 100% fair
AntiSquid: but why not have real chess on CG ? alpha zero plays differently from the other bots and wins
Astrobytes: Well, limits could be set I guess
MSmits: isnt chess too complicated to use alphazero on within CG limits
Astrobytes: AntiSquid struct was gonna do real and variant chess
MSmits: I doubt it will work
MSmits: I think a ab-bot will win
MSmits: with strong openings and such
AntiSquid: struct slacking? give him more tasks
Washier: if the eval is good certainly?
Astrobytes: He's working on something rn
Astrobytes: So wouldn't be for a while yet
Nanosplitter: MSmits Would it still win if you did the really bad chess style?
Nanosplitter: If you can't preset openings
MSmits: same problem for anyone
Nanosplitter: You guys think I should try and make a really bad chess game for CG?
icecream17: that's a great idea
MSmits: maybe have a real chess first and see how well it works within the CG framework?
MSmits: or do this first
MSmits: before struct makes his
MSmits: if it fails, its a waste of effort for 2 people otherwise, that would be sad
Nanosplitter: So do really bad chess first?
AntiSquid: do chess and eliminate the castle move to piss off the chess enthusiasts
MSmits: it could be good to learn from one game before doing the next
Washier: AntiSquid haha
icecream17: maybe chess where you try to lose
MSmits: it's going to be different anyway, you need to have some way to resolve end games
icecream17: there are so many endgames
MSmits: it might not be a bad idea to put an endgame database into the referee
MSmits: to resolve games at turn x
MSmits: with a point system to deal with endgames not in the db
inoryy: if you don't win by X turn both players lose
MSmits: or draw?
inoryy: that's too easy
Nanosplitter: I mean like you can do the rule of if no captures have been made in 50 turns it's a draw
Nanosplitter: Or both lose
MSmits: whatever works
inoryy: both players win! non zero-sum chess
icecream17: chess but the goal is to checkmate the queen
icecream17: nah... the king should be somewhat limited
icecream17: chess (but goal is some arbitrary thing)
Nanosplitter: Could limit the turns to like 70, and if the game isn't over by then it's a draw
Nanosplitter: Force agressive plays
icecream17: maybe the goal should be to get all your pieces on the other side of the board
AntiSquid: in the row of captured pieces
AntiSquid: i dont think forcing draws is a good idea, a lot of competitive players force a draw :/
inoryy: just call it pro chess
AntiSquid: how do you find london inoryy? had a chance for sightseeing?
Nanosplitter: How would you suggest resolving a long game AntiSquid?
inoryy: actually the other way, avoiding people even more now, I'm afraid it was too early to open up pubs and a second wave is coming
AntiSquid: i dont know, im wondering myself how to make games have less turns for CG, a lot won't work Nanosplitter
icecream17: Flip the board upside down. Now pawns that never moved are almost gonna promote!
Astrobytes: I think we're gonna be in for it heading into the later part of the year inoryy
inoryy: yeah, at this point I'm starting to mentally prepare for the possibility that my first year in UK will be entirely in (self-)isolation
Astrobytes: What a welcome eh. Your moving here really was the epitome of bad timing
Washier: good luck.
AntiSquid: more interesting is one of the possible cures
inoryy: funny thing is that if I had my start date set to a couple of months later I could've just stayed in Estonia, work remotely, and be pretty much free of concern by now (life is back to normal, number of cases is in single digits now)
inoryy: oh well
AntiSquid: Hydroxychloroquine - got forcefully pushed aside with fabricated data, really odd huh
AntiSquid: are you gonna do remote work from estonia?
omer-chetin: show your code
inoryy: no, I'm stuck in UK now
inoryy: I think you're mixing up your sources on hydroxychloroquine -- it was forcefully pushed with fabricated data by trump et al and then set aside when evidence piled up that it has no or negative effects
inoryy: the "retracted" part isn't a giveaway?
AntiSquid: im sure i didnt mix up what i said, didnt follow the new btw
AntiSquid: news *
AntiSquid: well its going to be trialed basically, see first link
Astrobytes: "But The Lancet paper was based on fabricated data" - No, Surgisphere refused to allow access to it's databases due to violation of client agreements
Astrobytes: *Databases and related information
Astrobytes: Since the data could then not be verified, the authors withdrew the paper. Wording matters a lot.
Astrobytes: But yes, the trials will go ahead. That does not mean it works.
AntiSquid: only said possible
AntiSquid: what i thought is odd is this situation, everything needs to tried
AntiSquid: but i get what you are saying, still weird, youd think therd be more concern of how it affects the entire world
Astrobytes: Of course, but the initial study was bad, then Trump opened his gob - call that reliable?
AntiSquid: i dont watch trump news
MSmits: they have actual working medicines...
Astrobytes: Doesn't even matter, the initial study was bollocks. I don't think anything will come of the trials but hey, we'll see
MSmits: the thing is, if something works, it's usually not that hard to prove
MSmits: if it barely rises above noise level, it probably doesnt work
Astrobytes: Yes, it doesn't work unless the patient's hospitalised, even then 'all' it does is speed up recovery (that's great, but it's not a cure)
MSmits: if they could find a cure for it, they would have found a cure for the "common cold' already, because that is what it is related to
Astrobytes: Yes, in that it's caused by a coronavirus yep
Astrobytes: Oh and dexamethasone (a steroid) is also helping reduce mortality rate in hospitalised patients too, which is cool
Astrobytes: Well, ventilated patients at least
MSmits: yeah that helps
MSmits: would be better if people would just forego their own comfort and wear masks where they are told to
Astrobytes: Tell me about it, so many idiots around
AntiSquid: ah yeah, and i think you were saying you are not a virologist Astrobytes, but seems youre up to date
MSmits: anyone with a biological background would dive into this I guess
Astrobytes: I did a specialised cell biology course a few years back just for fun, it does interest me
Astrobytes: I'm not bang-up-to-date with reading the latest papers yet, I'll get around to it
icecream17: wow https://js.do/code/462652
icecream17: oops https://js.do/code/470288
AntiSquid: Automaton2000 interpret those links
Automaton2000: do it for my own moves
icecream17: wow! i actually... i did it! i think i did a floodfill
icecream17: It took 2ms for my whole code
jacek: you coded it in 2ms? noice
Astrobytes: Flooded successfully?
icecream17: no. i used the "sections" and now i'm crushing the bronze boss
Astrobytes: What are you playing?
icecream17: patinum rift
Astrobytes: 1 or 2?
Astrobytes: I see, haven't played that one. I liked 2
Astrobytes: gj btw :)
icecream17: not really crushing it anymore.... the boss is only 0.5 behind me now
Astrobytes: Hey, even if you're only a tiny bit ahead, or even a tiny bit behind, any progress is good progress right?
icecream17: i'm amazed
icecream17: oh. yeah
icecream17: i'm better than the boss!
icecream17: hmm. platinum rift 2
icecream17: whoa that looks totally different
Astrobytes: Well done
Astrobytes: Yeah, quite different
Astrobytes: 2 appealed to me more than 1 I have to say, will give 1 a shot at some point
AntiSquid: JS best language
icecream17: i don't know enough languages to know if thats true
AntiSquid: the best one is always the one you like the most, regardless what others say, trust me icecream17
AntiSquid: is a nice language, not the best, but still nice, i like it and i don't listen to haters
Astrobytes: Like most langs, D has it's place. Just gets meme'd to death on here 'cause of the zealots
AntiSquid: still waiting for next CG contest to code in D and output: you are getting wrecked by best language
Astrobytes: how's the ML coming along AntiSquid
AntiSquid: i am doing it on and off
MSmits: wax on, wax off
Astrobytes: Still on Kaggle I guess?
AntiSquid: on an emotional level it hurts just as much MSmits
AntiSquid: well i've done a few attempts on AIcrowd
AntiSquid: and failed to even get started on a challenge for hackerearth
MSmits: when did you start doing ML?:
Astrobytes: I haven't seen the hackerearth stuff
AntiSquid: well i didn't really start, i just do it to fill up my free time with something that seems to be meaningful
AntiSquid: i learn a few things then move on to something else when i feel a bit bored
MSmits: oh ok, just like everyone else then
Astrobytes: *+ purposeful
AntiSquid: well i did apply it so not really like everyone else :p
MSmits: hmm right
AntiSquid: first serious attempt at NN i started early 2019 from what i remember
MSmits: was that around when rec urse got into it ?
Astrobytes: Gone back to XR yet?
AntiSquid: well astrobytes hackerearth has some ML challenge, but you need to build your own stuff from scratch
MSmits: do you have to share everything you use? Including training programs and such?
Astrobytes: Bit of a step-up from Kaggle and such then
AntiSquid: it goes something like this: kaggle : gives you extra wheels, crutches, wheelchairs, anything you want, even during contests there's people sharing knowledge and code aicrowd: you get the starting code and it's often full of bugs and you need to adjust it to your own requirements
AntiSquid: hackerearth: this is the problem, upload the solution
MSmits: ok so no need for it to even be ML?
AntiSquid: MSmits you don't need to share anything, not sure what you mean
AntiSquid: obv they can look at your solution MSmits
MSmits: yes, but if we have a solution here on a contest, it is pretty much the whole thing
MSmits: if you train a NN offline, then the solution is just a bunch of weights
AntiSquid: on aicrowd you can avoid ML, but there's prizes reserved for ML first and foremost even if it's mixed ML + something else
MSmits: a big part of a NN is how you trained it
MSmits: I would not be surprised if some contests would require you to also share that part
AntiSquid: well from what i see it's just kaggle that factors in the pretrained part, the others take your model and run it in their environment + add extra "validators" (extra data / environments / etc)
MSmits: ah ok
MSmits: btw I am testing my bot vs top othello bots now. CG bench
MSmits: 22:16:20,883 INFO Temporary results for othello.cpp (ETA : 23 minutes) : http://chat.codingame.com/pastebin/68139fb3-cf07-4751-b447-c212e357afbe
AntiSquid: in some contests your code is shared if you are top 3 - 5 ? (aicrowd) apart from that i didn't see sharing with the general public as a requirement
MSmits: check out the 70-0 vs dbdr :P
AntiSquid: so what does dbdr use
MSmits: ab with all the enhancements and an eval that focuses on specific board features
MSmits: thats what I understood anyway
MSmits: like 300k weights
MSmits: probably similar to ntuples
Astrobytes: he uses ab with mpc
MSmits: but also many weights, so there has to be something else
Astrobytes: multi probcut
AntiSquid: what's the mpc part?
MSmits: its a pruning method
Astrobytes: You do that offline, hence the weights
MSmits: prune parts of the tree that are probably :poop:
AntiSquid: see this is where CG is getting closer to kaggle-like stuff ... :p
MSmits: oh really, it's the MPC that requires so many weights?
Astrobytes: yes, it's multiple linear regression essentially
MSmits: I see
MSmits: so it's not even an eval?
MSmits: just a pruning strategy?
Astrobytes: Unless he's doing something else then yes
Astrobytes: clue's in the name
MSmits: well it works really well. I think I can beat everyone else if they keep their bot the same and I spend enough time fitting weights, but I dont think I'll get anywhere near dbdr
Astrobytes: It's very effective for Othello
Astrobytes: Was developed for/using it iirc
MSmits: yeah I read that
MSmits: the best bots also use the ntuples thing though
Astrobytes: Also very effective yeah
MSmits: or at least an eval based on specific cell configurations
Astrobytes: Pretty nice
Astrobytes: Some use multiple approaches at different stages
MSmits: yes Edax is nuts
MSmits: different eval at every ply
MSmits: open source othello bot
MSmits: go steal some code if you want
MSmits: i can't use most of it for my bot
AntiSquid: i feel out of the loop here now :/
Astrobytes: Didn't look at the edax source, anything nice?
MSmits: everything you can think of basically
MSmits: except mcts
jacek: there are mmx and avx versions too
MSmits: yeah I took the stable disks code from there
MSmits: not anything else though
Astrobytes: oh cool, was it how we thought?
jacek: is it fast and/or accurate?
MSmits: it's accurate and fast yes
MSmits: didnt help my bot much so far
MSmits: but i solve a bit sooner
Astrobytes: as in was it similar to move resolution
MSmits: well some part of it
MSmits: it's really complicated though, somewhat recursive
MSmits: and uses lookups
MSmits: the way i did with oware
Astrobytes: Oh ok
MSmits: it looks up board lines
MSmits: edges i think
Astrobytes: Yeah that would make sense
jacek: like ntuple without the weights part
MSmits: whats that jacek
Astrobytes: adjacent stable discs from corners going outwards essentially
MSmits: without the weightS?
jacek: like lookup table
jacek: 8x1 edge -> number of stable discs
MSmits: Astrobytes yeah, i had an algo for that, but it didnt avx very well unless i did multiple boards at once
MSmits: jacek ah yes
Astrobytes: yup, that figures
MSmits: I do this in a lot of games, yavalath and oware spring first to mind
MSmits: uttt as well
MSmits: with all eval features I can think of I am still using over 1 million nodes per turn. My bottleneck really is not my rollout count
MSmits: it kills me that robo eva;s 3k nodes per turn lol
AntiSquid: question then is how does he select them?
MSmits: it's probably another alphazero
AntiSquid: he might be analyze them much better
MSmits: so it's node value + policy
Astrobytes: It is, he said so the other day
Astrobytes: (unless I'm mistaken, but I'm pretty sure)
MSmits: but it's not an i-win button for sure. Robo always does well with it, but rarely stays at nr 1 with it
MSmits: thats because of CG limitations I think
jacek: or maybe hes noob
Astrobytes: Would be interesting to see these bots playing outside of CG constraints
MSmits: he's not an expert at it, but azero is very well documented. He's a great coder afaik, so he can follow those
AntiSquid: fight him in clash of code jacek, will see who is noob
Astrobytes: Together I mean
MSmits: what if I take a weight
MSmits: say this is the weight at ply 22
MSmits: then apply a gradient
MSmits: with positive addition at higher plies
MSmits: or negatieve
MSmits: so it's 100 at 22
MSmits: 95 at 21, 105 at 23
MSmits: weight dependent on ply
MSmits: linearly as game progresses
MSmits: that might be good for othello no?
jacek: game stage interpolation?
AntiSquid: why not consider 2 weights and that give the value combined based on different factors instead?
AntiSquid: so you can have a more accurate function
MSmits: AntiSquid I already have all the general factors (not based on patterns)
MSmits: that's like 8 features
MSmits: but they are game stage dependent
MSmits: well I could add disc count
MSmits: dont have that yet
MSmits: this is definitely game stage dependent
Astrobytes: played around with negative disc count, well difference
MSmits: how did that go?:
MSmits: it's a very cheap eval
MSmits: only reason to leave it out is probably if the weight is near or at 0
Astrobytes: promising sometimes, dependent on the other params though (quel surprise)
AntiSquid: disc count isn't best measure of board strength though, doesn't that add noise to your eval?
MSmits: if it did, it would fit to weight = 0
Astrobytes: negative disc count
MSmits: then you'd leave it out
Astrobytes: The fewer discs you have during the game usually is a good thing
MSmits: except at the end, but then you're solving anyway
Astrobytes: Well yeah
AntiSquid: i always aim for corners when i play it myself
MSmits: thats why my corner weight is huge
Astrobytes: Yep, that and being careful with the X and C squares ofc
AntiSquid: corners, then edges, then 2 spaces distance from edge ... i try to avoid the line inbetween edge and middle
AntiSquid: but even there it depends ... because sometimes there are safe captures
MSmits: how do you recognize a safe capture?
Astrobytes: High mobility/less frontiers and vice versa for your opponent
MSmits: i have frontiers in there too
AntiSquid: ya not sure how i would put it in code, but there are instances where you can capture without risk of having your piece closest to edge/corner captured afterwards
MSmits: very low weight
MSmits: put them back in just to see if i can have a weight other than 0
MSmits: I see
MSmits: so you've played othello seriously? Or at least a reasonable amount?
AntiSquid: just "reasonable" amount online for fun
MSmits: against players or AI?
AntiSquid: enough to notice some "hard AI"s out there have flaws :p
AntiSquid: players too
Astrobytes: I've played irl, you can't have beers playing it let me tell you
MSmits: too much disc swapping?
Astrobytes: *when you're playing it
Astrobytes: You need your wits about you to flip the right ones lol
MSmits: ohh ok
Astrobytes: It's a good one to play in the afternoon outside when the weather is nice or inside otherwise
Astrobytes: For me at least
Astrobytes: And less angry than enraging my friends playing Yavalath on my whiteboard whilst tipsy
MSmits: you should order a real yavalath board
Astrobytes: Yeah, I really should tbh
MSmits: also why do your friends get angry?
MSmits: cuz you always win?
Astrobytes: Not always that, perhaps just me forcing them to play at inappropriate times? :D
MSmits: ahh ok
Astrobytes: "Go on, just a quick game or three"
MSmits: it's a great game for human gameplay I think
MSmits: ok for AI, but specifically for humans
Astrobytes: It really is
Astrobytes: Great bug
MSmits: kill it!
Astrobytes: My masks are flipped
MSmits: well you can fix that easily
Astrobytes: yes, but I've been altering lots of other things to fix the 'bug'
MSmits: ahh I know that feeling
Astrobytes: Meh. Another revert + fix tomorrow
Astrobytes: Still, that's 1 less
Astrobytes: Was wondering why I had such a discrepancy between my CG IDE version and my offline runner version
MSmits: oh they didnt have the same bug?
Astrobytes: Nope, I've been working on the CG IDE version using results from the other
Astrobytes: Therein lies the issue
MSmits: oh ok
MSmits: I would say it's bad practice, but I do a lot worse
Astrobytes: It's terrible practice, and my offline runner is just two instances of the same agent fed with different parameter coeffs, hacky
Astrobytes: Although it's quite flexible, I should rewrite it a bit to make it a little more generic
MSmits: my offline runner for meta mcts is usually just 1 instance of a bot playing itself using 1 reused tree :P
MSmits: also it decides by itself which of the two selves won :P
Astrobytes: Yeah I'm not running an MCTS type thing yet, that's a headache for another day
MSmits: it's a headahce the first time
MSmits: gets a lot easier, i reuse the entire gui part
Astrobytes: like most new things I guess
Astrobytes: meh, guis
Astrobytes: I love my console window
Astrobytes: Though actually I'm probably gonna do some visuals, and use imgui for the gui elements. It's on the list
Astrobytes: lovely MSmits :D
MSmits: you can see the reused part :P
Astrobytes: jakobus89 can you not post random links in this chat please, thank you
Astrobytes: jakobus89 can you also not post random clash links either
Astrobytes: You can ask politely if people would like to join
Astrobytes: Great. Thank you for the live updates.
Astrobytes: MSmits - what's with the zoom
MSmits: oh I can use it to walk through the tree
MSmits: I *play* a move
MSmits: see the new board and node values
MSmits: when i click "up" i go back up the tree
Astrobytes: So it's totally not what one would assume of a 'Zoom' button :D
Astrobytes: You never did HCI right
MSmits: i dont know why I called it that at first, but it stuck
MSmits: nope and I have to teach it
MSmits: in 2 months
MSmits: one of the first topics
Astrobytes: lol, just don't show 'em that :D
MSmits: hehe i wont
MSmits: i did some things right though, buttons with 1 word on it are good
MSmits: it's just the wrong word
Astrobytes: wdym, "Press this button for the result" is a great button caption
Astrobytes: Go under your desk
Astrobytes: See the arrow just below this chat? That one
MSmits: you can also disable it with /?disableChat at the end of your url I think
Astrobytes: It should minimise the chat for you :)
Astrobytes: Yeah not in a clash tho MSmits, it'll reload the window
MSmits: ah ok
Astrobytes: Right, now I have a list of bugs to fix. I call that a successful evening.
MSmits: yes, lists are good
Astrobytes: Haha, yes indeed. Anyways, I'm out now. I'll catch you later MSmits, take care and gn
MSmits: gn Astrobytes
proscripterlol: thanks for sharing code ibtahimozdogan it really helps
TheSpiffiest: So how many players are there?
TheSpiffiest: I see I'm 2,000 something. Out of how many?
ibrahimozdogan: you re welcome pros
ibrahimozdogan: could you share code
proscripterlol: can people actually share their code
proscripterlol: sometimes i get stuck on problem i want to see how other people solved it tolearn :'(
icecream17: what problem
thanhhv317: i have a number
thanhhv317: i want to get a "phan tu cuoi"
thanhhv317: help me
Izzobacul: i forgot to do it :)
jrke: happy caturday
AbundantPuddle: Clever Laminator
Laminator: Oh hey, thanks lol
Laminator: wow some of these reverse modes are frickin brutal