info about Fruit

Archive of the old Parsimony forum. Some messages couldn't be restored. Limitations: Search for authors does not work, Parsimony specific formats do not work, threaded view does not work properly. Posting is disabled.

Re: info about Fruit

Postby Ulrich Tuerke » 10 Mar 2004, 15:55

Geschrieben von: / Posted by: Ulrich Tuerke at 10 March 2004 15:55:51:
Als Antwort auf: / In reply to: Re: info about Fruit geschrieben von: / posted by: Ulrich Tuerke at 10 March 2004 15:54:37:
Hello,
My first (technically second) post on the Winboard forum.
This is about my new engine Fruit.
Good thing that Dann released a version yesterday, I gain half a day then.
Sorry it is UCI only at the moment. I use xboard on linux and have my own "UCI2WB" adapter. I will see later with Dann Corbit if we manage to port it to Windows.
I will make sure Winboard users have some way of running my engine. If all fails, I will add Winboard support to the code, although this is against my design goals (code quality).
Fruit as of now is a completely untested engine that I wrote a year ago.
It has slept on my hard disk since then.
Suddenly I get motivated again by seeing tournaments beeing ran on the Internet e.g. WBEC.
I thought I would enjoy beeing part of that, but there is a long way to go ...
First step was to release my engine "as is" (as it was last year).
So I can start improving it (modifying a lot of code), without having to worry about when to release a stable version.
In short I'm not sure about what the code does anymore, I will have to reread the code!
I intend to change a lot of (small) things in the few months to come and that will introduce new bugs.
At least there will be a stable release to compare it to (should be next week if testing is OK).
It is true that I claim my engine is weak, because I know all that's missing from the code (few examples below).
But it is a completely untested engine, maybe it is good, I just don't expect it to be.
Example, what's in the eval:
- piece-square table
- static pawn eval (only basic pawn types, no interaction with pieces)
- 3 or 4 boolean features like "if there an "own pawn" along my "forward" bishop diagonals" (negative score)
That's all!!!
No king safety, no mobility of any kind, no connected passers, *no knowledge of drawish endgames*!
How could such a program play decent chess I do not know, it's not even fast.
Search:
R=3 nullmove, extend all check evasions 1 ply, try all checks 1st ply of quiescence.
That's all!!!
No other extension.
No parameter tuned, nothing tested!
After the release I will test several combinations of search parameter.
If I have time next week-end I will add them as UCI options so people can play with it.
In commercial programs they are already tuned so you can't improve the program.

I really do not understand.
I have king safety
I have mobility based on number of moves.
I thought they are important.
maybe the 3 or 4 boolean features that I do not have are important.
What do you mean that is all?
What about order of moves(maybe it is better than other engines?)
I am sure that it is possible to improve commercial programs and the results that I read suggest that commercial programs are extremely weak.
I did not test fruit against movei but based on reading Dann's post I got the impression that my movei is at similiar level to fruit and movei proved to be not without chances against commercial programs.
I guess that you have some advantages like better order of moves and better use of hash tables relative to me.
I am sure that the way that I use hash tables is extremely bad relative to other programs.

Uri
It's often surprising how little chess knowledge is necessary in order to create a reasonable play.
A long time ago, I had had a look into the code of Bruce's Gerbil, which already plays fairly well imho. When looking at the evaluation code, I found
In case, I would have the idea to write a new program, I would think much more about any piece of evaluation code before implementing; basic rule: the lesser the better, in case of doubt regarding usefulness of the code I'd rather skip it.
Uli
EOF (had been in brackets and thus skipped :))
before it really started, what had puzzled me a lot.
Ulrich Tuerke
 

Re: info about Fruit

Postby Fabien Letouzey » 10 Mar 2004, 16:01

Geschrieben von: / Posted by: Fabien Letouzey at 10 March 2004 16:01:00:
Als Antwort auf: / In reply to: Re: info about Fruit geschrieben von: / posted by: Uri Blass at 10 March 2004 15:41:35:

I hope that you will give some information about the code that you used for testing.
I mainly used test position and games for testing and I am surprised that you talk about not using chess games.
There was time that I did not use chess game when I tested my move generator and I used the perft function but this time is over.
Yes, read "Writing Solid Code" and such books :)))
It's from Microsoft, but when something is that good I am not ashamed.
One thing I did for instance:
I had a function that generated a randon n-ply game. It starts with the opening position, plays n random plies, and returns the board.
Then I would test my chess fonctions on those "random" (but reachable) boards, using different algorithms. For example an optimised strictly-legal check-evasion generation compared with a naive implementation of generating all pseudo-legal moves (including those that don't get out of check) and then filtering out moves that are illegal (using make/is_in_check/unmake functions).
Of course now you can say "use perft for that"; but my approach is not just for move generation; I tested all sort of things with it. The point is not so much about catching bugs, but gaining confidence in the code.
I'll stay with my first advice. There's nothing secret, it's all about software. The books are there to be read; read "Writing Solid Code" (or some other book)! Of course think for yourself; don't use hungarian just because he did it.
Fabien.
Fabien Letouzey
 

Re: info about Fruit

Postby Uri Blass » 10 Mar 2004, 16:05

Geschrieben von: / Posted by: Uri Blass at 10 March 2004 16:05:31:
Als Antwort auf: / In reply to: Re: info about Fruit geschrieben von: / posted by: Ulrich Tuerke at 10 March 2004 15:54:37:
Hello,
My first (technically second) post on the Winboard forum.
This is about my new engine Fruit.
Good thing that Dann released a version yesterday, I gain half a day then.
Sorry it is UCI only at the moment. I use xboard on linux and have my own "UCI2WB" adapter. I will see later with Dann Corbit if we manage to port it to Windows.
I will make sure Winboard users have some way of running my engine. If all fails, I will add Winboard support to the code, although this is against my design goals (code quality).
Fruit as of now is a completely untested engine that I wrote a year ago.
It has slept on my hard disk since then.
Suddenly I get motivated again by seeing tournaments beeing ran on the Internet e.g. WBEC.
I thought I would enjoy beeing part of that, but there is a long way to go ...
First step was to release my engine "as is" (as it was last year).
So I can start improving it (modifying a lot of code), without having to worry about when to release a stable version.
In short I'm not sure about what the code does anymore, I will have to reread the code!
I intend to change a lot of (small) things in the few months to come and that will introduce new bugs.
At least there will be a stable release to compare it to (should be next week if testing is OK).
It is true that I claim my engine is weak, because I know all that's missing from the code (few examples below).
But it is a completely untested engine, maybe it is good, I just don't expect it to be.
Example, what's in the eval:
- piece-square table
- static pawn eval (only basic pawn types, no interaction with pieces)
- 3 or 4 boolean features like "if there an "own pawn" along my "forward" bishop diagonals" (negative score)
That's all!!!
No king safety, no mobility of any kind, no connected passers, *no knowledge of drawish endgames*!
How could such a program play decent chess I do not know, it's not even fast.
Search:
R=3 nullmove, extend all check evasions 1 ply, try all checks 1st ply of quiescence.
That's all!!!
No other extension.
No parameter tuned, nothing tested!
After the release I will test several combinations of search parameter.
If I have time next week-end I will add them as UCI options so people can play with it.
In commercial programs they are already tuned so you can't improve the program.

I really do not understand.
I have king safety
I have mobility based on number of moves.
I thought they are important.
maybe the 3 or 4 boolean features that I do not have are important.
What do you mean that is all?
What about order of moves(maybe it is better than other engines?)
I am sure that it is possible to improve commercial programs and the results that I read suggest that commercial programs are extremely weak.
I did not test fruit against movei but based on reading Dann's post I got the impression that my movei is at similiar level to fruit and movei proved to be not without chances against commercial programs.
I guess that you have some advantages like better order of moves and better use of hash tables relative to me.
I am sure that the way that I use hash tables is extremely bad relative to other programs.
It's often surprising how little chess knowledge is necessary in order to create a reasonable play.
A long time ago, I had had a look into the code of Bruce's Gerbil, which already plays fairly well imho. When looking at the evaluation code, I found before it really started, what had puzzled me a lot.
In case, I would have the idea to write a new program, I would think much more about any piece of evaluation code before implementing; basic rule: the lesser the better, in case of doubt regarding usefulness of the code I'd rather skip it.
Uli

I do not consider Gerbil to be a program that plays fairly well.
Olithink is better than Gerbil and as far as I know has not more evaluation code.
I always test before accepting adding knowledge to the evaluation because there is a good chance that I may have a bug.
If you care about long time control then parts of the search like better order of moves are more important at long time control.
Uri
Uri Blass
 

Re: info about Fruit

Postby Telmo Escobar » 10 Mar 2004, 16:14

Geschrieben von: / Posted by: Telmo Escobar at 10 March 2004 16:14:07:
Als Antwort auf: / In reply to: Re: info about Fruit geschrieben von: / posted by: Volker Pittlik at 10 March 2004 13:31:51:
...
.
No. Name Win Draw Loss Unf. Score Games %
-----------------------------------------------------------
.1 Fruit +4 =1 -5 *0 4.5 10 45.0%
.2 Dragon_45 +0 =0 -2 *0 0.0 2 0.0%
.3 ELChinito 3.25 +1 =1 -0 *0 1.5 2 75.0%
.4 List512 +2 =0 -0 *0 2.0 2 100.0%
.5 Ruffian_210 +2 =0 -0 *0 2.0 2 100.0%
.6 Yace-09982 +0 =0 -2 *0 0.0 2 0.0%
.
Total Games: 10
White Wins: 4 (40.0%)
Black Wins: 5 (50.0%)
Draws: 1 (10.0%)
Unfinished: 0 (0.0%)


Yace and Dragon aren't wimps AFAIK.
Volker
And List, Ruffian are very smart wimps
Telmo Escobar
 

Re: info about Fruit

Postby Tord Romstad » 10 Mar 2004, 16:24

Geschrieben von: / Posted by: Tord Romstad at 10 March 2004 16:24:03:
Als Antwort auf: / In reply to: Re: info about Fruit geschrieben von: / posted by: Fabien Letouzey at 10 March 2004 14:30:22:
Malus is definitely used in French, don't know in English.
Yes I live in England and your English is better :)))
Scandinavians are well known for speaking 5 languages fluently (even those they haven't learnt) :)
I don't have rooks on open files but as you know I don't have mobility either!
How this could lead to even remotely decent chess is a mystery to me.
I've never seen the word before, and assume it was just a word you invented
yourself. Anyway, I will start using it in English and Scandinavian from
now on.
I really don't think so.
We may have this reputation, but it isn't really correct. It is probably true
that the average Scandinavian knows English better than most people in the rest
of Europe, but apart from that our foreign language skills are not at all
impressive.
The only languages I speak are Scandinavian, English and Esperanto. I am mostly
able to decipher written German and French (and I enjoy doing so), but I cannot
speak either language.
Well, at least it is no exaggeration to claim that your engine is able to
produce very decent results, even with your current simple eval.
Tord
Tord Romstad
 

Re: info about Fruit

Postby Fabien Letouzey » 10 Mar 2004, 16:37

Geschrieben von: / Posted by: Fabien Letouzey at 10 March 2004 16:37:06:
Als Antwort auf: / In reply to: Re: info about Fruit geschrieben von: / posted by: Tord Romstad at 10 March 2004 16:24:03:

I don't have rooks on open files but as you know I don't have mobility either!
How this could lead to even remotely decent chess is a mystery to me.
Well, at least it is no exaggeration to claim that your engine is able to
produce very decent results, even with your current simple eval.
Tord
As I mentionned in one of my other posts, I have a boolean feature for rooks.
There is a malus if the rook is behind a "own pawn". So it's not like it has nothing at all.
The procedure was to watch games with no rook feature at all, get hurt a lot by Fruit's pitiful moves (I'm ~1800 elo although at tactics I'm probably more like 1400 now that I stopped playing), and felt force to add a feature. Same for bishops blocked by "own pawns".
A concept I am trying to use is "small dimensionality". If a boolean feature does the job of a multi-valued one, I go for the boolean version. It has all sorts of good statistical properties like "easy to test if it actually helps or not" and "easier to tune".
I intend to apply that to move ordering as well (far future). Anything that can be tuned in fact.
I used to work on machine learning research (not for games). Although I don't use machine learning in chess (but I sure did for Othello!), I try to apply principles (heuristics if you want) that work in that field.
Fabien.
Fabien Letouzey
 

Re: info about Fruit

Postby Fabien Letouzey » 10 Mar 2004, 17:20

Geschrieben von: / Posted by: Fabien Letouzey at 10 March 2004 17:20:17:
Als Antwort auf: / In reply to: Re: info about Fruit geschrieben von: / posted by: Benny Antonsson at 10 March 2004 13:43:38:

Hello !
Is WB-support going to worsen your code quality or why do you only support UCI ?
Will the source be available on Danns FTP ?
/Thanks for an interesting engine !
So much to answer, I forgot your post!
Yes, WB support would make my code let's say "against my design goal".
Another programmer might answer differently.
I am not claiming UCI is the best.
Believe it or not I don't like UCI either, but it fits my design near-perfectly.
In the long run I also intend to move UCI support outside of the engine.
Look at it the right way. If I write a separate program that talks to say Winboard and engines, other engines will benefit from it. That's a basic principle in the Unix world, but is opposit to the "the GUI does everything" Windows type of thinking. There is no right or wrong! They are just different.
I say it again, there will be Winboard support in one way or another.
If I can, that will be in a separate program (you call that adapter in the Windows world).
If I can't I will add the Winboard code into the engine against my will :)))
Yes source code will be available on Dann's site.
Don't forget that the engine is not even released yet.
It is in an early-phase of UCI testing!
Hash table size is always 16 MB, it will ignore any change!
Beta release should take place in a few hours, and if all goes well "real" release next week.
So you can use the engine, but I hope it will be replaced with version 1.0 everywhere, when available.
Fabien.
Fabien Letouzey
 

Re: info about Fruit

Postby Fabien Letouzey » 10 Mar 2004, 17:48

Geschrieben von: / Posted by: Fabien Letouzey at 10 March 2004 17:48:33:
Als Antwort auf: / In reply to: Re: info about Fruit geschrieben von: / posted by: Fabien Letouzey at 10 March 2004 17:20:17:

Hash table size is always 16 MB, it will ignore any change!
So much is going on that I'm not even sure which version I sent to Dann yesterday.
Can somebody check with some "task manager" if Fruit uses more than 16 MB hash tables when requested?
Fabien.
Fabien Letouzey
 

Re: info about Fruit

Postby Benny Antonsson » 10 Mar 2004, 17:58

Geschrieben von: / Posted by: Benny Antonsson at 10 March 2004 17:58:21:
Als Antwort auf: / In reply to: Re: info about Fruit geschrieben von: / posted by: Fabien Letouzey at 10 March 2004 17:48:33:
Hash table size is always 16 MB, it will ignore any change!
So much is going on that I'm not even sure which version I sent to Dann yesterday.
Can somebody check with some "task manager" if Fruit uses more than 16 MB hash tables when requested?
Fabien.
Fruit uses the amount of hash that I configure
Benny Antonsson
 

Re: info about Fruit

Postby Fabien Letouzey » 10 Mar 2004, 18:00

Geschrieben von: / Posted by: Fabien Letouzey at 10 March 2004 18:00:05:
Als Antwort auf: / In reply to: Re: info about Fruit geschrieben von: / posted by: Benny Antonsson at 10 March 2004 17:58:21:

Can somebody check with some "task manager" if Fruit uses more than 16 MB hash tables when requested?
Fruit uses the amount of hash that I configure
I guess it's not everyday a programmer asks what his engine is doing :)
Fabien.
Fabien Letouzey
 

Re: info about Fruit

Postby Fabien Letouzey » 10 Mar 2004, 18:47

Geschrieben von: / Posted by: Fabien Letouzey at 10 March 2004 18:47:29:
Als Antwort auf: / In reply to: Re: info about Fruit geschrieben von: / posted by: Tord Romstad at 10 March 2004 12:30:14:

I could try to port your adapter to Mac OS X, if you want (probably a
trivial task). It seems like a useful tool.
Interesting. What you write above is an almost exact description of my
own situation when I released my engine last year, except that my code
had been sleeping for three or four years by the time I picked it up
again. I'm still not sure what all the old code does, but somehow it
seems to work (which is almost unbelievable, considering how the code
looks).
Considering Dann's data, I don't really believe this is true. It is
more likely that Gothmog is a particulary difficult opponent for Fruit.
You write that you have no king safety at all at the moment. This
probably makes Fruit very vulnerable to Gothmog's primitive and
one-dimensional attacking style of play.
This sounds like a good approach. My biggest problem in chess programming
has always been my lack of patience. I always want to add everything at
once, and I never test as carefully as I should.
Good luck with Fruit! I look forward to seeing your engine in action,
and to follow the development.
As I explained in emails, it is very incomplete as yet. It only understands a subset of the xboard protocol (for instance only sudden death time controls and no pondering) and also the parsing of search information is taylored to Fruit's output.
I intend to work on that as soon as Fruit 1.0 is released (some time next week).
It uses POSIX system calls so should compile and work fine under OS X.
The Windows port will be a different story, although I trust GCC will manage it.
Yes, I didn't want to wait for that long. My coding style changes too much in say 2 years, and because of that I refuse to modify outdated programs.
Of course, and that will force me to do something "pretty soon" (as in "in one month").
I have followed the "let's add all this stuff and see if it works" path so many time that I wanted to try a different approach. Also, Fruit was only an experiment to try the 0x88 approach (actually 16x12, which I consider mailbox + 0x88) and more importantly to study search trees. So it is only natural that the eval is minimal. What is not natural is that it might be playing OK. I did not know because I never tested it in matches.
Time will tell ...
Fabien.
Fabien Letouzey
 

Re: info about Fruit

Postby Fabien Letouzey » 10 Mar 2004, 19:09

Geschrieben von: / Posted by: Fabien Letouzey at 10 March 2004 19:09:52:
Als Antwort auf: / In reply to: Re: info about Fruit geschrieben von: / posted by: Fabien Letouzey at 10 March 2004 19:08:31:

I am afraid though that porting my software will always be a nightmare. Let's try and see.
By that I mean "porting to Windows".
Fabien.
Fabien Letouzey
 

Previous

Return to Archive (Old Parsimony Forum)

Who is online

Users browsing this forum: No registered users and 30 guests