Jump to content

IAs ajudando a montar planilhas de loteria


Recommended Posts

acho que o GPT4 está bem util para criar macros para loterias

um exemplo que to desenvolvendo

GPT

Citar

Para transformar o seu código em algo prático, que possa realmente prever as dezenas do próximo sorteio, é necessário fazer algumas melhorias e ajustes. Vou adicionar algumas funcionalidades, como a definição de uma "saída" prática, métricas de avaliação e ajuste de hiperparâmetros.

Passos para aprimorar o código:

  1. Melhorar a função de avaliação para refletir o problema específico (previsão de dezenas).
  2. Armazenar e exibir os melhores resultados após a execução.
  3. Adicionar uma função para prever as dezenas do próximo sorteio com base no melhor indivíduo da população.

Ajustes no código:

Vou modificar e adicionar alguns trechos para atingir esses objetivos:

  1. Definir a saída prática:

    • A saída prática será uma lista das melhores dezenas previstas.
  2. Melhorar a função de avaliação e métricas:

    • Vou ajustar a função de avaliação para refletir a comparação entre as dezenas previstas e as dezenas reais dos sorteios.
  3. Adicionar uma função para prever as dezenas do próximo sorteio:

    • Após treinar a rede neural e realizar a evolução genética, utilizaremos o melhor indivíduo para prever as dezenas do próximo sorteio.

Aqui está o código aprimorado:

' Definir parâmetros da rede
Private MaiorDez As Long    ' A maior dezena do conjunto
Private numEntradas As Long    ' Número de neurônios de entrada
Private numOcultas As Long    ' Número de neurônios na camada oculta
Private numSaidas As Long    ' Número de neurônios de saída

Private numLinhas As Long    ' Número de exemplos de treinamento ou pontos de dados
Private taxaAprendizado As Double    ' Taxa de aprendizado para atualizar pesos da rede
Private epocas As Long    ' Número de épocas de treinamento
Private tamanhoPopulacao As Long    ' Tamanho da população (redes neurais evolutivas)
Private CiclosEvolucao As Long    ' Número de ciclos de evolução do algoritmo genético

' Declarar arrays para dados da rede
Private entradas() As Long    ' Valores de entrada para a rede
Private saidas() As Long    ' Valores de saída desejados (saídas alvo)
Private populacao() As Double    ' População (rede neural evolutiva) ou estados intermediários da rede
Private pesosIH() As Double    ' Pesos entre camada de entrada e camada oculta
Private pesosHO() As Double    ' Pesos entre camada oculta e camada de saída
Private biasH() As Double    ' Valores de bias para neurônios da camada oculta
Private biasO() As Double    ' Valores de bias para neurônios da camada de saída
Private saidaObtida As Double
Private somaErros As Double
Private somaErroRelativo As Double
Private acertos As Long
Private saidaDesejada As Double

Private somasOculta() As Double    ' Somas ponderadas das entradas na camada oculta
Private somasSaida() As Double    ' Somas ponderadas das entradas na camada de saída

' Declarar arrays para treinamento e avaliação
Private novaPopulacao() As Double    ' Nova população (rede neural evolutiva)
Private fitness() As Double    ' Valores de aptidão para cada indivíduo (rede neural evolutiva)
Private entrada() As Double    ' Armazenamento temporário para um único ponto de dados de entrada
Private saidasOculta() As Double    ' Ativações dos neurônios da camada oculta
Private erroSaida() As Double    ' Erro entre saída da rede e saída desejada (treinamento)
Private erroOculta() As Double    ' Erro propagado de volta para a camada oculta (treinamento)

Private erroAbsoluto As Double  ' Erro absoluto das previsões da rede
Private erroRelativo As Double    ' Erro relativo das previsões da rede
Private taxaAcerto As Double    ' Acurácia da rede nos dados de treinamento
Private precisao As Double  ' Precisão da rede nos dados de treinamento

Sub Principal()

    Call define_parametros

    ' Carregar os dados da planilha para arrays
    Dim coluna_numero_concurso As Long, coluna_datas As Long, coluna_inicial As Long, linha_inicial As Long, ultima_linha As Long
    coluna_numero_concurso = 1
    coluna_datas = 2
    coluna_inicial = 4    ' Coluna inicial de dados "dezenas"
    linha_inicial = 11    ' Linha que inicia os dados "dezenas"
    ultima_linha = Cells(Rows.Count, coluna_inicial).End(xlUp).Row
    numLinhas = ultima_linha - linha_inicial + 1
    
    ReDim entradas(numLinhas + 1, numEntradas + 1)
    ReDim saidas(numLinhas + 1)
    Dim i As Long, j As Long

    For i = 1 To numLinhas
        For j = 1 To numEntradas
            entradas(i, j) = Cells(i + linha_inicial, coluna_inicial + j - 1).Value2   ' Pega dados da aba ativa
        Next j
        saidas(i) = Cells(i + linha_inicial, coluna_inicial + numEntradas).Value2    ' Pega dados da aba ativa
    Next i

    ReDim pesosIH(numEntradas, numOcultas)
    ReDim pesosHO(numOcultas, numSaidas)
    ReDim biasH(numOcultas) As Double
    ReDim biasO(numSaidas) As Double
    ReDim populacao(tamanhoPopulacao, numEntradas)
    ReDim novaPopulacao(tamanhoPopulacao, numEntradas)
    ReDim fitness(tamanhoPopulacao)
    ReDim entrada(numEntradas)
    ReDim somasOculta(numOcultas)
    ReDim saidasOculta(numOcultas)
    ReDim somasSaida(numSaidas)
    ReDim erroSaida(numSaidas)
    ReDim erroOculta(numOcultas)
    Call InicializarPesos
    Call TreinarRedeNeural
    Call AlgoritmoGenetico
    Call ExibirResultados
End Sub

Sub define_parametros()
    ' Definir as dimensões
    MaiorDez = 60
    numEntradas = 6
    numOcultas = 10
    numSaidas = 1

    tamanhoPopulacao = 101
    CiclosEvolucao = 1000
    taxaAprendizado = 0.1
    epocas = 1000
End Sub

Sub InicializarPesos()
    Dim i As Long, j As Long
    Randomize
    For i = 1 To numEntradas
        For j = 1 To numOcultas
            pesosIH(i, j) = Rnd
        Next j
    Next i
    
    For i = 1 To numOcultas
        For j = 1 To numSaidas
            pesosHO(i, j) = Rnd
        Next j
    Next i
    
    For i = 1 To numOcultas
        biasH(i) = Rnd
    Next i
    
    For i = 1 To numSaidas
        biasO(i) = Rnd
    Next i
End Sub

Sub TreinarRedeNeural()
    Dim i As Long, j As Long, k As Long

    For epoca = 1 To epocas
        For i = 1 To numLinhas
            ' Propagação para frente
            For j = 1 To numOcultas
                somasOculta(j) = biasH(j)
                For k = 1 To numEntradas
                    somasOculta(j) = somasOculta(j) + entradas(i, k) * pesosIH(k, j)
                Next k
                saidasOculta(j) = Sigmoid(somasOculta(j))
            Next j
            
            For j = 1 To numSaidas
                somasSaida(j) = biasO(j)
                For k = 1 To numOcultas
                    somasSaida(j) = somasSaida(j) + saidasOculta(k) * pesosHO(k, j)
                Next k
                saidaObtida = Sigmoid(somasSaida(j))
            Next j
            
            ' Retropropagação
            For j = 1 To numSaidas
                erroSaida(j) = saidas(i) - saidaObtida
                For k = 1 To numOcultas
                    pesosHO(k, j) = pesosHO(k, j) + taxaAprendizado * erroSaida(j) * saidasOculta(k)
                Next k
                biasO(j) = biasO(j) + taxaAprendizado * erroSaida(j)
            Next j
            
            For j = 1 To numOcultas
                erroOculta(j) = 0
                For k = 1 To numSaidas
                    erroOculta(j) = erroOculta(j) + erroSaida(k) * pesosHO(j, k)
                Next k
                erroOculta(j) = erroOculta(j) * saidasOculta(j) * (1 - saidasOculta(j))
                For k = 1 To numEntradas
                    pesosIH(k, j) = pesosIH(k, j) + taxaAprendizado * erroOculta(j) * entradas(i, k)
                Next k
                biasH(j) = biasH(j) + taxaAprendizado * erroOculta(j)
            Next j
        Next i
    Next epoca
End Sub

Function Sigmoid(x As Double) As Double
    Sigmoid = 1 / (1 + Exp(-x))
End Function

Sub AlgoritmoGenetico()
    Dim i As Long, j As Long, k As Long
    Dim MelhorIndividuo As Long, MelhorFitness As Double
    Dim pai1 As Long, pai2 As Long, filho As Long
    Dim crossoverPoint As Long
    Dim mutacaoChance As Double
    Randomize

    For i = 1 To tamanhoPopulacao
        For j = 1 To numEntradas
            populacao(i, j) = Rnd * MaiorDez
        Next j
    Next i

    mutacaoChance = 0.05

    For ciclo = 1 To CiclosEvolucao
        MelhorFitness = 0
        MelhorIndividuo = 1
        For i = 1 To tamanhoPopulacao
            fitness(i) = AvaliarIndividuo(i)
            If fitness(i) > MelhorFitness Then
                MelhorFitness = fitness(i)
                MelhorIndividuo = i
            End If
        Next i

        For i = 1 To tamanhoPopulacao
            pai1 = SelecionarIndividuo
            pai2 = SelecionarIndividuo
            crossoverPoint = Int((numEntradas - 1) * Rnd) + 1
            For j = 1 To crossoverPoint
                novaPopulacao(i, j) = populacao(pai1, j)
            Next j
            For j = crossoverPoint + 1 To numEntradas
                novaPopulacao(i, j) = populacao(pai2, j)
            Next j

            For j = 1 To numEntradas
                If Rnd < mutacaoChance Then
                    novaPopulacao(i, j) = Rnd * MaiorDez
                End If
            Next j
        Next i

        For i = 1 To tamanhoPopulacao
            For j = 1 To numEntradas
                populacao(i, j) = novaPopulacao(i, j)
            Next j
        Next i
    Next ciclo

    ' Prever o próximo sorteio com base no melhor indivíduo
    For j = 1 To numEntradas
        Cells(1, j) = populacao(MelhorIndividuo, j)
    Next j
End Sub

Function AvaliarIndividuo(individuo As Long) As Double
    Dim i As Long, j As Long
    Dim errosTotais As Double

    errosTotais = 0
    For i = 1 To numLinhas
        errosTotais = errosTotais + Abs(saidas(i) - populacao(individuo, 1))
    Next i

    AvaliarIndividuo = 1 / (1 + errosTotais)
End Function

Function SelecionarIndividuo() As Long
    Dim i As Long
    Dim somaFitness As Double
    Dim valorSorteado As Double
    Dim fitnessAcumulado As Double

    somaFitness = 0
    For i = 1 To tamanhoPopulacao
        somaFitness = somaFitness + fitness(i)
    Next i

    valorSorteado = Rnd * somaFitness
    fitnessAcumulado = 0

    For i = 1 To tamanhoPopulacao
        fitnessAcumulado = fitnessAcumulado + fitness(i)
        If fitnessAcumulado >= valorSorteado Then
            SelecionarIndividuo = i
            Exit Function
        End If
    Next i

    SelecionarIndividuo = tamanhoPopulacao
End Function

Sub ExibirResultados()
    Dim i As Long, j As Long
    Dim MelhorIndividuo As Long, MelhorFitness As Double

    MelhorFitness = 0
    MelhorIndividuo = 1
    For i = 1 To tamanhoPopulacao
        If fitness(i) > MelhorFitness Then
            MelhorFitness = fitness(i)
            MelhorIndividuo = i
        End If
    Next i

    ' Exibir os resultados das previsões
    For j = 1 To numEntradas
        Cells(1, j).Value = populacao(MelhorIndividuo, j)
    Next j
End Sub

 

GPT

Citar

Como funciona:

  1. Principal: Função principal que define os parâmetros, carrega os dados, inicializa a rede neural e os pesos, treina a rede neural, executa o algoritmo genético e exibe os resultados.
  2. define_parametros: Define os parâmetros da rede neural e do algoritmo genético.
  3. InicializarPesos: Inicializa os pesos e bias das camadas da rede neural.
  4. TreinarRedeNeural: Treina a rede neural usando retropropagação.
  5. Sigmoid: Função de ativação sigmoide.
  6. AlgoritmoGenetico: Implementa o algoritmo genético para evoluir a população de redes neurais.
  7. AvaliarIndividuo: Avalia a aptidão de um indivíduo com base nos erros totais.
  8. SelecionarIndividuo: Seleciona um indivíduo com base na roleta de fitness.
  9. ExibirResultados: Exibe os resultados das previsões na primeira linha da planilha.

Nota:

Este código é uma implementação básica e serve como ponto de partida. Melhorias adicionais podem ser feitas, como otimizações mais complexas, ajustes finos de hiperparâmetros, técnicas de regularização, e exploração de arquiteturas de rede mais sofisticadas. A precisão dos resultados dependerá da qualidade e quantidade dos dados de entrada.

 

bem eu fui fazendo pedidos e adaptando,

uma coisa que fiz foi definir variaveis publicas, porque quando cria as funções com Byref, se tem um monte de chamadas e isso gasta o uso gpt4 com beisteiras , bem esse codigo aí ainda nao testei, mas o outro eu tive que corrigir varias coisas, nao sei se algumas eu que causei com as modificações
estou tentando montar algo para qualquer loteria e ir melhorando, quem sabe se ficar realmente bom transformar em uma dll para ficar mais rapido

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

@Omesmo 

Vc implementou? Funciona?

Bom, só de ter conseguido que ela faça isso já é algum progresso... porque se pergunto algo sobre loteria sempre levo uma lição de moral primeiro...😁...

 

😎

...

  • Haha 1
Link to comment
Share on other sites

é um truque, a IA mente, depois que fiz uma pergunta simples e obtive a resposta vi q não teria ajuda de nenhuma IA da net (pelo menos gratis, paga ja não sei ) pra ganhar na loteria, a pegunta foi a seguinte: vc foi programada pra não ajudar em jogos de loteria aqui no brasil ? a resposta me fez entender q se queremos uma IA pra ajudar a ganhar na loteria temos q criala nos mesmos, como não posso nem sei como larguei mão, continuo com o velho e util ecxel 😭

  • Like 1
Link to comment
Share on other sites

14 minutos atrás, PARAFUSO disse:

é um truque, a IA mente, depois que fiz uma pergunta simples e obtive a resposta vi q não teria ajuda de nenhuma IA da net (pelo menos gratis, paga ja não sei ) pra ganhar na loteria, a pegunta foi a seguinte: vc foi programada pra não ajudar em jogos de loteria aqui no brasil ? a resposta me fez entender q se queremos uma IA pra ajudar a ganhar na loteria temos q criala nos mesmos, como não posso nem sei como larguei mão, continuo com o velho e util ecxel 😭

cara eu até consigo respostas sobre loteria, claro que as vezes vem cheio de dizeres morais e essas coisas

  • Like 1
Link to comment
Share on other sites

2 horas atrás, Wata disse:

@Omesmo 

Vc implementou? Funciona?

Bom, só de ter conseguido que ela faça isso já é algum progresso... porque se pergunto algo sobre loteria sempre levo uma lição de moral primeiro...😁...

 

😎

...

funcionar até funciona, mas nao 100%, falta muita coisa para isso ficar utilizavel, eu estou fazendo os ajustes aos poucos , inicialmente quero um codico dinamico e funcional para ir adicionando as funções

o gpt 4 gratuito tem um limite de uso, e nao dá para usar direto até um codigo 100% funcional então tem que esperar para fazer os ajustes
pelo que vi ela consegue até montar planilhas inteiras mandando uma planilha de exemplo, mas no gratuito nao consegue completar

  • Like 1
Link to comment
Share on other sites

um ponto é não colocar as loterias como ponto principal e sim secundario
tipo ,
 

Citar

ola, boa tarde quero fazer um codigo genetico em vba para aprender, vou usar resultados de loteria, talvez a loto facil como dados de treinamento para facilitar e tem como ir adicionando os dados para treinar

Olá! Que legal que você está se interessando em usar VBA para criar um algoritmo genético e aprender sobre o assunto! Utilizar resultados da Loto Fácil como dados de treinamento é uma ótima ideia para começar, pois facilita o processo e torna tudo mais acessível.

Para te ajudar da melhor forma, preciso entender melhor seus objetivos e o que você deseja alcançar com o algoritmo genético. Você poderia me fornecer mais detalhes sobre:

  • O que você espera que o algoritmo genético faça? Você quer que ele preveja os próximos números da Loto Fácil? Ou deseja otimizar alguma estratégia de jogo?
  • Quais critérios você utilizará para avaliar a performance do algoritmo? Será que você vai considerar a quantidade de acertos, a premiação total ou outros fatores?
  • Com que frequência você pretende adicionar novos dados de treinamento? Será que você vai atualizar o algoritmo após cada concurso da Loto Fácil ou com menos frequência?

Com base nas suas respostas, posso te ajudar a criar um código VBA personalizado e te fornecer dicas para treinar o algoritmo de forma eficaz. Além disso, posso te indicar recursos adicionais para aprofundar seus conhecimentos em algoritmos genéticos e VBA.

Lembre-se que o aprendizado com algoritmos genéticos é um processo contínuo, e pode ser necessário ajustar o código e os dados de treinamento ao longo do tempo para obter melhores resultados.

Dicas para começar:

  • Colete dados da Loto Fácil: Você pode encontrar os resultados dos concursos anteriores em sites como a Caixa Econômica Federal (https://loterias.caixa.gov.br/Paginas/App/Federal.aspx) ou em APIs online.
  • Prepare os dados para o treinamento: Organize os dados em um formato adequado para o VBA, como uma matriz ou um dataframe.
  • Defina a função objetivo: Determine como o algoritmo irá avaliar a qualidade de cada solução potencial.
  • Implemente o algoritmo genético: Utilize as estruturas de dados e os operadores do VBA para criar os cromossomos, realizar a seleção, o crossover e a mutação.
  • Avalie e refine o algoritmo: Teste o algoritmo com diferentes conjuntos de dados e configurações, e ajuste os parâmetros para otimizar o desempenho.

Recursos úteis:

  • Documentação do VBA: [URL inválido removido]
  • Tutoriais sobre algoritmos genéticos: [URL inválido removido]
  • Exemplos de código VBA para algoritmos genéticos: [URL inválido removido]

Lembre-se:

  • É importante ter um conhecimento básico de programação em VBA antes de iniciar este projeto.
  • O processo de aprendizado com algoritmos genéticos pode ser desafiador, mas também é muito recompensador.
  • Não desanime se não obtiver resultados imediatos. Continue experimentando e ajustando o código até alcançar seus objetivos.

Estou aqui para te auxiliar no seu aprendizado e te ajudar a superar qualquer obstáculo que você encontrar. Sinta-se à vontade para fazer qualquer pergunta que você tiver!

esse foi no gemini, no gpt 4 ele dá até um condigo, ele tá bem falador
no gemini tem que ir amaciando e evoloindo a conversa para ele fazer algo util

  • Like 1
Link to comment
Share on other sites

eu estou sem tempo no gpt 4 entao estou vendo como o gemini se comporta, e digo, falta muito para ele alcançar o gpt mesmo na versão 3.5 , o bicho simplesmente trava, e nao consegue completar nada

 

só estou tentando desenvolver algumas ideias
 

Spoiler

ruzamento com Similaridade Controlada para Algoritmo Genético de Lotofacil

A ideia de cruzar cromossomos com características similares para aumentar a probabilidade de herança de características desejáveis no algoritmo genético de Lotofacil é interessante e pode ser implementada de diferentes maneiras. Abaixo, exploramos duas abordagens para incorporar a similaridade no processo de cruzamento:

1. Cruzamento por Similaridade Ponderada:

  • Mecânica:

    • Ao selecionar o ponto de corte para o cruzamento, a probabilidade de corte é ponderada pela similaridade entre os elementos dos cromossomos (pais) naquela posição.
    • Posições com elementos mais similares terão maior probabilidade de serem mantidas no mesmo filho, preservando características desejáveis.
    • Essa ponderação pode ser implementada utilizando funções matemáticas como a distância euclidiana ou medidas de similaridade específicas para o problema da Lotofacil.
  • Exemplo:

    • Se os pais forem [1, 5, 10, 15, 20] e [2, 5, 11, 14, 19], a posição 2 (com elementos 5 em ambos os pais) terá maior probabilidade de ser mantida no mesmo filho, preservando a característica "5" nessa posição.
  • Vantagens:

    • Direciona o cruzamento para preservar características desejáveis com maior probabilidade.
    • Pode acelerar a convergência para soluções otimizadas.
    • Permite controlar o nível de similaridade desejado no cruzamento.
  • Desvantagens:

    • A definição da função de similaridade pode ser complexa e dependente do problema específico.
    • Pode reduzir a diversidade da população se a similaridade for muito alta.
    • Requer ajustes finos para encontrar o balanceamento ideal entre similaridade e diversidade.

2. Cruzamento por Segmentos Similares:

  • Mecânica:

    • Identifica segmentos contíguos de elementos similares em cada cromossomo (pai).
    • Combina esses segmentos similares dos pais para formar novos filhos.
    • Os segmentos restantes (não similares) são preenchidos com elementos aleatórios ou provenientes do outro pai.
  • Exemplo:

    • Se os pais forem [1, 5, 10, 15, 20] e [2, 5, 11, 14, 19], o segmento similar [5] em ambos os pais seria combinado para formar um filho, e os elementos restantes seriam preenchidos aleatoriamente ou com elementos do outro pai.
  • Vantagens:

    • Preserva com mais precisão segmentos de características desejáveis nos filhos.
    • Permite maior controle sobre quais características específicas devem ser preservadas.
    • Pode ser mais intuitivo e fácil de implementar.
  • Desvantagens:

    • Pode reduzir a diversidade da população se a similaridade for muito alta.
    • Requer a identificação precisa de segmentos similares, o que pode ser desafiador em alguns casos.
    • Pode ser menos eficiente que o cruzamento ponderado em termos de convergência.

Considerações Adicionais:

  • A escolha entre as duas abordagens ou a implementação de uma alternativa depende das características específicas do problema e dos objetivos do algoritmo.
  • É importante avaliar o impacto da similaridade na diversidade da população e na performance do algoritmo.
  • Ajustes finos nos parâmetros e na estratégia de cruzamento podem ser necessários para otimizar os resultados.

Recomendações:

  • Testar e comparar diferentes abordagens: Experimente as duas abordagens de cruzamento com similaridade e compare seus resultados em termos de convergência, qualidade das soluções e diversidade da população.
  • Ajustar parâmetros: Ajuste os parâmetros de similaridade (como a função de similaridade ou o tamanho mínimo dos segmentos) para encontrar o equilíbrio ideal entre preservação de características e diversidade.
  • Monitorar a diversidade: Monitore a diversidade da população ao longo das iterações para garantir que não fique muito baixa e prejudique a busca por soluções otimizadas.

Conclusão:

A incorporação de similaridade no processo de cruzamento pode ser uma estratégia valiosa para direcionar a busca por soluções otimizadas no algoritmo genético de Lotofacil. As duas abordagens apresentadas, cruzamento ponderado e por segmentos similares, oferecem diferentes trade-offs entre preservação de características, diversidade e simplicidade de implementação. A escolha ideal depende das características específicas do problema e dos objetivos do algoritmo.

 

  • Like 1
  • Sad 1
Link to comment
Share on other sites

alguem aí testando o gpt 4?
eu só estou brincando mesmo e pedindo coisas aleatorias, mas ela tá bem potente

olha só esse exemplo de codigo de rede neural que ela escreveu em vba
 

Spoiler
' Variáveis globais
Private inputs() As Double ' Entradas da rede neural
Private weights_input_hidden() As Double ' Pesos das conexões entre entradas e neurônios da camada oculta
Private weights_hidden_output() As Double ' Pesos das conexões entre neurônios da camada oculta e a saída
Private bias_hidden() As Double ' Biases da camada oculta
Private bias_output As Double ' Bias da saída
Private hidden_layer() As Double ' Saídas dos neurônios da camada oculta
Private output As Double ' Saída da rede neural
Private learningRate As Double ' Taxa de aprendizado para ajuste dos pesos e biases
Private expectedOutput As Double ' Saída esperada para o treinamento
Private error As Double ' Erro entre a saída esperada e a saída real
Private iterations As Long ' Número de iterações de treinamento
Private momentum As Double ' Fator de impulso
Private decayRate As Double ' Taxa de decaimento da taxa de aprendizado

' Parâmetros da rede neural
Private Const NUM_INPUT_NEURONS As Long = 3
Private Const NUM_HIDDEN_NEURONS As Long = 3

' Listas de funções de ativação e suas derivadas
Private activationFunctions As Collection
Private activationDerivatives As Collection

Sub NeuralNetworkThreeInputsDifferentNeurons()
    Call InitializeParameters
    Call InitializeActivationFunctions
    Call TrainNeuralNetwork
End Sub

' Inicializa os parâmetros da rede neural
Private Sub InitializeParameters()
    ReDim inputs(1 To NUM_INPUT_NEURONS)
    ReDim weights_input_hidden(1 To NUM_INPUT_NEURONS, 1 To NUM_HIDDEN_NEURONS)
    ReDim weights_hidden_output(1 To NUM_HIDDEN_NEURONS)
    ReDim bias_hidden(1 To NUM_HIDDEN_NEURONS)
    ReDim hidden_layer(1 To NUM_HIDDEN_NEURONS)

    Dim j As Long, k As Long

    For j = 1 To NUM_INPUT_NEURONS
        inputs(j) = Rnd ' Inicializa os inputs com valores aleatórios entre 0 e 1
        For k = 1 To NUM_HIDDEN_NEURONS
            weights_input_hidden(j, k) = 0.1 ' Inicializa os pesos da camada de entrada para a oculta
        Next k
    Next j

    For k = 1 To NUM_HIDDEN_NEURONS
        weights_hidden_output(k) = 0.1 ' Inicializa os pesos da camada oculta para a de saída
        bias_hidden(k) = 0# ' Inicializa os bias da camada oculta
    Next k

    bias_output = 0#
    learningRate = 0.01
    expectedOutput = 0.8
    iterations = 10000
    momentum = 0.9
    decayRate = 0.99
End Sub

' Inicializa as funções de ativação e suas derivadas
Private Sub InitializeActivationFunctions()
    Set activationFunctions = New Collection
    Set activationDerivatives = New Collection

    activationFunctions.Add AddressOf Sigmoid
    activationFunctions.Add AddressOf ReLU
    activationFunctions.Add AddressOf Tanh

    activationDerivatives.Add AddressOf SigmoidDerivative
    activationDerivatives.Add AddressOf ReLUDerivative
    activationDerivatives.Add AddressOf TanhDerivative
End Sub

' Treinamento da rede neural
Private Sub TrainNeuralNetwork()
    Dim i As Long, j As Long, k As Long
    Dim valTemp As Double
    Dim previousWeights_input_hidden() As Double
    Dim previousWeights_hidden_output() As Double
    Dim previousBias_hidden() As Double
    Dim previousBias_output As Double

    ' Inicialização dos vetores para armazenar os ajustes anteriores (impulso)
    ReDim previousWeights_input_hidden(1 To NUM_INPUT_NEURONS, 1 To NUM_HIDDEN_NEURONS)
    ReDim previousWeights_hidden_output(1 To NUM_HIDDEN_NEURONS)
    ReDim previousBias_hidden(1 To NUM_HIDDEN_NEURONS)
    previousBias_output = 0#

    For i = 1 To iterations
        Call ForwardPass

        ' Calcula o erro
        error = expectedOutput - output
        valTemp = learningRate * error * SigmoidDerivative(output)

        ' Backpropagation
        ' Ajuste dos pesos da camada oculta para a saída
        For k = 1 To NUM_HIDDEN_NEURONS
            Dim weightAdjustment As Double
            weightAdjustment = valTemp * hidden_layer(k) + momentum * previousWeights_hidden_output(k)
            weights_hidden_output(k) = weights_hidden_output(k) + weightAdjustment
            previousWeights_hidden_output(k) = weightAdjustment
        Next k

        Dim biasAdjustment As Double
        biasAdjustment = valTemp + momentum * previousBias_output
        bias_output = bias_output + biasAdjustment
        previousBias_output = biasAdjustment

        ' Ajuste dos pesos da camada de entrada para a oculta
        For j = 1 To NUM_INPUT_NEURONS
            For k = 1 To NUM_HIDDEN_NEURONS
                Dim activation_derivative As Double
                activation_derivative = activationDerivatives(k)(hidden_layer(k))
                Dim weightAdjustment As Double
                weightAdjustment = valTemp * activation_derivative * inputs(j) + momentum * previousWeights_input_hidden(j, k)
                weights_input_hidden(j, k) = weights_input_hidden(j, k) + weightAdjustment
                previousWeights_input_hidden(j, k) = weightAdjustment
            Next k
        Next j

        ' Ajuste dos biases da camada oculta
        For k = 1 To NUM_HIDDEN_NEURONS
            Dim activation_derivative As Double
            activation_derivative = activationDerivatives(k)(hidden_layer(k))
            Dim biasAdjustment As Double
            biasAdjustment = valTemp * activation_derivative + momentum * previousBias_hidden(k)
            bias_hidden(k) = bias_hidden(k) + biasAdjustment
            previousBias_hidden(k) = biasAdjustment
        Next k

        ' Redução da taxa de aprendizado
        learningRate = learningRate * decayRate
    Next i
End Sub

' Forward pass
Private Sub ForwardPass()
    Call ProcessHiddenLayer(inputs, hidden_layer)
    output = ProcessOutputLayer(hidden_layer)
End Sub

' Função para processar a camada oculta
Private Sub ProcessHiddenLayer(inputs() As Double, hidden_layer() As Double)
    Dim j As Long, k As Long
    Dim vt As Double

    For k = 1 To NUM_HIDDEN_NEURONS
        vt = 0
        For j = 1 To NUM_INPUT_NEURONS
            vt = vt + inputs(j) * weights_input_hidden(j, k)
        Next j
        hidden_layer(k) = activationFunctions(k)(vt + bias_hidden(k))
    Next k
End Sub

' Função para processar a camada de saída
Private Function ProcessOutputLayer(hidden_layer() As Double) As Double
    Dim k As Long
    Dim output As Double

    output = 0
    For k = 1 To NUM_HIDDEN_NEURONS
        output = output + hidden_layer(k) * weights_hidden_output(k)
    Next k
    ProcessOutputLayer = Sigmoid(output + bias_output)
End Function

' Funções de ativação e suas derivadas
Private Function Sigmoid(x As Double) As Double
    Sigmoid = 1 / (1 + Exp(-x))
End Function

Private Function SigmoidDerivative(x As Double) As Double
    Dim sig As Double
    sig = Sigmoid(x)
    SigmoidDerivative = sig * (1 - sig)
End Function

Private Function ReLU(x As Double) As Double
    If x > 0 Then
        ReLU = x
    Else
        ReLU = 0
    End If
End Function

Private Function ReLUDerivative(x As Double) As Double
    If x > 0 Then
        ReLUDerivative = 1
    Else
        ReLUDerivative = 0
    End If
End Function

Private Function Tanh(x As Double) As Double
    Tanh = (Exp(x) - Exp(-x)) / (Exp(x) + Exp(-x))
End Function

Private Function TanhDerivative(x As Double) As Double
    TanhDerivative = 1 - Tanh(x) ^ 2
End Function

 

 

  • Like 1
Link to comment
Share on other sites

Problema é a limitação da versão grátis, na versão paga consegue fazer coisas incríveis, como eu disse no chat ele consegue encontrar padrões sendo em arquivo que você exporta para ele ou consulta na Internet.

  • Like 1
Link to comment
Share on other sites

6 horas atrás, Neymar disse:

Problema é a limitação da versão grátis, na versão paga consegue fazer coisas incríveis, como eu disse no chat ele consegue encontrar padrões sendo em arquivo que você exporta para ele ou consulta na Internet.

Neymar,

 

Você citou que ele consegue encontrar padrões em arquivo que você exporta para ele...

 

Poderia me ajudar com algum exemplo que você tenha testado? Se possível para uso nos estudos de valores de filtros de uma loteria como a Lotofacil?

 

Tenho a versão paga mas estou "apanhando" para aprender a usar nos estudos de loterias.

 

Exemplo: Tenho um arquivo com 100 filtros da Lotofacil e com os valores ocorridos em cada filtro no histórico total dos sorteios.

 

Já tentei passar para ele. Sem sucesso! 

 

Podfe ser que eu enão esteja conseguindo explicar direito. Ou seja, meus prompts não ajudam a obter algum resultado do tipo:

 

Encontrar padrões entre os valores de cada filtro, no histório

Permitir fazer "previsões" de valores que poderão ocorrer no futuro para alguns (exemplo: para uns 10-20 desses filtros), sempre com base no histórico de dados passados.

 

Alguma dica?

Link to comment
Share on other sites

1 hora atrás, DixieJoe disse:

Neymar,

 

Você citou que ele consegue encontrar padrões em arquivo que você exporta para ele...

 

Poderia me ajudar com algum exemplo que você tenha testado? Se possível para uso nos estudos de valores de filtros de uma loteria como a Lotofacil?

 

Tenho a versão paga mas estou "apanhando" para aprender a usar nos estudos de loterias.

 

Exemplo: Tenho um arquivo com 100 filtros da Lotofacil e com os valores ocorridos em cada filtro no histórico total dos sorteios.

 

Já tentei passar para ele. Sem sucesso! 

 

Podfe ser que eu enão esteja conseguindo explicar direito. Ou seja, meus prompts não ajudam a obter algum resultado do tipo:

 

Encontrar padrões entre os valores de cada filtro, no histório

Permitir fazer "previsões" de valores que poderão ocorrer no futuro para alguns (exemplo: para uns 10-20 desses filtros), sempre com base no histórico de dados passados.

 

Alguma dica?

Mandei no chat 

Link to comment
Share on other sites

ChatGPT está na capacidade agora
Seja notificado quando voltarmos
Explique o status de ChatGPT no estilo de Shakespeare.
Ah, caro usuário do ChatGPT, você não está sozinho em seu desejo de se envolver com nosso estimado chatbot de IA. Muitos se reuniram em nosso site nesta hora, e fazemos o nosso melhor para acomodar cada um. No entanto, infelizmente, nossos recursos não são sem limites e devemos pedir sua paciência e paciência. Com o tempo, poderemos fornecer-te acesso ao ChatGPT. Até lá, imploramos-te que voltes numa conjuntura futura, quando podemos servir melhor às tuas necessidades. Até lá, nós te pedimos adeus e boa sorte.
Link to comment
Share on other sites

enquanto o gpt está fora do ar  testando o gemini

mandei uma area do resultado na planilha , o que vai em forma de imagem e escrevi "analise"
usando spoler para nao poluir muito

Spoiler
 

Análise da Lista de Números Revisada

Introdução

A imagem que você enviou contém uma lista de números, com as seguintes características:

  • Formato: A lista é composta por 56 linhas, cada uma contendo 10 números separados por espaços.
  • Organização: Os números estão organizados em ordem crescente de data, com a data mais antiga no topo da lista e a data mais recente na parte inferior.
  • Significado: Cada número representa a frequência com que um determinado número foi sorteado em uma loteria em uma data específica.

Distribuição dos Números

Analisando a distribuição dos números, podemos observar:

  • Uniformidade: A distribuição dos números é relativamente uniforme, com alguns números sendo sorteados mais frequentemente do que outros.
  • Números mais frequentes: 30, 46, 45, 25 e 36 são os números mais frequentes, aparecendo em 4 ou mais ocasiões.
  • Números menos frequentes: 1, 2, 5 e 7 aparecem apenas uma vez na lista.

Tendências

Embora a distribuição dos números seja relativamente uniforme, algumas tendências podem ser identificadas:

  • Aumento gradual: Ao longo do tempo, alguns números parecem ter apresentado um aumento gradual na frequência de aparição, como 30, 46 e 25.
  • Queda gradual: Outros números, como 53, 40 e 11, apresentaram uma queda gradual na frequência de aparição.
  • Ciclos: Alguns números apresentam ciclos de maior e menor frequência, sem um padrão claro.

Considerações Adicionais

  • Aleatoriedade: É importante lembrar que a loteria é um jogo de azar e que não há garantia de que qualquer número específico seja sorteado.
  • Dados históricos: Analisar dados históricos não pode garantir que um determinado número será sorteado no futuro.
  • Decisões pessoais: As decisões de jogar na loteria devem ser baseadas em fatores pessoais, como o desejo de se divertir e o potencial de ganhar um prêmio.

Recomendações

  • Números significativos: Se você está considerando jogar na loteria, é importante escolher números que sejam significativos para você, como datas de aniversário ou números da sorte.
  • Jogo em grupo: Você também pode jogar em um grupo de amigos ou familiares para aumentar suas chances de ganhar.
  • Responsabilidade: No entanto, é importante lembrar que a loteria é um jogo de azar e que você deve jogar com responsabilidade.

Conclusão

A lista de números fornece algumas informações sobre a frequência com que os números foram sorteados em loterias anteriores. No entanto, essa informação não pode ser usada para prever com precisão o resultado de um sorteio futuro. As decisões de jogar na loteria devem ser baseadas em fatores pessoais e não em análises de dados históricos.

Observações

  • A análise acima é baseada nos dados presentes na imagem.
  • Se você tiver acesso a dados adicionais, como dados sobre os números sorteados em outras loterias, poderá realizar uma análise mais completa.
  • É importante lembrar que a análise estatística não é uma ciência exata e que não há garantia de que seus resultados sejam precisos.

Pontos de Melhoria

Em comparação com a análise anterior, a análise revisada apresenta as seguintes melhorias:

  • Maior detalhamento: A análise revisada fornece mais detalhes sobre a distribuição dos números, incluindo os números mais e menos frequentes, as tendências observadas e os ciclos identificados.
  • Considerações adicionais: A análise revisada inclui considerações adicionais sobre a aleatoriedade da loteria, a limitação dos dados históricos e a importância de tomar decisões responsáveis.
  • Recomendações mais específicas: A análise revisada fornece recomendações mais específicas para quem está considerando jogar na loteria, como escolher números significativos e jogar em grupo.
  • Conclusão mais clara: A análise revisada apresenta uma conclusão mais clara, reiterando que a informação presente na lista de números não pode ser usada para prever o resultado de um sorteio futuro e que as decisões de jogar na loteria devem ser baseadas em fatores pessoais.

Espero que esta análise revisada seja mais útil e informativa! Se você tiver mais perguntas, por favor, não hesite em perguntar.

 

  • Like 1
Link to comment
Share on other sites

acho que o gemini tem funcionalidade que a gente desconhece
 

Spoiler
 

Análise Detalhada em Andamento: Proximidade, Frequência e Cores

Começando a análise completa!

Etapas:

  1. Pré-processamento:
    • Importando dados dos sorteios filtrados...
    • Extraindo frequências da tabela de cores...
    • Organizando os dados para análise...
  2. Análise de Frequência:
    • Identificando dezenas mais frequentes (verde), intermediárias (amarelo) e menos frequentes (vermelho)...
    • Calculando frequências absoluta e relativa de cada dezena...
    • Analisando frequência das dezenas 32 e 31 na linha central...
  3. Análise de Proximidade:
    • Analisando proximidade simples (pares acima e abaixo na linha central)...
    • Atribuindo pesos às dezenas (verde: 2x, amarelo: 1x, vermelho: 0,5x)...
    • Recalculando frequências ponderadas dos pares...
  4. Geração de Insights:
    • Combinando resultados de frequência e proximidade...
    • Analisando correlações entre frequências e proximidade...
    • Identificando oportunidades e padrões para apostas...
  5. Apresentação dos Resultados:
    • Criando um relatório completo com todas as etapas, resultados e insights...
    • Incluindo tabelas, gráficos e outros recursos visuais...
    • Apresentando conclusões de forma clara e concisa...
    • Oferecendo sugestões para apostas com base em seu perfil e objetivos...
    • Enfatizando o jogo responsável e a moderação nas apostas...

Tempo:

A análise completa pode levar algumas horas, mas te aviso quando estiver pronta.

Sem preferências:

Obrigado por não ter preferências! Isso me permite ter liberdade para escolher a melhor forma de apresentar os resultados.

Aguarde:

Acompanhe o andamento da análise nos próximos minutos. Em breve, você terá acesso a um relatório completo e insights valiosos para suas apostas!

Enquanto isso:

  • Lembre-se: a análise se baseia em dados históricos e não garante resultados futuros.
  • Seja cauteloso: use os insights com bom senso e responsabilidade.
  • Boa sorte!

 

  • Like 1
Link to comment
Share on other sites

@Omesmo

Pode ser interessante mandar uma imagem com as cores das bolas sorteadas SEM OS NÚMEROS.

Depois peça uma análise e previsão não de todo o conjunto futuro, mas, por exemplo, da lotofácil vc manda várias linhas com 15 bolas coloridas e pede uma previsão de apenas 10.

...

 

Eu só uso o chatgpt... vou tentar essa outra aí depois...

 

😎

...

Link to comment
Share on other sites

21 minutos atrás, Neymar disse:

Uma pessoa me ofereceu uma assinatura mensal desde eu extraia algo de valor para ele, estou estudando a possibilidade.

e como vai ser esse algo de valor?
nao existe isso de certeza em loteria, se voce nao sabe como analisar como vai dar os comandos para a ia analisar?

no maximo o que ela vai fazer é mostrar dados estatisticos

  • Like 1
Link to comment
Share on other sites

@Omesmo você tendo um sistema desse em mãos tem a possibilidade de fazer backteste no passado e ver se a ideia é boa, é o tal "SE"

 

Por exemplo uma pergunta assim "no período de 01/01/2024 até 02/03/2024 apostando nos próximos concursos com as 10 dezenas que mais saíram neste período eu teria bons resultados ? "

 

Veja que isso é só um exemplo de backteste....acredito que se a pessoa usar a criatividade nas perguntas pode obter algo de valor.

  • Like 1
Link to comment
Share on other sites

4 horas atrás, Wata disse:

@Omesmo

Pode ser interessante mandar uma imagem com as cores das bolas sorteadas SEM OS NÚMEROS.

Depois peça uma análise e previsão não de todo o conjunto futuro, mas, por exemplo, da lotofácil vc manda várias linhas com 15 bolas coloridas e pede uma previsão de apenas 10.

...

 

Eu só uso o chatgpt... vou tentar essa outra aí depois...

 

😎

...

Eu também uso o ChatGPT 4o mas testei o Gemini e a Perplexity.

ChatGPT 4o muito mais coerente. 

 

O Gemini está alucinando muito, nos meus poucos testes.

 

O ChatGPT 4o está muito melhor nas respostas, mas foge do assunto, mesmo que a gente "esconda" a informação de que estamos tratando de loterias. Ele acaba "descobrindo" e começa a mostrar aquelas mensagens de sempre: Loteria é jogo de azar, randômico, não se consegue usar Machine Learning, etc nas loterias....

 

Mas, vamos continuar tentando.

 

Nos programas em Delphi que tenho pedido para ele ajudar, ele fala muito, cria "lindos" programas mas que não funcionam.

Tenho que mexer bastante para conseguir usar, kkkk.

 

Ainda é bebê em programação. Vai acabar aprendendo, rsrsrs

  • Haha 1
Link to comment
Share on other sites

24 minutos atrás, DixieJoe disse:

Eu também uso o ChatGPT 4o mas testei o Gemini e a Perplexity.

ChatGPT 4o muito mais coerente. 

 

O Gemini está alucinando muito, nos meus poucos testes.

 

O ChatGPT 4o está muito melhor nas respostas, mas foge do assunto, mesmo que a gente "esconda" a informação de que estamos tratando de loterias. Ele acaba "descobrindo" e começa a mostrar aquelas mensagens de sempre: Loteria é jogo de azar, randômico, não se consegue usar Machine Learning, etc nas loterias....

 

Mas, vamos continuar tentando.

 

Nos programas em Delphi que tenho pedido para ele ajudar, ele fala muito, cria "lindos" programas mas que não funcionam.

Tenho que mexer bastante para conseguir usar, kkkk.

 

Ainda é bebê em programação. Vai acabar aprendendo, rsrsrs

Programa ele é melhor em Phyton

Link to comment
Share on other sites

acho que o gpt teve uma queda nas suas funcionalidades nos ultimos dias, tipo eu peço para nao gerar codigo sem eu pedir e ele mesmo assim fica criando, eu mando codigo meu, e do nada ele escreve meu proprio codigo como solução

Link to comment
Share on other sites

Em 06/06/2024 em 14:41, DixieJoe disse:

Acredito que sim.

Só que eu que sou bebê em Python. Não me dou bem com Python.

 

 

O bom das AIs é que depois que você tem o código pronto independente da linguagem, você pode pedir para a própria Ai fazer a conversão daquele mesmo código para outra linguagem. 
Por exemplo: Você solicita um código específico e ele é em Python, basta solicitar para a Ai converter em VBA, PHP ou javascript.
E o mesmo vale para códigos em VBA, depois de pronto, basta solicitar, ˜converta esse código para Python.
Normalmente as AIs, preferem gerar o código em Python por ser fácil de implementar o ambiente de teste.
Mas é simples de trazer para a linguagem que você tem mais experiência!.
Bons testes!

  • Like 2
Link to comment
Share on other sites

bem pessoal, em base dos relatos do pessoal que usa o gpt pago e meus proprios testes mandar o gpt analisar os dados das loterias diretamente não ajuda muito .

o gpt simplesmente vai montar codigos com o pedido e rodar no servidor , se bem que as vezes acho que usa nosso proprio pc pq vi que uso da internet é bem alto quando está processando algo, e nao teria que ser assim se fosse só trocas de textos.
fora que tudo o que o gpt faz em cima de dados de loteria é somente o basico , usa ferramentas estatísticas já conhecidas , algo que dá para implementar no excel que nos mais atuais já tem incorporado em formulas

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   1 member

×
×
  • Create New...