|
|
 |
 |
If you don't know what CoreWar is, you should have a look at some
beginner guides which can be found at http://www.koth.org.
Here you can find Yace, which is a program that automatically creates
corewar-warriors, using a genetic algorithm. Yace was a modified version of ga_war.c,
another corewar evolver (many thanks to Jason Boer), but in the latest
release there is not much code left from ga_war. I also want to thank M
Joonas Pihlaja for his Corewar Simulator exhaust,
which is released under the GPL.
|
 |
 |
Latest release:
Both releases include exactly the same files:
- Win32-executable which was created with MS Visual C++ 6.0 and compressed with UPX.
- Sourcecode which should compile with GNU-Utilities (make, gcc or any other ANSI-C compiler)
- Project Files for MS Visual C++ 6.0
- franz' testset for tiny-hills, an update (from Feb. 2002) copy of the top 20 from corewars.sourceforge.net.
Terry Newton has written a description
of yace and some batch-files for easier use of it.
|
 |
 |
 |
|
 |
 |
 |
Here is a list of results I got from the new Benchmark! Try yace
-bench and mail me your
results if you want to be listed here, or use ICQ 94298825 if you
want.
Please note that you shouldn't use yace to find out which pc is
better, there are much better benchmarks
to do this. It is only useful if you want to know how long it will
take to create really good warriors on your machine.
| Speed |
Battles/sec |
Processor |
MHz |
Battles/Mhz |
Compiler |
OS |
Tolerance |
| 388.0%
|
5232.43 |
AthlonXP 2100+ |
2506 |
2.088
|
VC 6.0 /Ox /Ob2 |
WinXP |
± 0.86% |
| 250.3%
|
3375.33 |
AMD T-Bird |
1610 |
2.096
|
VC 6.0 /Ox /Ob2 |
WinXP |
± 0.86% |
| 182.3%
|
2457.67 |
Intel P4 |
1500 |
1.638
|
VC 6.0 /Ox /Ob2 |
Win2k |
± 4.69% |
| 143.7%
|
1938,00 |
AMD Athlon |
1000 |
1.938
|
VC 6.0 /Ox /Ob2 |
Win98 |
± 2.02% |
| 100.0%
|
1348,33 |
Intel P III |
800 |
1.685
|
VC 6.0 /Ox /Ob2 |
Win98 |
± 1.93% |
| 100.0%
|
1348.27 |
AMD Duron |
650 |
2.074
|
VC 6.0 /Ox /Ob2 |
Win2k |
± 1.30% |
| 67.9%
|
914.93 |
AMD Duron |
650 |
1.408
|
BC 5.5.1, -O2 |
Win2k |
± 1.46% |
| 63.0%
|
849.00 |
AMD K6-2 |
500 |
1.698
|
VC 6.0 /Ox /Ob2 |
Win2k |
± 1.53% |
| 51.6%
|
695.37 |
AMD K6-2 |
400 |
1.738
|
gcc, -O3 |
FreeBSD 4.4 |
± 1.34% |
Explanation:
- Speed: how fast is the computer compared to the
reference - PC, my Duron 650/Win2k/Visual C++ 6.0.
- Battles/sec: how many battles the computer is able to do in
one second with the reference-warriors.
- Battles/MHz: let you compare different compilers, how well
processors are able to scale, different processor architectures, and so on... Everything you can imagine :)
- Tolerance: The benchmark is done 4 times, and the tolerance
shows how much results differ. Tolerance should be as low as possible
if you want precise results.
Please do not modify the benchmark-warriors because results would get useless.
|
 |
 |
 |
|
 |
 |
 |
| P |
D |
Description |
| 10 |
3 |
Rewrite everything in readable C++ |
- P: Priority of the task, 0=lowest, 10=maximum
- D: How difficult the task is (also includes how time consuming it is), 0=easy, 10=impossible
|
 |
 |
 |
|
 |
 |
 |
Some warriors created with yace. All warriors have been king of the
Hill on the tiny-hill at corewars.sourceforge.net for some time.
Created after about 4 days from scratch on a Duron 650 with Win2000,
Visual C++ 6.0. I used Franz'
testset.
 |
;redcode-94
;assert 1
;author Martin Ankerl martinankerl@web.de
;name Evolver 1100 x 500
;strategy created with YACE - yet another corewar evolver
;strategy http://www.fhs-hagenberg.ac.at/students/se/se00001/
mov.i # 247, } 20
mov.i # 411, } 20
spl.x $ 184, { 785
spl.i $ 797, * 790
spl.ba # 793, < 274
mov.i < 798, > 16
mov.i } 793, } 796
mov.i @ 5, < 796
div.x > 796, > 796
end 0
Opponent Scores Results Performance of Evolver
-------- ------ ------- ---------=---------=---------=---------=
Tiny Wicked Pet 896 515 142 269 89 *************
Tiny Tiberius" 739 589 139 189 172***************
Tiny Spiral" (l 434 731 132 33 335 *******************
Tiny Porter (+1 824 617 186 255 59 ****************
Golden Gate v4" 582 900 294 188 18 ************************
Tiny Everclear 564 885 278 171 51 ***********************
Tiny Brutality" 336 104 310 73 117 ***************************
Tiny Barbarian 764 488 80 172 248 *************
Tiny AK-47" (le 714 738 230 222 48 *******************
D-Clear" (lengt 227 124 405 66 29 *********************************
-------- ------ ------- ---------=---------=---------=---------=
Adjusted Score: 155
 |
;redcode-94
;assert 1
;author Martin Ankerl martinankerl@web.de
;name Evolver 4870 x 200
;strategy created with YACE - yet another corewar evolver
;strategy http://www.fhs-hagenberg.ac.at/students/se/se00001/
mov.b } 213, $ 198
spl.x # 270, > 182
mov.i > 797, } 1
spl.ab { 270, < 791
mov.i @ 3, { 390
mov.i @ 14, < 789
djn.b $ 798, < 415
djn.ba $ 798, { 415
djn.b $ 182, * 7
dat.b > 255, * 19
add.f * 19, { 405
spl.f } 783, < 18
spl.f > 783, < 18
djn.b { 276, } 18
jmn.f < 1, } 194
end 0
Opponent Scores Results Performance of Evolver
-------- ------ ------- ---------=---------=---------=---------=
Tiny Wicked Pet 774 642 186 230 84 *****************
Tiny Tiberius" 804 630 188 246 66 ****************
Tiny Spiral" (l 339 825 163 1 336 **********************
Tiny Porter (+1 905 515 145 275 80 *************
Golden Gate v4" 621 846 271 196 33 **********************
Tiny Everclear 550 874 266 158 76 ***********************
Tiny Brutality" 185 124 393 39 68 *********************************
Tiny Barbarian 629 569 89 109 302 ***************
Tiny AK-47" (le 977 470 139 308 53 ************
D-Clear" (lengt 815 626 189 252 59 ****************
-------- ------ ------- ---------=---------=---------=---------=
Adjusted Score: 144.8
|
 |
 |
 |
|
 |
 |
 |
Bugfix in Makefile, thanks to sirex
- Installer-System added
- Makefile updated
- Testset-warriors updated
- Design of completely new, much cooler and a lot sexier mars
completed (well, no files changed, but everything is in my mind :)
Sorry, there are no major changes as the new version number might
suggest. I believe yace is now stable enough to get a version number
starting with 1 :)
-
Benchmark added: 'yace -bench' will calculate how many fights are
possible per seconds. I hope some people (you!) will give me results!
-
status-directory can be any directory, also a global- accessible
directory in a LAN, so it is possible to run yace on many computers
and get all results together. (I will concentrate on clustering in the
future, but up to now this is completely new for me)
-
some minor bugfixes I have forgotten..
-
bugfix: only 1020 warriors or so could be loaded, now
much more is possible.
-
Sometimes a veteran of the local koth returns to the population
-
kothsimi.c: very similar to evolving with a hill, but tries to be more
intelligent: A challenger is tested how similar it is to other
warriors on the hill. If it is very similar to another warrior and
scores better, it replaces the worse one.
-
I have added project files for MS Visual C++ 5.0, and an executable
for everyone who can't compile yace. I have also successfully compiled
yace under linux (you may get many many warnings, which can be
ignored...)
-
evolving with a hill added! now yace creates a hill as at
www.koth.org. It also creates a html-file in the koth-directory, where
you can have a look at the warriors (looks very interesting I think
:-)
-
yace can be stopped by deleting the file 'del2stop'
-
many other things I have forgotten...
-
The population can fight against a testset, the best warrior is saved
to a filename according to the score.
-
Population can be saved and is loaded automatically.
-
changed the whole structure of yace, now it should be easier to
extend, smaller, amd perhaps a little bit faster.
-
I have removed the file-based evolution and now do this complete in
memory! A small step for a good programmer, but a great step for
me... ;-)
 |
-
The random number generator creates numbers which are more likely
to be somewhere around coresize/2, coresize/3, coresize/4 and so
on. With this piece of code the evolver is much more likely to produce
papers.
-
when 2 warriors fight each other every fight is done twice, once
with swapped starting position. With this implementation two warriors
which are exactly the same will also get exactly the same score. This
is especially useful for very starting-point dependent warriors as
d-clears.
-
there is no need for Pmars any
more: I integrated exhaust,
which is under the GPL, easy to use and
fast. This modification gets very usefull when evolving for the tiny
hill, because there is no overhead by starting an external
program.
|
 |
 |
|