|
|
Thanks to all those who returned the emailed questionaires. I have
compiled these responses below for your enjoyment. The top finishers
are near the top but otherwise the order is fairly arbitrary.
In addition to these write-ups, please check out the consolation awards
using the link at the left.
_____________________________________________________________
scrunch was submitted by Xavier Bernardy (xavier)
scrunch finished in position 01 and 10 on POTM1 and POTM2.
_____________________________________________________________
Describe briefly the strategy scrunch used for the SOLO POTM.
I first tried construction heuristics with some backtracking but it quickly
turned out to be very inefficient, so I gave up and decided to use
improvement heuristics.
I eventually found a paper about "Guided Local Search" and decided to give it a try.
So, my squirrel iterates a 2-opt improvement heuristic over some initial
random path. After each iteration, the cost of some edges figuring in
the path is increased. The chosen edges are usually the longest ones,
but shorter edges will also be see their cost increased as the search goes on.
The search stops after a fixed number of iterations, and the best path
is saved in the temp file.
Some useful links:
TSPBIB home page - general information about the TSP:
http://www.densis.fee.unicamp.br/~moscato/TSPBIB_home.html
Guided Local Search:
ftp://ftp.essex.ac.uk/pub/csc/technical-reports/CSM-247.ps.Z
Interactive demos of some TSP heuristics:
http://itp.nat.uni-magdeburg.de/~mertens/TSP/index.html
Describe briefly the strategy scrunch used for the MULTIPLE POTM.
I was running out of time when I started to think about this problem,
so I implemented something very simple.
All I do is to sort the list of nuts:
- the ones that my squirrel can eat before anyone else come first.
- the ones he may have to share with other squirrels come next.
- the remaining ones are sorted according to their distances
to other squirrels and to other nuts.
My squirrel then ran towards the first nut in that list, trying to grab
other nuts on his way if possible.
During the multi tests, it turned out that most of these little hungry
monsters were trying to grab the same nuts, so I simply changed
the target nut : if several nuts are almost equally good, my
squirrel dashes towards one figuring at a lower rank in the list.
If I had it to do all over again, here's what I'd try:
Start earlier and go to the zoo, watch some real squirrels in action.
I named my squirrel scrunch because ...
If you look closer you'll see my squirrel does not carry any nut-case
but scrunch every single nut as soon as it finds it. I think this will
allow him to run faster in the 1st POTM because he doesn't have to
spend time wondering how all those nuts could fit within his tiny nut-case.
Of course, after having scrunch'ed all the nuts in the 1st POTM, he'll
not be so hungry anymore for the 2nd POTM, so I do not expect him to
do very well there....
Where do you live? do for fun? do for work? innermost secret?
- Brussels, Belgium
- I'm playing go for 2 years now. This is a fascinating game and I
think It will keep me busy for some more years. I was also
training virtual squirrels these days...
- I was writing embedded software for digital TV's, but we went
through a collective layoff and our development group
will be closed very soon...
- I like to watch Derrick on TV. It's a german TV serie, popular
mostly with elderly people. As I'm still < 30y, don't tell anyone :-)
_____________________________________________________________
Filbert_Einstein was submitted by William Little (Tempus)
Filbert_Einstein finished in position 04 and 01 on POTM1 and POTM2.
_____________________________________________________________
++ Describe briefly the strategy Filbert_Einstein used for the SOLO POTM.
To start things off, it picks a random path
Around the field, through all the nuts it hath,
Then uses an insertion-based heuristic.
(Rendering it nondeterministic)
This is how it picks a starting place
Within a quite humongous searching space.
With steps made by reversal of a section,
It then tries to make each small correction.
Feeling out the slope of nearby ground,
It tries to take a step that won't lead down.
It fumbles in the dark to climb a hill,
As Monte Carlo algorithms will.
A million such attempts are made, and then
It starts back at a random path again,
And thus it plans to circumambulate,
'Till sys+user time is fifty-eight.
++ Describe briefly the strategy Filbert_Einstein used for the MULTIPLE POTM.
...But when the count of squirrels is more than one,
Then something very different will be done.
It guesses paths for other squirrels, when able,
Sticking the results into a table.
When it finds the table is complete,
It then must choose a likely nut to eat.
The table tells when each should disappear,
Which helps it figure out which way to steer.
It knows that things would work out for the best
If it can reach the nut before the rest,
But if the claim is not so cut-and-dried, it
Knows just how the nut will be divided.
Utilizing 3-ply lookahead,
And all else here that I've already said,
It tries to meet the POTM paradigm,
By maximizing nuts per unit time.
++ If I had it to do all over again, here's what I'd try:
Less coding, more sleeping.
++ I named my squirrel Filbert_Einstein because ...
Top 10 reasons I named my squirrel Filbert_Einstein:
10. I wasn't sure the crowd was sufficiently versed in official
multi-squirrel nomenclature to fully appreciate names
such as "DoomsDray" and "Trial_by_Scurry".
9. The voices in my head were most insistent.
8. I didn't think of Cheek_Full_O_Nuts until much later.
7. Because of that old story of how Sir Isaac Einstein discovered
gravity when a nut fell on his head while he was sitting
under a filbert tree.
6. It had a better ring to it than "Pistachio_Heisenberg".
5. It anagrams to "Finest Libertine".
4. That's just what it said on his squirrel tags.
3. I wanted to avoid having "nut" in the name, i.e. nutcase,
nutpick, I'm_a_nut, nutjob, etc., ad infinutum.
2. He's the smartest guy in all of macademia.
And the number one reason I chose the name Filbert_Einstein...
1. Someone had to.
++ Where do you live? do for fun? do for work? innermost secret?
Where I live: The USA. More specifically, right here, or in the general
vicinity of nearby.
What I do for fun: Evade questions.
What I do for work: Try to keep everything from falling apart.
Innermost secret: Even *I* don't have THAT kind of clearance.
The above poem and top ten list are copyright (C) 2004 William Little.
Limited right to publish granted to Fred Hicinbothem.
All other rights reserved.
_____________________________________________________________
101 was submitted by Bill Wade (billybob)
101 finished in position 02 and XX on POTM1 and POTM2.
_____________________________________________________________
Describe briefly the strategy 101 used for the SOLO POTM.
This was the first time I've programmed a TSP problem.
The references below were a big help to me.
Most of the work is done by a fast 3-opt (break up to three edges in the
path and reassemble) to find local minima, followed by a swap of five random
pairs of nuts to "widen" the definition of "local". I spend several seconds
at the end of the minute trying up to a full 8-opt search. In very rare
cases this improves the solution.
For fast 3-opt see http://www.research.att.com/~dsj/papers/TSPchapter.pdf
I estimate the Held-Karp lower bound to the TSP problem so that I can stop
looking (tie breaker is CPU) a bit earlier. I was surprised to see how
small the gap between the lower bound and my solutions typically were (one
or two steps on most randomly distributed boards).
See
http://users.cs.cf.ac.uk/Antonia.J.Jones/Papers/EJORHeldKarp/HeldKarp.pdf
Describe briefly the strategy 101 used for the MULTIPLE POTM.
1) Score each nut = 1/(number of closest squirrels)
2) Score each square as sum of nut scores divided by (distance to nut,
squared). If one or more squirrels are as close or closer to the nut,
divide by another factor of 100.
3) If my squirrel is not sharing a square, or if the problem is currently
very large (squirrels * nuts > 10000), then go to the adjacent square with
the highest score.
4) If my squirrel is not alone and the problem is not too big, assume that
all squirrels are likely to move to an adjacent square with a probability
proportional to that square's score. With that assumption, play and replay
an entire simulated game varying my first move to each adjacent square (I
use the "assumed" strategy for the rest of the game) and see which "first"
move leads to the best final result.
If I had it to do all over again, here's what I'd try:
I never got around to doing some straightforward speed-ups (ie changing
function calls to macros).
I'd do more research on figuring out whether a path that I've found that is
above the held-karp limit is optimal or not.
Try splicing together sub-solutions from various local-minima solutions.
I named my squirrel 101 because ...
In the second world war, elements of the US 101st airborne division were
surrounded in Bastogne during the battle of the bulge. When asked to
surrender, the commander's reply was "NUTS".
Where do you live? do for fun? do for work? innermost secret?
Houston. Puzzles and mind games. Program (pipeline industry).
I'm not going to tell.
_____________________________________________________________
NutCracker4 was submitted by Mike Sweeney (mjs)
NutCracker4 finished in position 07 and 03 on POTM1 and POTM2.
_____________________________________________________________
Describe briefly the strategy NutCracker4 used for the SOLO POTM.
NutCracker4 is a squirrel using 195 lines of python
(roughly 80 solo + 80 melee + 35 utility).
It produces POTM1 results in 5 to 9 minutes using a
home-grown algorithm (more fun that way ).
Most of the work is done on the first move taking 10 seconds.
nutcracker uses the follwing heuristic:
load previous best tour from file
while time left,
shuffle nuts
tour = first three
for nut in nuts[3 to N],
add nut to tour where cheapest
if more than one best choice, choose randomly
add start point (squirrel position) where cheapest
if tour length is best or close to it,
optimise each sliding six nut window of the tour
if best, store tour
write best tour to file
return location closest to first nut on tour
Describe briefly the strategy NutCracker4 used for the MULTIPLE POTM.
NutCracker4 tries to find a path with maximum reward (most nuts), but also
tries to minimise risk (that another squirrel will steal the nut before him),
and also has a mean streak - if he can get a nut one move before other
squirrels he will.
Algorithm:
make row and column indexes
make distance indexes (dist 1 to 5 only) for
nut-nut, nut-squirrel, squirrel-nut, and me-nut
initialize paths starting at my location
while time left,
for each path,
for each nut near the end of the path,
if nut not already on the path,
get nut-value considering other squirrel & nut locations
add new path including this nut
assign new path reward to be path reward plus this nut-value
keep 30 best paths (of highest reward value)
return location closest to first nut on best path
Nut value is determined by:
if other squirrels can get to it first,
reduce value by number of squirrels & how much closer they are
otherwise if squirrels are same distance away,
value is shared,
otherwise if I am one move closer,
value is boosted by how many I annoy by getting it first :-),
increase value by number of surrounding nuts
decrease value by distance from me
NutCracker4 uses 5 seconds per move.
It iteratively computes the best paths from the current location,
and when the time is up, it picks the best one and outputs the first move
on the best path. In 5 seconds, the program computes paths about 8 nuts
long. It does not rest.
If I had it to do all over again, here's what I'd try:
Spend more time sleeping and less watching squirrels run around in the simulator...
I named my squirrel NutCracker4 because ...
I could not find an algorithm that would allow me to gather whole nuts in the
melee, so I was resigned to making a squirrel that carried a nutcracker, scales,
and sharp knife. So NutCracker he became. It is the fourth version that is entered
in the comp.
Where do you live?
Canberra, Australia (the nation's capital) with wife, 3 kids, cat,
lots of computers, and lots of books.
do for fun?
Muck about with computers.
do for work?
Muck about with computers.
innermost secret?
Now it wouldn't be a secret if I told you, would it?
Don't tell anyone, but I have recently become a little obsessed with SQUIRRELS,
SQUIRRELS, SQUIRRELS, my SQUIRRELS, SQUIRRELS, and SQUIRRELS, SQUIRRELS,
SQUIRRELS, SQUIRRELS, and more SQUIRRELS, SQUIRRELS, SQUIRRELS, SQUIRRELS,
SQUIRRELS, those SQUIRRELS!, SQUIRRELS, SQUIRRELS, SQUIRRELS.........arrrrrg!
Oh, where did I put my pills?...
_____________________________________________________________
harlem_shuffle was submitted by Davor Slamnig (Slama)
harlem_shuffle finished in position 12 and 07 on POTM1 and POTM2.
_____________________________________________________________
Describe briefly the strategy harlem_shuffle used for the SOLO POTM.
For boards with up to 9 nuts, harlem_shuffle enumerates all paths
and finds the best one. I don't think Fred would be that devious
in the finals, but I don't want to take any chances.
For boards with 10 or more nuts, harlem_shuffle connects nuts into
"strings", which are concatenated until the final string is the
squirrel path. Connect two nuts or strings closest to each other, iterate.
Then it tries to optimize the resulting path using a nut-shuffling
loop (harlem_shuflle, ne?).
Describe briefly the strategy harlem_shuffle used for the MULTIPLE POTM.
Go for the closest nut that gives the best payoff, assuming that all
other squirrels in range are going for the same nut. If more than
one nut satisfies the description, pick the one which is closest to
some other nuts.
If I had it to do all over again, here's what I'd try:
For solo mode, I'd probably try to do some more intelligent optimization.
For multiplayer mode, I'd make the squirrel a little bit smarter.
But not too much, plain greed seems to work best here.
I named my squirrel harlem_shuffle because ...
You move it to the left
And you go for yourself
You move it to the right
Yeah if it takes all night
Now take it kinda slow
With a whole lot of soul
Don't move it too fast
Just make it last
(Harlem Shuffle, Relf/Nelson)
Where do you live? do for fun? do for work? innermost secret?
I live in Zagreb, Croatia.
For fun, I make furniture, play guitar, do POTMs...
Work is computer programming.
My innermost secret seems to be pretty deep, I haven't uncovered it yet.
_____________________________________________________________
SANE was submitted by Wolfram Hinderer (Kuno)
SANE finished in position 17 and 06 on POTM1 and POTM2.
_____________________________________________________________
Describe briefly the strategy SANE used for the SOLO POTM
Greedy - I did not want to code for speed. My code is ugly
enough already :-)
Describe briefly the strategy SANE used for the MULTIPLE POTM.
SANE estimates the expected numbers nuts each squirrel will
get for a certain move. It then adjusts the probabilities for
each of that moves. Iterate. When stability is more or less
reached, one of the possible moves for SANE is randomly chosen,
according to the probabilities.
(This randomization at least eliminates the possibility of
being outguessed permenantly...)
If I had it to do all over again, here's what I'd try:
Start earlier...
I named my squirrel SANE because ...
I searched alltheweb for the largest suitcase... and found
SANE SPORTS WEAR. At this point, I really started thinking
about participating.
(Squirrel Acces Now Easy later crossed my mind, but the
above story is the truth...)
Where do you live? do for fun? do for work? innermost secret?
I live in Mannheim, Germany. Fun is: staying with friendly
people. I work for a live insurance company...
I have no secrets. No. Certainly not. None that I would
give away, that is.
_____________________________________________________________
grinnie was submitted by Mark Mammel (mmammel)
grinnie finished in position 10 and 15 on POTM1 and POTM2.
_____________________________________________________________
Describe briefly the strategy grinnie used for the SOLO POTM.
Grinnie solved the TSP by simulating annealing -- first
generate a random path then swap edges looking for
improvements. As the "temperature" lowers, the probability of
jumping around to worse positions decreases.
Describe briefly the strategy grinnie used for the MULTIPLE POTM.
A simple algorithm -- grinnie found the distance from each
squirrel to each nut, then for each nut that grinnie could
reach before or at the same time as others, it was scored as
1 / number of squirrels reaching it (plus a small random
value). Then for each of the 8 possible moves, add scores for
nuts that are now closer.
If I had it to do all over again, here's what I'd try:
For the MULTIPLE, I would make a more complex algorithm that
looks for an optimal PATH rather than at single moves.
I named my squirrel grinnie because ...
grinnie is another name for ground squirrel
Where do you live? do for fun? do for work? innermost secret?
I live in Laurel, MD and work at the FDA doing
bioinformatics. For fun I play with my kids and play Pente and juggle.
My secret is that I started programming on a Commodore VIC-20
with 3 and 1/2 Kb RAM
_____________________________________________________________
W was submitted by Paul Banta (potm_junkie)
W finished in position 03 and 24 on POTM1 and POTM2.
_____________________________________________________________
Describe briefly the strategy W used for the SOLO POTM
Simulated Annealing followed by Genetic Algorithm. In the Simulated Annealing
stage I ran for 28 seconds creating a population of 20 paths - the best 20 out
of as many as I could generate. In the Genetic Algorithm stage I ran for
another 28 seconds and randomly mutated the 20 paths from the simulated
annealing stage.
Describe briefly the strategy W used for the MULTIPLE POTM.
On the first move chose to move up, down, left, or right - move that direction
to the edge collecting as many nuts as possible. Once done with this treat nuts
and squirrels as electric / magnetic particles that either attract or repel me
respectively. Sum the attractions and repulsions to get a direction to move.
If I had it to do all over again, here's what I'd try:
I would research more. I saw many references to a program called Concorde that
seems to be tops at solving the Traveling Salesman Problem. I did not spend
enough time understanding how it works.
I named my squirrel W because ...
In the United States we just finished the election season. One of the
politicians running for President was George W. Bush. He is often referred to
as simply "W" (His father, George H. W. Bush, was also President). The Nuts
problem is exactly the same as the campaigning politician problem, I mean the
traveling salesman problem. The multiple politician, I mean multiple weasel, I
mean multiple squirrel problem is very different, though.
Where do you live?
Colorado Springs, Colorado, USA
do for fun?
POTM, Volleyball, Scouting (Boy Scouts of America)
do for work?
Software Engineer for Credence Systems Corporation (stock symbol CMOS)
innermost secret?
I was not clever enough to think of a Bozo program for this contest
_____________________________________________________________
Alvin was submitted by Harro Lissenberg (dehark)
Alvin finished in position 22 and 11 on POTM1 and POTM2
_____________________________________________________________
Describe briefly the strategy Alvin used for the SOLO POTM.
Alvin uses the so-called NearestNut(TM) strategy. A
highly sophisticated algorithm in wich Alvin goed for
the nut that is closest to his own location. Who needs
this "Traveling Salesman" stuff when you are dealing
with nuts and squirrels anyway??? ;)
Describe briefly the strategy Alvin used for the MULTIPLE POTM.
Alvin is very ego-centric. He will try and find a nut
wich he is closer to than any other squirrel, so he
can claim it for himself. If he can't find a nut wich
he can keep for himself he will go for the nut with
the least squirrels nearby. If he can't find a nut he
might be able to grab he will fall back to the "NearestNut" strategy.
If I had it to do all over again, here's what I'd try:
I might take a look at this "traveling salesman" stuff
I saw on the forum for better solo results.
I named my squirrel Alvin because ...
My girlfriend suggested it, she love(s)/(d) the Chipmunks!
Where do you live?
Netherlands
do for fun?
work
do for work?
think about squirrels a lot.
innermost secret?
you wish
_____________________________________________________________
belka was submitted by Denis Konovalchik (Dyuk)
belka finished in position 28 and 14 on POTM1 and POTM2
_____________________________________________________________
Describe briefly the strategy belka used for the SOLO POTM.
The strategy is very simple (maybe, too simple). Every time my
squirrel finds the nearest nut and comes to it one step nearer.
Surprisingly, but in the test run such a strategy let my squirrel
collect nuts quicker than 2/3 of her colleagues ;-)
Describe briefly the strategy belka used for the MULTIPLE POTM.
Every time my squirrel scores each possible variant of move. It
analyses all nuts on the field and sums the balls received for each nut:
1.0 when the move allows to reach nut before all competitors,
or 1.0 / (N+1) when the move allows to reach nut
simultaneously with N competitors,
or 0.001 when the move allows to approach to the nut.
The move with highest score is chosen as a solution.
If I had it to do all over again, here's what I'd try:
I would spend more time walking in the park full of squirrels.
I named my squirrel belka because ...
I'm Russian. "Belka" is a "squirrel" in my native language.
Where do you live? do for fun? do for work? innermost secret?
I live in Magnitogorsk (Russia, Urals).
For fun I write letters to the Russian "Computerra" magazine
(www.computerra.ru). My sin is that I cannot keep silence about
amazing things. So, 6 years ago two Russian boys read my article about
POTM in the magazine and became its champions. Sorry, my unfortunate
colleagues, I was a loser then, too. Remembering of that mistake, I'll
publish the article about current POTM only after its deadline ;-)
I'm a former C++ programmer who nowadays is forced to create programs
in F++ laguage (haven't heard about it? Don't worry: it's created in
Magnitogorsk! ;-)
This year my small family become larger -- now we have a pretty
daughter Alice (my wife Alyona sometime calls her "Belka", too ;-)).
_____________________________________________________________
nutcracker was submitted by Doug Beardsley (mightybyte)
nutcracker finished in position 05 and 43 on POTM1 and POTM2.
_____________________________________________________________
Describe briefly the strategy nutcracker used for the SOLO POTM.
Nutcracker uses an algorithm similar to simulated annealing with
hand-tuned parameters to govern the probability of backtracking.
Describe briefly the strategy nutcracker used for the MULTIPLE POTM.
Run an evaluation function on each legal move and choose the best one.
If I had it to do all over again, here's what I'd try:
I'd probably try an ant colony optimization algorithm and use a
genetic algorithm to tune its parameters. I tried this a little, but
didn't put enough time into it to get it to work well.
I would also probably put more time into the multiple version. I
didn't really spend much time on it at all.
I named my squirrel nutcracker because ...
It just fit. I'm surprised nobody else took the name. I like double
entendres.
Where do you live? do for fun? do for work? innermost secret?
I live in Florida. I program computers for work and fun. I also
enjoy swimming, water skiing, snow skiing, and mountain biking.
_____________________________________________________________
CrazyNut was submitted by Alexander Sobol (Zovirax) at sobol-at-mccme-dot-ru
CrazyNut finished in position 48 and 02 on POTM1 and POTM2.
_____________________________________________________________
Describe briefly the strategy CrazyNut used for the SOLO POTM.
First of all, if there are n nust total, the solution is a permutation of 1..n.
I use simulated annealing with launched few times, starting from best
solution found so far each time.
Annealing uses two major transformations:
first (quite standard one) - reverse (it takes a subpath and reverses it).
second (i found it working quite well) - greedy drop.
we choose i: 0 <= i < n at random and keep first i elements of the
permutation. The after i-th nut we go strait to the closest nut
(if there are few nuts at the same (minimum) distance, I choose
a random one.)
The probability of greedy drop increases with time.
I also used time-based cooldown (cool temperature faster if we are low on time).
I also save the best solution found and start from it at next step.
Describe briefly the strategy CrazyNut used for the MULTIPLE POTM.
I try all possible first moves and for each move record profit my
squirrel would get if all squirrels (including my own) choose a random
nut (closest with highest probability).
Then i make a move that is the best in average.
I also save latest squirrel position to avoid aimless moving back and forward.
If I had it to do all over again, here's what I'd try:
I MULTIPLE POTM i would probably leave same randomized startegy, but
would search moves of my squirrel deeper.
I named my squirrel CrazyNut because ...
I do not know :)
Where do you live? do for fun? do for work? innermost secret?
I live in Moscow, Russia.
For fun i read books, play chess/chess variants, listen to
jazz and classical music
_____________________________________________________________
Abert was submitted by Doug Jones (dajones)
Abert finished in position 46 and 05 on POTM1 and POTM2.
_____________________________________________________________
Describe briefly the strategy Abert used for the SOLO POTM.
The main method is 3 Opt local search. A random list of nuts is generated in
the order they are to be collected. The local search tries each combination
of 2 or 3 nuts. The list is broken into pieces at the selected nuts and
all possible recombinations are tried to find a list with a smaller number
of moves. A new random list is generated when a local minimum is found.
This continues until time runs out or nNuts^2 random starts have been tried.
Branch and bound is used instead of local search if the number of nuts is
small. This was done mostly so that the local search code didn't have to
deal with degenerate cases.
The location of the first nut on the best path and the cost of the best
path are saved between moves and used to initialize the local search
(if the nut still exists). The random number generator seed is changed
in this case so that different starts are tried.
Describe briefly the strategy Abert used for the MULTIPLE POTM.
A heuristic is used to calculate a table of expected values for each nut
as a function of the number of moves used to reach it. The expected value
is 1 if my squirrel reaches the nut first. The value goes down as more other
squirrels can reach the nut in the same number of moves. The value goes
down more for each additional move the other squirrels are allowed.
A recursive search is performed to find an ordered list of nuts with maximum
expected value. The recursion is cut off whenever the expected value of a
nut is less than the largest expected value that could be obtained for that
nut. A small fraction of the value of each nut not visited due to the
cut off is added to the total expected value of a given list. This tends
to cause the starting move to be toward the side with the most nuts.
If I had it to do all over again, here's what I'd try:
I would probably do the same thing.
I named my squirrel Abert because ...
Abert is a species of squirrel that live near me.
Where do you live? do for fun? do for work? innermost secret?
I live in Evergreen Colorado. I hike and ski in the back country for fun
and write software for AT&T.
_____________________________________________________________
CocoNuts was submitted by Pascal
CocoNuts finished in position 45 and 09 on POTM1 and POTM2.
_____________________________________________________________
Describe briefly the strategy CocoNuts used for the SOLO POTM.
The solo POTM uses Keld Helsgaun's code LKH-1.3, which is
an efficient implementation to solve the traveling salesman
problem, based on the Lin-Kernighan algorithm. So, if my
squirrel gets good results, credits should go to him, and
not to me.
http://www.akira.ruc.dk/~keld/research/LKH/
I had to modify his algo a little to adapt it to the current
situation (we want an open path, with a fixed starting point).
I use LKH to compute "good" optimal tour for the nuts, then
try to find the optimal point where to cut the cycle and start
our tour. This adapted cost is not only used at the end, but
also directly in LKH (not as much as I would have liked though),
in order to find better solutions. I compute a tour on the first
move, then store it in a temp file for further moves.
Describe briefly the strategy CocoNuts used for the MULTIPLE POTM.
The multiple POTM uses a simple strategy: find a nut we can
go to in shorter or same time as some other squirrels. In
case of multiple possibilities, choose the nut which will
give most points after splitting, and choose the nearest if
there are still multiple possibilities.
If we cannot reach a nut before or at the same time of
someone else, go towards the gravity centre of all remainings nuts.
If I had it to do all over again, here's what I'd try:
Perform a deeper search in multiple mode, using some variant of min-max
algorithm. In the beginning of a game, it might be more interesting to
avoid taking one of the closest nut with everybody else, and just head
for a further one, so that afterwards you are one or two steps in
advance on all your competitors, and you can grab a lot of nuts alone. A
deeper search should be able to find those cases.
And, of course, code the traveling salesman problem myself !
I named my squirrel CocoNuts because ...
Just tried to find a stupid name ;-)
Where do you live? do for fun? do for work? innermost secret?
I am living now in Aarhus, Denmark (but I'm French), working as an
assistant professor in computer science.
And my favourite hobby is to keep my innermost secrets... secret
______________________________________________________
warhole was submitted by Pascal Alfadian Nugroho (dirk_sinner)
warhole finished in position 43 and 16 on POTM1 and POTM2.
________________________________________________
Describe briefly the strategy warhole used for the SOLO POTM.
Describe briefly the strategy warhole used for the MULTIPLE POTM.
Both use a simple strategy, scoring each nuts based on
its distance from me and other squirells, & the
density of nuts nearby.
If I had it to do all over again, here's what I'd try:
I don't think I would do it all over again
I named my squirrel warhole because warhol (from "Andy
Warhol"), added with e for an anagram.
Where do you live? Indonesia
do for fun? yes
do for work? no
innermost secret? I'll never give it to you :)
_____________________________________________________________
chipmonk was submitted by Robert Nix (rpnix)
chipmonk finished in position 39 and 20 on POTM1 and POTM2.
_____________________________________________________________
Describe briefly the strategy chipmonk used for the SOLO POTM.
For the solo attempt, my goal was to try to clear quarters of the board,
starting with the most populated quad, being sure to work the corners,
and moving within these parameters to the closest possible nut on each
move.
Surprisingly, even with several changes to the algorithm, the best I've
done to date on the test board is 73 moves. With that said, my main goal
wasn't really the solo board; it could be brute forced by calculating
the "perfect" solution via exhaustive spanning of the paths, and
probably several better methods. I wanted to evaluate my area of the
board, rather than trying to build trees of possible solutions. In any
case, I was much more interested in the Multi contest....
Describe briefly the strategy chipmonk used for the MULTIPLE POTM.
This was the problem I found to be really interesting. In the end, I
followed several main principles:
For both solo and multi, my first step was to calculate the "squirrel to
nut" distances for each nut. I kept track of my distance to each nut,
along with the closest competitor's distance to the nut. The one thing I
didn't see a need for was any sort of two dimensional array to represent
the board. It would have been wasteful and totally unnecessary.
Easiest of all: If you're next to a nut, and it doesn't compromise any
other goals, get it, even if you have to share. There just weren't
enough moves in the 15 x 15 board to stand on high principles, and I
didn't feel that the larger boards would be much more forgiving.
Next: If you find yourself stacked with a bunch of squirrels, then
chances are you're all going to be traveling together unless you take
some alternate action. I added a tuning parameter (called "panic") and
if there were this many squirrels in the stack, I picked a nut other
than the closest to chase after. My thought was that hopefully, most of
my stack-mates would chase after the closer targets.
Next: If you can get to a nut before anyone else does, then head for it.
In the end, I weighed this against the time it would take to get there;
if you are six moves away, it probably isn't wise to get the whole nut,
and possibly sacrifice one or several other partial ones. For purposes
of fine tuning, I included a parameter to set this distance, called
"greed".
If none of these apply, then I head for the closest possible nut, hoping
to at least share in the meal.
If I had it to do all over again, here's what I'd try:
Due to problems beyond my control (i.e. an unexpected stay in the
hospital) I ran out of time, but my last thought had been to add code to
look at the board one move ahead whenever I had multiple choices that
seemed equally good. i.e. If I was next to two nuts, then which might
place me in a better position on the next move. This would have involved
"drawing" an eight square box around each squirrel, and then checking if
one move might put me in a position to get an unshared nut, where the
other move might not.
I named my squirrel chipmonk because ...
Growing up, we didn't really see many squirrels, but always had
chipmonks around. It seemed to fit the theme, and conjured up a vision
of a cute little guy trying to compete against the other big, evil squirrels.
Where do you live? do for fun? do for work? innermost secret?
Originally, I was from Indiana, but we relocated to the frozen north
five years ago. We now reside in Minnesota, very near the Mayo Clinic.
Other than programming, and working with IBM mainframes, I enjoy fly
fishing and photography. (The eagle icon used in the forum is one of my
photographs.) In real life, I work with IBM z/OS, zLinux, WebSphere and
several other products, providing support and services to the
development team and users at the Mayo Clinic.
_____________________________________________________________
BlackAdder_04 was submitted by Jan Doornaert (BlackAdder)
_____________________________________________________________
Describe briefly the strategy BlackAdder_04 used for the SOLO POTM.
The "strategy" is rather easy to describe:
* DO
* look for the best of a few random paths
* optimize this best-of-random path (replace a stretch with a
better stretch is possible and fix the rest of the path)
* REPEAT UNTIL TIME IS UP
Describe briefly the strategy BlackAdder_04 used for the MULTIPLE POTM.
* Try to predict what step the others squirrels will take
* For all possible steps my squirrel might take, determine the one
which maximizes some metric (based on my chances to get
to another nut before the rest)
If I had it to do all over again, here's what I'd try:
* Look for another job - one that allows me to spend some time doing
what I *really* like to do: programming stuff!
I named my squirrel BlackAdder_04 because ...
* BlackAdder is my favorite nickname - and 04 is the fourth
iteration of my algo...
* Disappointing? Then have a look at the TV-series ;-)
Where do you live? do for fun? do for work? innermost secret?
* I live in a house (where else?) in Ghent, Belgium.
* I like to program (surprise!), reading SF, tinkering with old
(read: ancient) PC hardware.
* For a living, I try to program in PL/SQL at Radar Automation
(http://www.radaraut.com - promise not to laugh!).
* As for my innermost secret(s), I'd like to keep 'm that way.
Secret. And mine. Now **** off!
_____________________________________________________________
DeepNut was submitted by Enric Capo (DeepButi)
_____________________________________________________________
Describe briefly the strategy DeepNut used for the SOLO POTM.
Since the problem is a very well known and studied and
since I'm not an expert coder (just my second C program)
I decided to test something verysimple: find the best path
to the n nearer nuts. With my (poor) code I tested until n
fits on 60s. and launched it at n==15. Curiously enough,
on the test board, n==10 produces th best result :).
Describe briefly the strategy DeepNut used for the MULTIPLE POTM.
a) Forget about nuts with a squirrel next to it,
b) Forget about nuts in the center squares (the ones that
will becovered by the initial squirrels)
c) Compute the sum of distances between nuts plus the
distance to myself... and go to the smallest sum nut,
allowing a small detour to catchany nearby nuts.
d) If there is a free nut (one that I can reach before
any one else) go for it without any detour allowed.
With about 50 squirrels, getting a whole nut is a must!!
If I had it to do all over again, here's what I'd try:
I did it just for fun, so I'm satisfied with it.
I named my squirrel DeepNut because ...
DeepBlue plays chess, DeepButi plays a local card game
(it's the name of arobot of mine, try it at www.butinet-org),
... and DeepNut catches nuts, easy eh?!
Where do you live? do for fun? do for work? innermost secret?
St Cugat, Catalunya. Play board games. Computing consultant.
_____________________________________________________________
peas was submitted by Stefan Foerster (HotblackDesiato)
_____________________________________________________________
Describe briefly the strategy peas used for the SOLO POTM.
First a word about the 'nuts problem' - as a problem very
closely related to the symmetric travelling salesman problem
it is of course NP-hard, i.e. if we accept the usual assumption
that NP<>P, then we won't find any algorithm finishing within
polynomial time (run time = polynomial of the size of the input).
That's discouraging.
This also means that for very large problems it is very
difficult to prove that a solution is optimal. One can only
prove upper and lower bounds.
But there are numerous fast and more or less good heuristics
that find approximations. These can easily be adapted for
this problem.
'peas' successively calls the following heuristics (as long
as it is still within the 60sec limitation:
* Christofides
* Nearest Neighbour
* Spanning Tree
* Nearest Farthest Insert [that's something I created]
* Cheapest Insert
* Farthest Insert
* Sweep
After each of these start heuristics a sequence of three
improvement methods is used:
* 2-NODE-OPT
* 3-OPT
* 4-OPT
A good reference for all these algorithms is (in German):
http://www.math.tu-berlin.de/Vorlesungen/SoSe03/GuNA/SkriptADM-I.pdf
I don't use the above algorithms for each and every move.
'peas' calculates the tour during the first move and stores the
result in a tmp file. The first recalculation of the remaining
tour is done after about 125 moves.
The bad thing is that my method of checking the 60s limit doesn't
work on the final boards :-(( More testing in that direction would
have been better...
A comment about the C/C++ compiler on Fred's machine: The hosting
company 1&1 probably still uses Debian 'Woody' with a relatively old
2.95 version of gcc. That made testing quite difficult for me in the
beginning because program versions running perfectly on my Linux
box crashed on his. I found out that there must be differences in
the stack handling of gcc 2.95 and gcc 3.3.x when using recursive
functions [I wanted to use a recursive function to test all possible
permutations in the endgame but I had to give up]. During my desperate
trials to get a squirrel running on Fred's machine I also changed from
dynamic memory allocation to static arrays. This resulted in very
big differences of the size of the binaries produced: On 1&1's machine
about 350kB, on mine only 79kB. I really hope that Debain finally
releases Debian 'Sarge' and that 1&1 quickly upgrades to it.
Describe briefly the strategy peas used for the MULTIPLE POTM.
1) 'peas' reads the positions of all nuts and squirrels from
the input file. If 'peas' finds the initial position
(all squirrels in the middle of the board) then 'peas'
deletes the tmp file that may still be hanging around
from the last battle.
2) If there is a tmp file then 'peas' reads the coordinates
of the target nut and looks if it is still available,
that the distance to the nut is == 1 or other squirrels
are more than 1 step away - then 'peas' continues to go
for it i.e. sets 'target' to TRUE and stores the 'target distance'.
3) 'peas' then looks for nuts that no other squirrels can reach
within the same number of moves - these are very valuable
nuts because we don't get fractions of nuts, we get the whole nut !
If it finds more than one it of course takes the nearest one.
If one such nut is found, then if (target==FALSE) or (target==TRUE
and the distance to it is less than or equal to the 'target distance')
then 'peas' goes for it + GOTO 6)
4) For every nut (that a realistic goal is) and then looking only
for squirrles having the same or less distance to the respective nut,
'peas' computes:
FACTOR1 * SUM_NEARERSQUIRRELS(DIST(NUT-YOU)+1-DIST(NUT-SQUIRREL)) * (Num_Nearer_Squirrels-1) +
FACTOR2 * DIST(NUT-YOU) * (Num_nuts-1) +
FACTOR3 * SUM_OTHERNUTS(DIST(NUT-OTHER NUT))
A 'realistic goal' is a nut that has no squirrels within 'give up distance'
(that I have set to 2), unless 'you' is also in the vicinity of the nut.
The first part of the formula is a kind of punishment function, i.e.
the nut's value gets increased the more other squirrels are there and
the nearer they are. The second part simply takes into account that the
nearer a nut the faster it can be eaten... The third one helps to
find accumulations of nuts. The problem is the calibration of the factors FACTOR1-3...
5) 'peas' chooses the nut with the smallest value. If there is more than
one nut with smallest value, 'peas' takes the nearest one.
6) In case a valid target had been read from the tmp file, 'peas' tests
whether the newly calculated target is nearer to 'you' than the old one.
If that's the case then 'peas' forgets about the old target and goes for the new one.
7) 'peas' calculates the next move to reach the target and creates a tmp
file with the target coordinates.
8) 'peas' makes a final 'en passant test'. If there are one or more nuts
directly next to 'you' then it takes the one that is nearest to the
previously chosen target.
9) 'peas' prints the move to stdout
If I had it to do all over again, here's what I'd try:
POTM1: I'd try to implement the Lin-Kernighan algorithm
POTM2: Maybe I should have implemented several simple
algorithms which I then could have uses to extrapolate the
most reasonable next moves/targets of the other squirrels.
Game theory...
I named my squirrel peas because ...
... collecting nuts and counting peas is not so different...
Where do you live? do for fun? do for work? innermost secret?
I live in Aschheim, Germany (near Munich). Most of my spare time
belongs to my family and my house. But of course I am a computer addict.
I am mathematician/actuary. I work with Swiss Re Germany.
Innermost secret... won't be disclosed
_____________________________________________________________
squirrel2 was submitted by Michael Jørgensen (MJoergen)
_____________________________________________________________
Describe briefly the strategy squirrel2 used for the SOLO POTM.
That's a tough question! Basically, the program selects which nut to head
for. It considers all nuts in turn, and for the remaining nuts it just
selects the closest nut. That way it can estimate the total number of moves
needed to catch all nuts, depending on which nut is chosen first. Then the
program simply selects the nut that leads to the fewest number of total
moves. If two nuts have equal value, then it goes away from the center, thus
providing a bias for the outlying nuts.
Describe briefly the strategy squirrel2 used for the MULTIPLE POTM.
Exactly the same as above. It pays no attention to the other squirrels!
If I had it to do all over again, here's what I'd try:
For the SOLO POTM I'm very satisfied. Perhaps an extra level of look-ahead.
For the MULTIPLE POTM I spent long hours trying to come up with a better
strategy, but I didn't find anything satisfactory. Basically, I wanted to
take the other squirrels into consideration, for instance by going in a
direction completely different from the rest of the group. But I made some
experiments, and I found that on average my present squirrel2 fared much
better than the more "intelligent" versions.
I named my squirrel squirrel2 because ...
Simply due to lack of imagination.
Where do you live? do for fun? do for work? innermost secret?
I live in Denmark. I work as a software designer in the telecom business. At
home I play with my kids and practice Tai Chi. My innermost secret? Well,
I've always dreamt of becoming a rock star!
_____________________________________________________________
thyra was submitted by Olaf Jansen-Olliges (o.jansen)
_____________________________________________________________
Describe briefly the strategy thyra used for the SOLO POTM.
it is the simplest algorithm to collect nuts. take the one which is the
nearest :-( I submitted it first only as a test.
Describe briefly the strategy thyra used for the MULTIPLE POTM.
no differences
If I had it to do all over again, here's what I'd try:
1.) collect at first nuts which can't be reached by another Squirrel
2.) calculate short ways
3.) start somwhere with high density of nuts
I named my squirrel thyra because ...
the last potm entry was named like my 1. daughter (rayka) and now we have 2
daughters -- so the choice was very easy. But last time i had much more time.
Where do you live?
Sarstedt in the near of Hannover - Lower Saxony - Germany
do for fun?
listen music - playing with the children - LINUX
_____________________________________________________________
the_selfish_gene was submitted by Marcel van Apeldoorn (mvapldrn)
_____________________________________________________________
Describe briefly the strategy the_selfish_gene used for the SOLO POTM.
The program uses a technique (written from scratch) from genetic programming.
The program starts with an initial population, each individual in the
population has a chromosone consisting of a number of genes equal to the
number of nuts on the field. The chromosone represents the individuals order
of nuts to collect. Each individual is assessed for fitness. The fitness
function for the SOLO POTM exhibits LAZE_GENE behaviour and is the inverse of
the distance of the solution.
Each individual is given the opportunity to reproduce based on its rank;
a survival of the fittest principle. Reproduction can involve copying the
father or mother, crossover (part father, part mother) and based on
random chance; mutation. A new population is created this way.
This evolves for a fixed amount of time. When time is up, the best
gene is used for the next step.
(On my machine AMD64 3400, a population size of 80 evolves for 63000
generations in 50 seconds in the POTM 15x15 system test to produce
distances of between 62-64 steps)
Several tuning possibilities have been applied; o.a. creating the initial
population is based on an initial assessment of the field, optimizations
in the gene have been applied, twin removal, storing the population at the
end of each step in a file in order to get a better initial population
for the next step, etc.
Describe briefly the strategy the_selfish_gene used for the MULTIPLE POTM.
The program is _identical_ to the SOLO POTM with the single exception of the
fitness function. The fitness function exhibits SELFISH_GENE behaviour.
A chromosone is rated better if it collects high valued nuts (i.e. nuts
that are located close to lots of other nuts) early in the route, and
more early than other squirrels on the field.
If I had it to do all over again, here's what I'd try:
The performance of a genetic algorithm improves when it gets 'trained'
or tuned to the situation. I could have tuned it a bit better to the field
layout (i.e. different settings for fields with lots of evenly dispersed nuts,
lots of clustered nuts or only a few nuts, etc)
I named my squirrel the_selfish_gene because ...
...of Richard Dawkins book called 'The Selfish Gene' which I was reading
when I got the invitation for the POTM. After a short introduction into biology
and DNA/genetics in specific, he introduces the gene-centered view of evolution;
the selfish gene. Dawkins shows that how fundamental axiom of natural selection
(that the genes best at surviving and reproducing will eventually spread through
the gene pool) leads directly to the selfish gene and the behavior exhibited by
nearly all animals including humans.
Coincidence or not, the POTM/nuts competition looks a lot like one of the famous
competition he (Dawkins) describes in his book. It's called the Prisoner's Dilemma.
His conclusion was more or less ;-) 'There is no winning strategy. Whether a
strategy is winning or not depends entirely upon the other strategies'.
Does this ring a bell?
So I decided to use a genetic algorithm for both POTM competitions and trained
it to be LAZY (shortest path) when alone in a field of nuts and SELFISH when
with multiple squirrels in a field of nuts. Obviously I had to call my entry
'the_selfish_gene'.
Where do you live? do for fun? do for work? innermost secret?
I live in the Netherlands (Heerhugowaard, 40 km north of Amsterdam). Lately
I do POTM for fun, but am also involved in Archery and other geeky stuff
involving computers (programming and games)
I'm a research engineer at the National Aerospace Laboratory, responsible
(with a team of 7) for desiging, producing and maintaining software for the
real-time air-traffic control radar and tower simulators.
My innermost secrets?? I'm 35 years old and finished playing Half-Life 2
on hardest level in 2 weekends...
_____________________________________________________________
alariq_v0_2 was submitted by Sergey Beloshitsky (snowman)
_____________________________________________________________
Describe briefly the strategy alariq_v0_2 used for the SOLO POTM.
i was using a kind of genetic algorithm
Describe briefly the strategy alariq_v0_2 used for the MULTIPLE POTM.
at this stage it is same as in SOLO POTM
If I had it to do all over again, here's what I'd try:
improve some pieces of code for speed and tune algorithm
parameters for more precisious(?)
I named my squirrel alariq_v0_2 because ...
arariq is what i use when my main nick(snowman) already used
also it is the name of one of the teleports in Uukrul
game(old x8086 RPG game)
Where do you live? Ukraine, Kiev
do for fun? fishing
do for work? programming
innermost secret? can't make myself come on time
_____________________________________________________________
nutty_professor was submitted by Raghavan Viswanathan (rambo)
_____________________________________________________________
Describe briefly the strategy nutty_professor used for the SOLO POTM.
The strategy was to build a Minimum Spanning tree(MST) with the "YOU" as one
of the Vertices and then simply follow the MST. I got into issues with the
Multiple invocations not getting the same MST. I resolved the problem by
ordering the vertices starting from (0,0) as 1, 2 ,3 etc. This gave me
the Same MST across multiple invocations. My program can actually give
ALL the moves at One shot by using "-a" option.
Describe briefly the strategy nutty_professor used for the MULTIPLE POTM.
Damn!. Did not get time to do this. I simply pretend that there is NO
squirrel Apart from me. I just IGNORE squirrel lines. I know it is
suicidal coz I could be chasing mirages.But, hey such is Life.
If I had it to do all over again, here's what I'd try:
I wasted some precious time pursuing Genetic Algo.
I would not do that in retrospect.
I named my squirrel nutty_professor because ...
Just a PUN on a movie by the same name.
Where do you live? do for fun? do for work? innermost secret?
I Live in Bangalore, India. I play with my Kid - Pranav for Fun. I am a
Technical Manager at the Embedded and Product Engineering Division in
Wipro technologies.
I have been telling my inner most secrets each time I participated in
POTM. I don't have em anymore.
_____________________________________________________________
pnut was submitted by David Wales (mongbei)
_____________________________________________________________
Describe briefly the strategy pnut used for the SOLO POTM.
(please inclued any references you think might be of value!)
'Go to the nearest' :-( Ha! - never got round to submitting a second version.
Describe briefly the strategy pnut used for the MULTIPLE POTM.
Same as solo strategy.
If I had it to do all over again, here's what I'd try:
I'd try harder!
I named my squirrel pnut because ...
The p is silent.
Where do you live? do for fun? do for work? innermost secret?
Shanghai, Travel, Seismic data visualization, errrr...
|