From the mirror universe: Barracuda 2.3

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
Eelco de Groot
Posts: 4561
Joined: Sun Mar 12, 2006 2:40 am
Full name:   

Re: From the mirror universe: Barracuda 2.3.2

Post by Eelco de Groot »

Code for a bugfix version of 2.3.1 is now available on TDDB Changelog should be included but is not there yet, I leave that for a later version of the code. Changes from Stockfish 2.3.1 are not a total rewrite though, so I hope most of it I have already commented here and there in other TalkChess posts. I only included my own unoptimized testcompile again and it is 32 bits, nothing more, nothing less. By coincidence the name is now RS 232 but this is not an interface, it actually should be able to play chess, if I included all the files :o

Eelco
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan
User avatar
velmarin
Posts: 1600
Joined: Mon Feb 21, 2011 9:48 am

Re: From the mirror universe: Barracuda 2.3.2

Post by velmarin »

Hello, Eelco.

I wanted to compile your code, is the second time,
I get this error in Visual Studio (Microsoft and Intel compilers)

Code: Select all

src\endgame.cpp(199): error : a value of type "int" cannot be assigned to an entity of type "Value"
1>    					  result =   VALUE_DRAW + (pos.piece_count(strongerSide, PAWN) * rank);//VALUE_DRAW
1>    	



If I remove this code is no problem, but not the point.

Code: Select all

if (   (pawnFile == FILE_A || pawnFile == FILE_H)
			  && !(pawns & ~file_bb(pawnFile)))
		  {
			  Square bishopSq = pos.piece_list(strongerSide, BISHOP)[0];
			  Square queeningSq = relative_square(strongerSide, pawnFile | RANK_8);
			  Square kingSq = pos.king_square(weakerSide);
			  
			  if (   opposite_colors(queeningSq, bishopSq)
				  && abs&#40;file_of&#40;kingSq&#41; - pawnFile&#41; <= 1&#41;
			  &#123;
				  // The bishop has the wrong color, and the defending king is on the
				  // file of the pawn&#40;s&#41; or the neighboring file. 
				  // If the defending king has distance 1 to the promotion square or
				  // is placed somewhere in front of the pawn, it's a draw.
				  if (   square_distance&#40;kingSq, queeningSq&#41; <= 1
					  || relative_rank&#40;strongerSide, kingSq&#41; >= rank&#41;
					  result =   VALUE_DRAW + &#40;pos.piece_count&#40;strongerSide, PAWN&#41; * rank&#41;;//VALUE_DRAW
			  &#125;
		  &#125;




One idea is that the name "Rainbow Serpent" is too long and can cause problems in fritz.

In Other forum there is enough interest on your engine.
I can comment.
User avatar
Eelco de Groot
Posts: 4561
Joined: Sun Mar 12, 2006 2:40 am
Full name:   

Re: From the mirror universe: Barracuda 2.3.2

Post by Eelco de Groot »

velmarin wrote:Hello, Eelco.

I wanted to compile your code, is the second time,
I get this error in Visual Studio (Microsoft and Intel compilers)

Code: Select all

src\endgame.cpp&#40;199&#41;&#58; error &#58; a value of type "int" cannot be assigned to an entity of type "Value"
1>    					  result =   VALUE_DRAW + &#40;pos.piece_count&#40;strongerSide, PAWN&#41; * rank&#41;;//VALUE_DRAW
1>    	



If I remove this code is no problem, but not the point.

Code: Select all

if (   &#40;pawnFile == FILE_A || pawnFile == FILE_H&#41;
			  && !&#40;pawns & ~file_bb&#40;pawnFile&#41;))
		  &#123;
			  Square bishopSq = pos.piece_list&#40;strongerSide, BISHOP&#41;&#91;0&#93;;
			  Square queeningSq = relative_square&#40;strongerSide, pawnFile | RANK_8&#41;;
			  Square kingSq = pos.king_square&#40;weakerSide&#41;;
			  
			  if (   opposite_colors&#40;queeningSq, bishopSq&#41;
				  && abs&#40;file_of&#40;kingSq&#41; - pawnFile&#41; <= 1&#41;
			  &#123;
				  // The bishop has the wrong color, and the defending king is on the
				  // file of the pawn&#40;s&#41; or the neighboring file. 
				  // If the defending king has distance 1 to the promotion square or
				  // is placed somewhere in front of the pawn, it's a draw.
				  if (   square_distance&#40;kingSq, queeningSq&#41; <= 1
					  || relative_rank&#40;strongerSide, kingSq&#41; >= rank&#41;
					  result =   VALUE_DRAW + &#40;pos.piece_count&#40;strongerSide, PAWN&#41; * rank&#41;;//VALUE_DRAW
			  &#125;
		  &#125;




One idea is that the name "Rainbow Serpent" is too long and can cause problems in fritz.

In Other forum there is enough interest on your engine.
I can comment.
Hi Jose,

Thanks for mentioning this! I had almost forgotten this piece of code, and I copied most of it from another section in endgame.cpp. My old MS Visual Studio 2005 seems to miss this error, not even a warning ever, 17 in other places though. I think Marco would recommend "strong typing" in case of mixed datatypes, something like

Code: Select all

result =   VALUE_DRAW + Value&#40;pos.piece_count&#40;strongerSide, PAWN&#41; * rank&#41;;

should be accepted without the need for extra ()

The name problem I thought is more with the space between Rainbow and Serpent or things like an extra . before the final one. Sune Larsson mentioned that those are problematic in his post below here, also for other GUIs. Or maybe Fritz shortens the name elsewhere in the GUI? The executable I have given a name without spaces before posting it but in Shredder the space in the executable name is not a problem.

I had not seen Rainbow Serpent mentioned elswhere! Only in the chess2U forum and the bugfix is also mentioned there! But don't know exactly what the Other Forum is.

Thanks
Eelco
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan
User avatar
velmarin
Posts: 1600
Joined: Mon Feb 21, 2011 9:48 am

Re: From the mirror universe: Barracuda 2.3.2

Post by velmarin »

Immortal Specifically, several comments loose as yet no single yarn.
In Stockfish threat and Several comments more.

http://immortalchess.net/forum/showthre ... ht=rainbow

Code: Select all

Bugfix of Rainbow serpent.... from TDDB... This is a bugfix version of the 2.3.1, not a lot of line changes but some I think were bugs so those changes I think can be important.
There was a suspected bug in the bad bishop initialization and a certain bug in the end of the pawn evaluation. Not a bug but a code change is that singular extensions are not forced to go through LMR reduction but can go directly to full search depth. The node is expected to fail high so I don't think skipping the reduced search is bring much instability, there are some more &#40;sometimes False-&#41;Fail Lows visible now &#40;there were hardly any before&#41; probably due to this but the benefit should be that a Fail Low is now certainly from a full search and therefore in some instances a bit earlier &#40;which is what you want, trust me )

In spite of fixes, there may be major bugs left and testing is still very minimal... I do hope this is still a bit better than the 2.3.1 now that some of the bugs are fixed, hence the 2.3.2 designation. No new read.me file yet, it is copied from the last archive like most other files. The slightly changed files are thread.h, thread.cpp, pawns.cpp, evaluate.cpp and search.cpp. All of the rest is still very much like Stockfish 2.3.1 + some changes from the GitHub master, all those were already in Rainbow Serpent 2.3.1.
One search change of the "hollowPV" condition should do nothing at all, but I have not yet verified that it does nothing so I left it in for now .
Eelco de Groot
Several comments more.
User avatar
Eelco de Groot
Posts: 4561
Joined: Sun Mar 12, 2006 2:40 am
Full name:   

Re: From the mirror universe: Barracuda 2.3.2

Post by Eelco de Groot »

Ah yes, I had just remembered the forum and found that page, translated back to Dutch it says that I found cockroaches in my engine :) Not good!

Well it is not the final version, just a snapshot. Instead of a lot of testing I rather first think if I understand what I want the code to do. My programming certainly compared to a very advanced C++ program like Stockfish is not really good, but a lot is possible by just altering what the Stockfish team wrote. I understand the original Ferrarifish was even worse than Barracuda. The ideas we had for King Safety were no good for instance. I am glad I changed the Kingdefender code back. Only very little code of it remains, elsewhere in the evaluation function, I don't think it can do much harm.

I am not sure what I should try next, without starting testgames. It probably comes down to it that you start making progress only if you start reading very carefully what the code you introduced actually does (or alternatively start analyzing testgames). You can't avoid that, and it isn't possible to automate it yet I think. Although in theory it should be a nice field for advanced AI; not a new idea of course, programs that could debug themselves.

Eelco
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan
User avatar
velmarin
Posts: 1600
Joined: Mon Feb 21, 2011 9:48 am

Re: From the mirror universe: Barracuda 2.3.2

Post by velmarin »

I have not read much criticism,
They're good kids, where else is tested.

The case, I wanted to compile 64-bit,
and give it to prove, they always grateful,
wondered why the name of the engine.
If you want, I will compile,
RaimbowSerpent ****
User avatar
Eelco de Groot
Posts: 4561
Joined: Sun Mar 12, 2006 2:40 am
Full name:   

Re: From the mirror universe: Barracuda 2.3.2

Post by Eelco de Groot »

Sure José,

It would be great if you could make a 64 bit compile of Rainbow Serpent 2.3.2. Even just to see if everything works 8-) ! I hope that the line I gave is a way to solve the error in endgame.cpp. I can't test it because I get no error with the old compiler and don't have 64 bits operating system yet. If the name of the executable is too long, or can't have spaces you can change it. But I don't think the name string inside the program should be shorter, that is just the GUI's responsability to cope with.

Regards, Eelco
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan
User avatar
velmarin
Posts: 1600
Joined: Mon Feb 21, 2011 9:48 am

Re: From the mirror universe: Barracuda 2.3.2

Post by velmarin »

http://immortalchess.net/forum/showthre ... post317011

Link dowunload:
http://www.mediafire.com/?8v7cclhvxhy1bck

posdata:
The above link is a link semi_privado beta ....
User avatar
Eelco de Groot
Posts: 4561
Joined: Sun Mar 12, 2006 2:40 am
Full name:   

Re: From the mirror universe: Barracuda 2.3.2

Post by Eelco de Groot »

velmarin wrote:http://immortalchess.net/forum/showthre ... post317011

Link dowunload:
http://www.mediafire.com/?8v7cclhvxhy1bck

posdata:
The above link is a link semi_privado beta ....
Brilliant José! Now we a professionally made package including everything! Shall I also put a new RAR archive on the TDDB forum? In case the link to mediafire will be no more active then we still have that to refer to.

(I first extracted everything you made, then wrapped it in a new RAR archive)

Thank you very much!
Eelco
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan