Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 05/16/2024 in all areas

  1. Olá pessoal! Sou novo aqui no fórum. Nos últimos 15 anos tenho trabalhado no meu método e agora creio que estou muito próximo de alcançar meus objetivos. Estou cada vez mais próximo. O método que estou desenvolvendo consiste em ganhar na loteria sem apostar. Ao longo dos anos descobri que ir à lotérica registrar as apostas é um “pé no saco”, dá muita preguiça. O site de apostas online da caixa é uma ADREM e também não ajuda. Então, o ideal é ganhar sem apostar. Muito mais prático, corcordam? Estou muito próximo, já consigo alcançar uns 80% a 90% de sucesso. Primeiramente estou desenvolvendo o método para Lotofácil, mas meu objetivo é a MegaSena. Quando o método já estiver bem estável e eu já tiver feito um pé de meia na Lotofácil, vou partir para a MegaSena. Estou no caminho certo. Estou cada dia mais próximo. Quem viver, verá...
    2 points
  2. @Jimmy acho que uma adição legal seria uma area só para uso de IAs nas loterias, agora com o gpt e o gemini facilitando muito o estudo e desenvolvimento , com o novo gpt 4 suportanto 25 mil palavras dá até para ter um projeto mais complexo tipo um exemplo que fiz de teste com o novo gpt no modo gratuito EU: "voce conseguiria juntar tudo numa coisa só mas trabalhando com matrizes de 15 colunas x 4 mil linhas com dezenas de 1 a 80?" GPT4: Claro, vamos criar um projeto VBA que integra uma rede neural, algoritmo genético e regressão linear em uma única planilha, trabalhando com matrizes de 15 colunas x 4000 linhas com dezenas de 1 a 80. Vou dar uma estrutura básica para cada componente e depois juntar tudo. Passos: Estrutura do Projeto: Criar uma planilha chamada "Dados" onde os dados serão armazenados. Criar uma planilha chamada "Resultados" onde os resultados serão exibidos. Rede Neural: Adaptação da rede neural para lidar com 15 entradas e 4000 exemplos de treinamento. Algoritmo Genético: Ajustar para 15 genes em cada indivíduo. Regressão Linear: Ajustar para prever valores baseados em uma coluna específica. Código Integrado: Sub ProjetoIntegrado() ' Inicializar dados e parâmetros Dim entradas(1 To 4000, 1 To 15) As Double Dim saidas(1 To 4000) As Double Dim pesosIH(1 To 15, 1 To 10) As Double ' Pesos entre camada de entrada e oculta Dim pesosHO(1 To 10, 1 To 1) As Double ' Pesos entre camada oculta e saída Dim biasH(1 To 10) As Double ' Biases da camada oculta Dim biasO(1 To 1) As Double ' Bias da camada de saída Dim taxaAprendizado As Double taxaAprendizado = 0.1 ' Taxa de aprendizado ' Inicializar pesos e biases com valores aleatórios Dim i As Integer, j As Integer For i = 1 To 15 For j = 1 To 10 pesosIH(i, j) = Rnd Next j Next i For i = 1 To 10 For j = 1 To 1 pesosHO(i, j) = Rnd Next j Next i For i = 1 To 10 biasH(i) = Rnd Next i For i = 1 To 1 biasO(i) = Rnd Next i ' Carregar dados da planilha "Dados" Dim wsDados As Worksheet Set wsDados = ThisWorkbook.Sheets("Dados") For i = 1 To 4000 For j = 1 To 15 entradas(i, j) = wsDados.Cells(i + 1, j).Value Next j saidas(i) = wsDados.Cells(i + 1, 16).Value Next i ' Treinamento da rede neural TreinarRedeNeural entradas, saidas, pesosIH, pesosHO, biasH, biasO, taxaAprendizado ' Algoritmo genético AlgoritmoGenetico ' Regressão linear RegressaoLinear End Sub Sub TreinarRedeNeural(ByRef entradas As Variant, ByRef saidas As Variant, _ ByRef pesosIH As Variant, ByRef pesosHO As Variant, _ ByRef biasH As Variant, ByRef biasO As Variant, _ ByVal taxaAprendizado As Double) Dim epocas As Integer epocas = 1000 ' Número de épocas de treinamento Dim entrada(1 To 15) As Double Dim saidaDesejada As Double Dim saidaObtida As Double Dim somasOculta(1 To 10) As Double Dim saidasOculta(1 To 10) As Double Dim somasSaida(1 To 1) As Double Dim erroSaida(1 To 1) As Double Dim erroOculta(1 To 10) As Double Dim i As Integer, j As Integer, k As Integer, epoca As Integer For epoca = 1 To epocas For i = 1 To 4000 ' Configurar entrada e saída desejada For j = 1 To 15 entrada(j) = entradas(i, j) Next j saidaDesejada = saidas(i) ' Propagação para frente For j = 1 To 10 somasOculta(j) = biasH(j) For k = 1 To 15 somasOculta(j) = somasOculta(j) + entrada(k) * pesosIH(k, j) Next k saidasOculta(j) = Sigmoid(somasOculta(j)) Next j For j = 1 To 1 somasSaida(j) = biasO(j) For k = 1 To 10 somasSaida(j) = somasSaida(j) + saidasOculta(k) * pesosHO(k, j) Next k saidaObtida = Sigmoid(somasSaida(j)) Next j ' Propagação para trás (retropropagação) For j = 1 To 1 erroSaida(j) = saidaDesejada - saidaObtida For k = 1 To 10 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 10 erroOculta(j) = 0 For k = 1 To 1 erroOculta(j) = erroOculta(j) + erroSaida(k) * pesosHO(j, k) Next k erroOculta(j) = erroOculta(j) * saidasOculta(j) * (1 - saidasOculta(j)) For k = 1 To 15 pesosIH(k, j) = pesosIH(k, j) + taxaAprendizado * erroOculta(j) * entrada(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 populacao(1 To 100, 1 To 15) As Integer Dim novaPopulacao(1 To 100, 1 To 15) As Integer Dim fitness(1 To 100) As Double Dim i As Integer, j As Integer, k As Integer ' Inicializar a população com números aleatórios For i = 1 To 100 For j = 1 To 15 populacao(i, j) = Int((80 - 1 + 1) * Rnd + 1) Next j Next i ' Avaliar a aptidão de cada indivíduo For i = 1 To 100 fitness(i) = AvaliarAptidao(populacao, i) Next i ' Evolução por várias gerações For k = 1 To 100 ' Seleção, crossover e mutação For i = 1 To 100 Dim pai1 As Integer, pai2 As Integer pai1 = SelecionarPai(fitness) pai2 = SelecionarPai(fitness) For j = 1 To 15 If Rnd < 0.5 Then novaPopulacao(i, j) = populacao(pai1, j) Else novaPopulacao(i, j) = populacao(pai2, j) End If ' Mutação If Rnd < 0.01 Then novaPopulacao(i, j) = Int((80 - 1 + 1) * Rnd + 1) End If Next j Next i ' Atualizar população e recalcular aptidão For i = 1 To 100 For j = 1 To 15 populacao(i, j) = novaPopulacao(i, j) Next j fitness(i) = AvaliarAptidao(populacao, i) Next i Next k ' Exibir os melhores resultados Dim melhorAptidao As Double Dim melhorIndividuo As Integer melhorAptidao = 0 For i = 1 To 100 If fitness(i) > melhorAptidao Then melhorAptidao = fitness(i) melhorIndividuo = i End If Next i MsgBox "Melhor combinação: " & Join(Application.Index(populacao, melhorIndividuo, 0), ", ") End Sub Function AvaliarAptidao(populacao As Variant, indice As Integer) As Double ' Função de aptidão simples que soma os números (ajuste conforme necessário) Dim soma As Double soma = 0 Dim i As Integer For i = 1 To 15 soma = soma + populacao(indice, i) Next i AvaliarAptidao = soma End Function Function SelecionarPai(fitness As Variant) As Integer ' Seleção por roleta viciada (proporcional à aptidão) Dim somaFitness As Double somaFitness = Application.Sum(fitness) Dim roleta As Double roleta = Rnd * somaFitness Dim i As Integer Dim acumulado As Double acumulado = 0 For i = 1 To UBound(fitness) acumulado = acumulado + fitness(i) If acumulado >= roleta Then SelecionarPai = i Exit Function End If Next i End Function Sub RegressaoLinear() Dim wsResultados As Worksheet Set wsResultados = ThisWorkbook.Sheets("Resultados") Dim ultimaLinha As Long ultimaLinha = wsResultados.Cells(wsResultados.Rows.Count, 1).End(xlUp).Row Dim x() As Double Dim y() As Double ReDim x(1 To ultimaLinha - 1) ReDim y(1 To ultimaLinha - 1) Dim i As Long For i = 2 To ultimaLinha x(i - 1) = wsResultados.Cells(i, 1).Value ' Ajuste conforme necessário y(i - 1) = wsResultados.Cells(i, 2).Value ' Ajuste conforme necessário Next i Dim sumX As Double, sumY As Double, sumXY As Double, sumX2 As Double sumX = 0: sumY = 0: sumXY = 0: sumX2 = 0 For i = 1 To UBound(x) sumX = sumX + x(i) sumY = sumY + y(i) sumXY = sumXY + x(i) * y(i) sumX2 = sumX2 + x(i) ^ 2 Next i Dim n As Long n = UBound(x) Dim a As Double, b As Double b = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX ^ 2) a = (sumY - b * sumX) / n ' Exibir os resultados MsgBox "Equação da Regressão: y = " & a & " + " & b & "x" ' Previsão para um novo valor de x Dim novoX As Double novoX = InputBox("Insira o valor de x para previsão:") Dim previsao As Double previsao = a + b * novoX MsgBox "Previsão para x = " & novoX & " é y = " & previsao End Sub Explicação: Função Principal (ProjetoIntegrado): Inicializa os dados e parâmetros. Carrega dados da planilha "Dados". Chama as sub-rotinas para treinar a rede neural, executar o algoritmo genético e a regressão linear. Sub-rotina de Treinamento da Rede Neural (TreinarRedeNeural): Treina uma rede neural simples com 15 entradas e 10 neurônios na camada oculta. Sub-rotina do Algoritmo Genético (AlgoritmoGenetico): Implementa um algoritmo genético com 15 genes em cada indivíduo. Sub-rotina de Regressão Linear (RegressaoLinear): Realiza a regressão linear nos dados da planilha "Resultados". Esta implementação assume que os dados estão adequadamente organizados nas planilhas "Dados" e "Resultados". Para usar o código, certifique-se de ajustar os dados conforme necessário e executá-lo em um ambiente VBA habilitado. ===================================================== acho que fica uma area legal para aproveitar o potencial das novas ferramentas
    1 point
×
×
  • Create New...