Benvindo ao website de Supra chess engine

Benvindo ao website de Supra chess engine - Supra

© 2011-2017 Pedro Mourão Soares Correia

 

 

Supra é a primeira UCI Chess engine Portuguesa

 

 

 

Supra  é uma chess engine registada em U.S. Copyright Office (versão 17.0) em nome de Pedro Mourão Soares Correia (copyright com validade internacional) e é distribuído com a GNU-GPL license (versão 3) que permite uma versátil utilização por todos desde que o seu uso obedeça às regras da mesma licença, licença esta que é também compatível com a lei do Copyright. Os seguintes FAQ(gnu) e FAQ(osi) devem ser consultados.

 

 

 

A nova versão Supra 25.0 está disponível para download no fundo da página.

 

NOVIDADES!!!

Supra 25.0:

 

 

  • Com a versão especial Supra 25.0 Hev (avaliação pesada) recomendada apenas para computadores de alto desempenho.  

 

  • Melhoria na aplicação do filtro de null move e LMR.

 

  • conjunto de outras pequenas melhorias.

 

 

 

 

 

 

 

 

                                                                 Notas de autor:



O meu projecto de chess engine foi e é um desafio que eu lançei a mim prório como resposta à paixão que desde sempre tive pelo xadrez.

Supra engine é um programa escrito por um programador amador (e jogador amador!) e sendo um programa totalmente genuino sofre (por enquanto!) de algum défice de inteligência estratégico-posicional. 

No entanto, na sua primeira versão, Supra engine já conhece todas as regras de xadrez, incluíndo peões passados, pequeno e grande roque e promoções de peões tendo já ganho a alguns programas de xadrez como por exemplo o xadreco.

A versão actual Supra 25.0 é agora muito mais forte que Predateur 0.1.5.

 

 

                                  

                                               Dados técnicos:

 
Tipo: UCI chess engine (apenas programa lógico, não tendo estrutura gráfica, precisando assim de programa gráfico de xadrez (GUI) de maneira a se conectar para poder ser visualisado. Supra é compatível com a generalidade das GUIs como por exemplo fritz, chessbase, arena entre outras).

Linguagem: C ++

Dimensão: aprox. 350 000 linhas de código na versão 23.1 (15 000 na versão 1.0) 

Dimensão do executável: aprox. 5.0 MB

Criador e implementador:
Pedro Mourão Correia (Criador e proprietário da marca SUPRASISTEMA)

 

 

 

                           Caracteristicas operacionais actuais:

 


   

- SUPRA é baseado no algoritmo (Base algorithm) de analise de variação material semelhante ao algoritmo minimax.
 

 

- Adicionalmente SUPRA tem também o algoritmo alpha beta  com o filtro wormhole filtering, Null move pruning, Turbo search, vertical filter, positive/negative float filter, memory e deep memory   de maneira a cortar o número  de nodos examinados e percorrer a árvore de pesquisa mais rapidamente. Supra tem também Internal iterative deepening, Principal variation search, Iterative deepening e killer moves heuristic para ordenar melhor os nodos em ordem decrescente.
  

 

 

- SUPRA tem também matrizes posicionais que tendem em geral a fazer com que as peças ocupem o centro e ajudam os peões a mover-se consistentemente rumo às promoções. Existem ainda matrizes dinâmicas configuráveis através da opção aggressiveness temperament que ajudam SUPRA   a analisar  em primeiro lugar as posições mais vantajosas.

SUPRA tem agora também extra evaluation para melhor distinguir e diferenciar posições em função do seu valor. Os factores presentes nesta função são variados tais como a estrutura de peões, o numero de graus de liberdade, o ataque aos reis entre outros.

 

 

 

 

   Explicação das operações dos algoritmos usados em SUPRA: 

 

 

 

Algoritmo Base*  : Equivalente ao minimax com função de avaliação  baseada na diferença de material, logaritmo do quociente material (extra definition)  e extra evaluation que contem multiplos factores na sua fórmula e usa também o formato do logaritmo do quociente.

 

 

 


Algoritmos de filtragem em ordem decrescente  de eficiência: 

 

 

 

1- Algoritmo Alpha-beta:  (filtro horizontal / vertical: todos os nodos após a  condição alpha>=beta ser verificada serão  descartados sem perda de precisão. 100% de certeza que é a resposta é amesma, mas muito mais rápida. 

 

 

 

2- Wormhole pruning*:   trabalha dentro do alpha beta e não pode existir sem ele. O seu efeito é tanto mais forte quanto mais profundo se está na árvore de pesquisa uma vez que se pode relaçionar os alfas e betas desse nível com os alfas e betas dos niveis anteriores. 100% de certeza que é a resposta é amesma, mas muito mais rápida  do que o regular algaritmo alfa beta.

 

 

 

3- Null move pruning: O oponente em vez de jogar passa e deixa Supra jogar (com deep=deep-2.
Se Supra mesmo assim não conseguir atingir beta>alpha então não vale a pena analisar esse nodo. Este filtro não é 100% seguro mas penso que seja bastante seguro.

 

 

 

4- TURBO search*:  Turbo search melhora dinamicamente o efeito de positive float filter uma vez que permite o aumento fragmentado de alfa ao longo de toda a arvore de pesquisa.  Este filtro filtering não é 100% seguro mas penso que seja bastante seguro.  

 

 

 

5- Vertical filter*: Este filtro é aplicado quando a arvore é construida ou seja antes do algoritmo alfa beta ser aplicado nessa região (de cima para baixo, ao contrário de alfa beta que é de baixo para cima). Corta verticalmente a pesquisa a todos os nodos que correspondem a uma pré avaliação negativa relativamente aos alfas anteriores. Este filtro filtering não é 100% seguro mas penso que seja bastante seguro

 

 

 

6- Positive and negative float filter*:  Este filtro trabalha em sincronia com alpha e beta atraves de uma condição de sufeciência: se o valor de alpha é muito alto (alta vantagem para SUPRA) ou o beta é muito baixo (alta vantagem para o oponente ) suspende-se a pesquisa da engine nesta secção  mesmo que não se erifique condição alpha>=beta. (Filtro horizontal / vertical). Este filtro filtering não é 100% seguro mas penso que seja bastante seguro

 

 

 

7- Memory e Deep memory: sempre que Supra avalia um nodo memoriza o seu valor e posição correspondente (além do deph correspondente) numa tabela extensa de memória. Assim sempre que Supra encontra um nodo com a mesma posição e deph ela não necessita de expandir esse nodo e usa o valor encontrado anteriormente.  100% seguro.      

 

 

 

Algoritmos de ordenação em ordem decrescente  de eficiência:  

 

 

 

1- Principal variation search (PVS):  Supra Para cada nodo Supra executa primeiro uma primeira expanção scan com uma muito reduzida janelo (<1) se o valor de beta não sair fora da janela a pesquisa com janela de tamanho ilimitado não é executada e Supra poupa muito tempo na expanção desse nodo. 100% safe.    

 

 

2- Internal Iterative Deepening: IID permite uma superior ordenação dos nodos filhos de cada nodo pai pois permite identificar o nodo mais promissor através de uma pré pesquisa com deph=deph-4. este pre-scan é muito rápido poupando muito tempo na pesquisa e permite a SUPRA ir mais fundo na pesquisa. IID fez aumentar as capacidades do  TURBO  de SUPRA. IID está presente desde a versão 13.0 e foi muito melhorada na versão 14.0. 100% seguro.

 

 

3- killer moves heuristic: em todos os niveis de deph sempre que há um corte do algoritmo alpha beta SUPRA memoriza o movimento correspondente a esse corte. E sempre que um nodo se expande (analise dos filhos do nodo) SUPRA começa por examinar sempre primeiro, se possivel, o movimento correspondente ao último killer move desse nivel de deph. 100% seguro.  

 

 

 4 - Iterative DeepeningSupra desde a versão 23.0 usa finalmente um método de pesquisa muito mais eficaz pois permite uma muita melhor gestão de tempo na medida em que faz pesquisas consecutivas desde deph=7. em cada pesquisa usa deph+2 relativamente á pesquisa anterior e só pára quando atinge deph=23 ou excede tempo em demasia. 100% seguro. 

 

 

 

* algoritmos totalmente criados por mim ou independentemente criados por mim  (se já existiam anteriormente mas eu os desconhecia)

 

 

Todo o codigo do programa SUPRA foi e é idealisado e escrito por mim.

 

    

            Objectivo central do  programa SUPRA:

 



Devenvolver um programa alternativo e  100% original (partindo de uma base zero ) capaz de competir com  as usuais chess engines mesmo que o tempo para o atingir tenda para infinito...

 

 

 

                                                               Cronologia:

 



1-   Início de Janeiro de  2010: nascimento da ideia de criar uma  chess engine.

2- Durante  a primeira semana de  Janeiro de 2010: Consulta de sites de programação e motores de xadrez amadores. Contacto superficial com algumas linguagens de programação (Pascal, Java e C ++).

3- Segunda metade de Janeiro de  2010: Estudo profundo de C++

4- Início de fevereiro: Nascimento do primeiro teste (main 1)


5- De fevereiro a agosto de 2010: Criação do algoritmo do programa. aumento maciço no tamanho do código. Muitos erros de sintaxe para alterar e alguns dos erros lógicos mais óbvios resolvidos. Muitas noites sem dormir ...


6- De Setembro a Dezembro de 2010: Consolidação do algoritmo. lenta recuperação de erros lógicos no programa. Um inferno de quebra-cabeças.

7- 03 de janeiro de 2011: Nascimento da primeira versão do motor de xadrez SUPRA.

 

 

 

                                                     Referencias:



 Devo mencionar a importância das segintes fontes:

Silvestro Fantacci website pela sua ajuda na comprenção do UCI protocolo http://fantacci.wikidot.com/chess-engine

Manual "Notas de programação   em C / C++ "por  Paulo Jorge Santos  eBaltarejo, ajudaram-me a começar a entender a linguagem c++ http://www.dei.isep.ipp.pt/~jsantos/docs/Sebenta-cpp-04-2006.pdf
(você tem que colar esse endereço na barra de endereços)

 O livro "Programming in C ++" by Joyanes Luis aguilar na resolução de alguns problemas no programa.

 

 

 

                                                                     Sobre mim:



O meu nome é Pedro e sou viciado em xadrez.

Por vezes jogo com amigos ou familiares.
Jogo com muita assuiduidade no playchess (www.playchess.com) com o nickname SUPRASISTEMA.

Trabalho no Centro de estudos SUPRASISTEMA como professor de matemática e Física.

Sou membro oficial de TORR high IQ society (www.torr.org) e de international high IQ society (www.highiqsociety.org)

 

                                    

 

                                                        Agradecimentos:



Agradeço e apreçio profundamente os comentários de suporte e encorajamento feitos por várias pessoas, das quais eu destaco (no Immortal chess forum: herbanmusic, IndianaJones, Dydolec, shahinjy, juandelacruza chessgod101, Fidelio, Silversurfer, CS29797, Behovodec, Кевин, batatas, Adam5 entre muitos outros!) ; (Toposcar no playchess.com) e (Paul e Saemon_Havarian na Torre).

Agradeço e apreçio profundamente todos os tourneios conduzidos por várias pessoas, das quais eu destaco shahinjy que fez uma verdadeira odisseia de torneios através dos quais identificou algumas fragilidades e erros do programa.

 
 Agradeço muito também a Oliver Deville por ter feito o primeiro torneio em grande escala participado por SUPRA.

 

     

                    Dedicatória:       

 

 

 

Dedico o programa Supra ao meu Pai que desde muito cedo me ensinou a magia do xadrez e com o qual passei muitas das melhores horas da minha vida a fazer o que gosto mais: jogar xadrez!

Dedico também a todos os jogadores amadores que nunca desitem de se superar!

 

 

 

 

 

         

Download pacote com relevantes versões anteriores

Collection Supra Collection Supra [8.839 Kb]

Secção de torneios

Tourneios:

 

Supra 22.0 log 64bit vs Predateur 0.1.5:

Supra 22.0 log 64bit wins: +11/=3/-6  62.5% 12.5/20  +89 ELO

Time:10 min

Open book up to 10 moves

SUPRA é uma  chess engine Portuguesa.

 

____________________________

 

Download Supra 25.0 para Windows

____________________________     

Supra 25.0 Supra 25.0 [8.765 Kb]

Page in English

Page in English - Supra

Suprasistema

Suprasistema - Supra

Suprasistema é um Centro de estudos especializado no apoio didático em Matemática e Física