Talk:AgentSmith/Wolfmans Todo List

From Robowiki
Jump to navigation Jump to search


Thread titleRepliesLast modified
Add in really quick and dirty random movement 1304:13, 4 April 2013

Add in really quick and dirty random movement

Regarding the todo item "Add in really quick and dirty random movement"

It helped me a lot to use a random movement from an open source micro bot when I was developing targeting.

For de Broglie, I chose to use the movement from Aristocles, which had two nice benefits for testing.

  • Aristocles has a nice micro implementation of GF targeting. If you climb above Aristocles in the Rumble, you can know that your gun is coming along quite nicely because your movement is identical.
  • Do a comparison of rumble stats between your bot and Aristocles to see if your gun has any striking strengths/weaknesses against certain bots.

Using that code was a nice stepping stone while I was working on targeting. I could forget about movement issues while still having a fully functioning bot as a test bed.

Good luck!

Tkiesel15:48, 27 March 2013

I'm curious, why did you use Aristocles for testing purposes and not Raiko? Raiko has one of the best simple Random Movements in the 'Rumble.

Also, Raiko's GFT gun is much stronger than Aristocles', so it would be a better test of your gun's strength.

Sheldor22:49, 27 March 2013

De Broglie was my tribute to waves (based on the bot's namesake), so I went through open source mini bots until I found one that used waves in the movement.

Aristocles' use of waves for movement is only nominal, but it's still there. That was enough to satisfy my philosophical requirement.

I wasn't recommending Aristocles in particular to Wolfman, just some competitive open source minibot currently in the Rumble. :)

Tkiesel16:49, 28 March 2013

Aristocles is a micro, not a mini.

Are you sure that Aristocles uses waves in its movement? I only saw one small reference to the Wave class, and that was purely for Code size reasons and the RM would've worked fine if the variable was local.

Sheldor19:22, 28 March 2013

Every bot in the micro rumble is also in the mini rumble, so in that sense, Aristocles is a mini because micro is a subset of mini. When I say "in that sense" I am explicitly meaning "in the rumble sense."

Re: 'Are you sure that Aristocles uses waves in its movement?' -- For a certain sense of the word "uses," yes. As I said, it is only nominal. Get rid of the wave, and the movement line fails unless you rewrite it. I'd say that qualifies for a nominal sense of the word "uses," in the same sense as my car won't work without the particular fuel line leading from the tank to the fuel pump right now. Yes, I can place another fuel line there and restore function, but if someone yanked that line while I was indoors, the car isn't running until I perform some repair.

Re: 'I only saw one small reference to the Wave class, and that was purely for Code size reasons and the RM would've worked fine if the variable was local.' -- I think I've made it rather clear that it was an aesthetic choice based upon my bot's namesake. Moreover, it was an aesthetic choice for a placeholder movement that was destined to be replaced. I was essentially being cheeky for the fun of it. I literally was hoping it might make someone smile a bit when they happened to read the wiki page during the month or so when that code even existed within my bot.

What's stunning to me is the amount of work you've put into telling me that my playful inconsequential aesthetic choice in the development of my bot was somehow wrong, or failing that, that my imprecision of terminology in chatting informally with a fellow community member on the wiki is somehow wrong. You've provided links as citations! Amazing!

Tkiesel03:50, 3 April 2013

A wave is a concept, an idea. It is a method of using information and logic to control a robot in the game of Robocode. It is not a class that just happens to be called "Wave."

The Waves article says that a wave consists of: "a source location (of the firing bot), a velocity (generally based on firing bot's bullet power), the time the wave was created, and the bearing to the target at fire time." This is not an actual snippet of code, rather, it is a description of what constitutes a "wave." In order to be a wave, a snippet of code must have all of these elements. Any of these parts standing alone does not make a wave.

Aristocles' targeting does use waves, because all required information is used in all required ways, and all required decisions are made with all required logic, to be considered "waves." Aristocles movement does not, because it only uses one variable, one specific part of the code required to make a wave, for purely superficial reasons.

You say that Aristocles' use of waves in its movement is "nominal" meaning "in name only," but, by that logic, I could say that Sabreur uses Dynamic Clustering just by naming one variable dynamicClusteringVariable.

Sheldor15:26, 3 April 2013

1. A wave in robocode is as you describe. A location, a heading along with the information required to calculate the current radius of the wave.

2. Aristocles has a wave Class that includes this info. A proper Robocode wave. [ lines 138-158]

3. Aristocles accesses a member variable of an instantiated wave Object inside of it's setAhead() call. Note: this is not simply a variable named "wave," it is a full and proper wave Object as referenced in #2. Specifically, the setAhead() uses the location of the wave, and the angle variable the calculation is a part of is also passed to setTurnRightRadians() on the next line. [ lines 72 and 73]

4. Given 1-4, Aristocles utilizes data from an object that constitutes a Robocode wave in both the forward/back calculation and the turn calculation.

5. However, given 3, Aristocles does not use the wave as a wave in the Wave Surfing sense or much of any sense at all. It simply uses the wave in the 'utilizing data contained in a wave' sense. To utilize the ol' CS jargon, the wave is not used semantically but merely syntactically.

6. This is the source, I believe, of your disagreement with my statement that Aristocles uses waves. When I said "nominal" I ought to have used the word "syntactically" perhaps, but I do think that Aristocles uses a wave a bit more strongly here than merely naming an otherwise non-wave variable 'wave' as in your example above.

To the extent that all of this vindicates your assertions, you are correct sir.

To the extent that all of this vindicates my assertions, I am correct sir.

Perhaps we are both some of each. ;)

I appreciate the spirited debate, but I shall not comment on your disagreement with my characterization of Aristocles behavior any further, especially given how far afield we've wandered on this talk page. Whether I am correct or incorrect, I'm satisfied. Take care!

Tkiesel02:40, 4 April 2013

Well said.


Sheldor04:13, 4 April 2013

Well, Robocode waves don't really qualify as "matter with wave-like properties" either. So I'm not sure Louis de Broglie would find them very interesting, but the bot name still gave me a chuckle. :-)

And deBroglie is a pretty strong bot, so I'm pretty sure Tkiesel understands how waves work.

Voidious16:03, 3 April 2013

I didn't say he doesn't understand how waves work. I said that he is wrong in saying that Aristocles uses waves in its movement simply because the movement code and the wave code happen to share a variable.

I agree that deBroglie is a nice bot, and Tkiesel is a talented author. But that doesn't excuse saying something that is simply wrong.

After all, he did say that he had a "philosophical requirement" to meet; all that I'm doing is saying that he didn't meet it.

Sheldor16:49, 3 April 2013

Is there any way we can take this conversation somewhere else and move all of it to that page? Not sure all of this belongs on the discussion of my To-do list! :)

Wolfman16:51, 3 April 2013

We can move the whole thread, but not specific posts in a thread.

Where would you like it to be moved?

Sheldor16:54, 3 April 2013

Robocode waves do have some similarities with de Broglie pilot-wave theory.

Waves in robocode are virtual bullets without a heading, although the real bullet it tries to track does have an unknown heading. Unless the bullet is observed through onHitByBullet or onBulletHitBullet events and heading becomes known.

Particles in de Broglie theory are also waves with an unknown location of the particle, unless it is observed through quantum sensors and location becomes known.

Waves in robocode is a model which represents all possible locations a bullet can be. Waves in hidden-variable quantum mechanics is a model which represents all possible locations a particle can be.

MN17:06, 3 April 2013

Bingo! Spot on, good sir!

Tkiesel02:44, 4 April 2013