[Home]LauLectrik

Robo Home | Changes | Preferences | AllPages

LauLectrik is the big brother of NanoLauLectrik. Right now it is a Minibot, but may be it will become a Micro.

LauLectrik features a completely new pattern matcher, that develops the technology I used with NanoLauLectrik. I think the results are quite good, but first I'd like to see it in the eternal rumble.

LauLectrik won the Face2face competition 15.Feb.2003 (Minibots).

As all my bots, LauLectrik is a 1v1 bot.

LauLectrik 1.2 released! It features a completely new gun and some improvements as persistence for the data gattered in battles.

LauLectrik made it to the #5 in the Eternal Rumble just after entry!

How does it move?

I'm not good designing movements :-( It uses the same movement as MicroAspid, that is the most succesful movement I have so far.

LauLectrik 1.2 uses MicroAspid 1.4.6 movement.

How does it fire?

LauLectrik 1.0:

It uses a new technology: symbolic pattern matching. The idea is that instead of defining a matching function and then programming the search, you translate your variables into a symbolic space, put them into an String, and then use the built-in java substring search functions to match the patterns. It has some advantages compared to traditional methods:

I'm not using velocity and heading change to match the patterns, but some sort of measure of bearing change (in relation to my bot).

LauLectrik 1.2:

LauLectrik is an experimental bot. I rewrote its gun completely for this version. Now it features what I call a "best p-space" gun, which does not uses pattern matching. Rather, it keeps track of the rigth gun bearings to hit the target, finds the variables (for a given time) that best describe the hit-probability function (best describe = have more information) and uses this function to aim.

I'm quite satisfied with this gun, but I'm solving a couple of problems: (a) It learns slowly (b) It needs a lot of space to store the information from battle to battle.

How does it dodge bullets?

No dodging at all.

How does the melee strategy differ from one-on-one strategy?

LauLectrik is a OneOnOne bot. It hasn`t melee strategy.

Where did you get the name?

It's a kind of private joke.

Can I use your code?

I'm not releasing the code, but I have no problem to share the ideas, so just ask.

What's next for your robot?

I consider LauLectrik 1.0 quite experimental, and if the gun works as expected, it will be the development plattform to:

With version 1.2 I'm trying to develop a new approach (not pattern matching nor VB) to aim, and I keep thinking in the idea of developing a gun suitable for melee. Next steps will probably be to fix the problems the new gun has.

What other robot(s) is it based on?

Movement is from MicroAspid.


Comments: Do you use the pattern matcher to guess the new location of the enemy? How can "some sort of bearing change" help with that? Isn't it hard to factor away your own movement? -- PEZ

There are two clear tasks when you are creating a pattern matcher: first one is to match the good pattern(s), second one is to use this information to aim at your enemy. You can use the same set of information to match the pattern(s) and to aim at your enemy, but it is not necessary. LauLectrik uses "some sort of bearing change" to match the patterns, but aims by using the usual information (ie. last heading, velocity and heading change). About factoring away my movement: I'm not doing it (yet). For now, I assume it has a little impact on my aiming. -- Albert

Yes, of course! Thanks for clarifying. It seems LauLectrik's pattern matcher does quite well (assuming it uses only pattern matching for aiming). Which means I will also try to use bearing change for the match, my current matching doesn't do well at all against non-trivial bots, though Marshmallow somewhat compensates this with VirtualGuns. As for the symbolic match, I've been there, though I used Soundex. Without any success though. =) Then again Marshmallow doesn't need o save bytes, being a MegaBot. -- PEZ

LauLectrik uses only pattern matching to aim. BTW, what is Soundex? -- Albert

I've now tried using bearing change for matching. But for me it seems to perform on par with velocity + heading change matching. What lies behind your "some sort sort of" there Albert? -- PEZ

It matches the target velocity projcted on the perpendicular of the bearing of the enemy bot. Realize that it is similar to bearing change, but independent of the distance to the enemy bot. To be honest, I don't know if it is bettern that velocity and heading change (that's why I say it is an experimental gun). I guess it will be better for some bots, and worst for others. The final objective is to have a multi-criteria pattern matcher. -- Albert

Marshmallow now has a pattern matcher that can match on velocity+heading_change, bearing_change, distance_change and distance_change + bearing_change. Interestingly distance_change was the best against PrairieWolf in the first 100 rounds. After that PW somehow adapted it's movement so that all pattern matching criteria where pretty useless and similar, around 11-12%. -- PEZ


I run a league on my own machine that i call [Testbed League]. It's many of the top EternalRumble bots and some of the bots I have special interest in, either because they are Swedish or just show some interesting behaviour. I added LauLectrik, Shera, Cigaret, Dalek, Nimrod and Centipede? at the same time to the league and Laulectrik immediately followed Cigaret up to the top of the league behind SandboxDT. It will be very interesting to see how LauLectrik performs in EternalRumble. -- PEZ
LauLectrik looks pretty good (I would have preferred it to be less good!). However, he gets an array index out of bounds at round 141 or thereabouts. --Tad

I know about this bug. I'w fix it in the new release. The problem is that I didn't implemented a circular buffer yet, so when it reaches its maximum capacity it raises an error. But it will not produce if you run 100- rounds battles. -- Albert

I'm not sure how the buffer is implemented at current, but for circularity my pattern matcher uses a LinkedList and I add to the buffer with addLast() and then use removeFirst() when the buffer is full. Or if it's a plain array you could just use use something like:

index = counter++ % bufferSize;
buffer[index] = whatever;
-- PEZ


The development version of LauLectrik gets a 14.6% hits to DT. The line I'm following is quite promising, so I hope to raise the percentage to a 15%. When it happens, DT will have a hard time (of course, I'w need to improve my movement too :-)) -- Albert

Cool! Here's a trio of questions again: Can I have it to try Marshmallow against? What hit rate does it get against Fermat? Are you still only using PatternMatching or have you introduced VirtualBullets as well? -- PEZ

New version of LauLectrik is not ready yet to be released :-( Rigth now I'm using only pattern matching, but a flexible one (that let's me select the best parameters depending on the robot). I'w try it against Fermat and let you know. --Albert


I have now tried Laulektric 1.2 and it's certainly better against Marshmallow (after a couple of 100 rounds it beats M quite easily) compared to L 1.0 (which M could beat on a sunny day. Interesting to see well it seems to learn. Obiously it learns M better than M learns it. Now I must go back to the drawing borad again! =) Thanks for removing the bug where L just stopped workinjg after about 100 rounds. Is it because you don't run the pattern matcher any longer? -- PEZ


LauLectrik doesn't use the symbolic pattern matcher any longer (even if some related concepts are still present). It uses a new gun with a system I call "best p-space" gun (long name for a simple idea :-)). Because LauLectrik is an experimental bot, you can expect version to be very different each other. -- Albert


Could you comment on how your "best p-space" is different than a virtual bullet system? They seem similar to me from the brief description above... --David Alves
Just posted an article about BestPSpace. --Albert

Do you just use a normal string to store the chars in?

I use an StringBuffer? I think (but it was a long time since I made it). -- Albert


Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited May 18, 2006 21:45 EST by Florent (diff)
Search: