Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 1800

 
Aleksey Vyazmikin:

Por favor, ajude a resolver um problema de combinatória!

Existem N diferentes elementos não repetíveis, você precisa tirar deles X elemento(s) de cada vez, sendo o valor de entrada o número da combinação de todos os elementos possíveis.

Existe uma fórmula ou função para isto?

A função de entrada deve obter um array com elementos, número de elementos em combinação e número de combinações, e a saída deve ser um array com índices de elementos.

Por favor, ajude!

Talvez seja mais fácil procurar por X aleatórios do N?
Se você trabalha com número de combinações, então você tem que construir essa combinação internamente a partir do número.

E pode haver um grande número de números combinados. Por exemplo, para escolher 10 entre 100 serão milhões ou bilhões (algo até certo ponto). Como você vai decidir qual combinação você vai tomar? 1,2, 158451, ou 5454554 ?

Random unique é mais fácil de encontrar, basta selecionar aleatoriamente 1 de N., depois o segundo e assim por diante até X.
Ao selecionar se um item já está selecionado, você pula o duplicado e re-seleciona. Ou seja, haverá mais tentativas do que X. Por exemplo, se você pegar 90 de cada 100, haverá muitas tentativas duplicadas.

Para velocidade, você pode descartar o elemento selecionado da matriz N e escolher entre os restantes N-1. (Troque o elemento selecionado com o último e encurte o array em 1.) Desta forma, você encontrará X elementos aleatórios exatamente em X tentativas. Se N > 3000 elementos, é melhor usar um gerador aleatório mais complicado do que o gerador incorporado. Comparação de randoms aqui.

Как MathRand() генерирует значения?
Как MathRand() генерирует значения?
  • 2010.08.06
  • www.mql5.com
Общее обсуждение: Как MathRand() генерирует значения?
 
Aleksey Nikolayev:

Isso pode funcionar.

Ou você pode dar uma olhada no parágrafo "Combinações" no livro "Programming in Algorithms" do Okulov

Certamente existe uma fórmula para obter a combinação do índice? Podes escrevê-lo, por favor?

 
Valeriy Yastremskiy:

Parâmetros optimizáveis e áreas de crescimento em declínio de equilíbrio. A idéia não é otimizar, mas tirar características significativas para as zonas de crescimento da queda em equilíbrio, mas a ciência diz que é difícil ou impossível através de qualquer característica da PA na presença da SB. É difícil encontrar modelos matemáticos descrevendo as séries com precisão suficiente, e não é claro qual o tamanho do BP necessário.

As condições simétricas parecem-me mais correctas. A série também pode ser revertida. ))))

A ciência pode dizer muitas coisas, mas você tem que tentar e verificar o potencial, talvez seja impossível de aperfeiçoar, e uma versão não ideal será suficiente para melhorar o desempenho em geral.

 
elibrarius:

Não seria mais fácil procurar por X aleatórios do N?
Se você trabalha com o número da combinação, você tem que construir essa combinação internamente a partir do número.

E pode haver um grande número de números combinados. Por exemplo, para seleccionar 10 de cada 100. Haverá milhões ou bilhões (algo até certo ponto). Como você vai decidir que combinação tomar? 1,2, 158451, ou 5454554 ?

Random unique é mais fácil de encontrar, basta selecionar aleatoriamente 1 de N., depois o segundo e assim por diante até X.
Ao selecionar se um item já está selecionado, você pula o duplicado e re-seleciona. Ou seja, haverá mais tentativas do que X. Por exemplo, se você pegar 90 de cada 100, haverá muitas tentativas duplicadas.

Para velocidade, você pode descartar o item selecionado da matriz N e escolher entre os itens restantes do N-1. (Troque o elemento selecionado com o último e encurte o array em 1.) Desta forma, você encontrará X elementos aleatórios exatamente em X tentativas. Se N > 3000 elementos, é melhor usar um gerador aleatório mais complicado do que o gerador incorporado. Clique aqui para comparar os randoms.

O objectivo é precisamente o exagero. De 250.000 folhas, tenho 15.000 rachaduras únicas. Uma enumeração completa das folhas com 3 divisões levaria cerca de 250 dias, como eu estimo, para um valor-alvo. Eu acho que as divisões devem ser agrupadas, selecionando as divisões iniciais e procurando por divisões que se ativam em suas áreas, e depois tentando cada grupo separadamente. Esta abordagem irá reduzir significativamente o número de combinações.

 
Aleksey Vyazmikin:

Existe uma fórmula para obter a combinação do índice? Pode escrevê-lo, por favor?

Não é uma fórmula, é um algoritmo. Olha através do Okulov, não é muito, e não é complicado.

 
Aleksey Nikolayev:

Não é uma fórmula, é um algoritmo. Procura Okulov, não é muito, e não é complicado.

Fiz o download e pesquisei - obrigado!

Se você classificou como "fácil", você deve ter entendido, mas eu não - eu não entendo linguagem de programação, a descrição do texto não é clara, posso lhe fazer perguntas sobre o material?

 
Aleksey Vyazmikin:

Eu baixei e olhei para ele - obrigado!

Se você classificou como "descomplicado", você deve ter entendido, mas eu não - eu não entendo a linguagem de programação lá, a descrição do texto não é clara, posso lhe fazer perguntas sobre o material?

Se for suficiente, pode perguntar. A idéia lá é simples - construir um array (bidimensional) de todas as combinações e depois pegar uma linha (ou coluna) por número. Você tem duas opções - armazenar a matriz ou recalculá-la a cada vez (o que economiza memória e tempo).

Aqui está um exemplo em R:

#  i - номер, n - элементов исходно, k - сколько выбираем из n
i2c <- function (i,n,k) {m <- combn(n,k); m[,i]}

> i2c(3,10,5)
[1] 1 2 3 4 7
 
Aleksey Nikolayev:

Se é uma medida, então, fixa-a. A idéia lá é simples - construir um array (bidimensional) de todas as combinações e depois pegar uma linha (ou uma coluna) por número. Você tem duas opções - armazenar a matriz ou recalculá-la a cada vez (o que economiza memória e tempo).

Aqui está um exemplo em R:

O conjunto é construído através de loops, o que é uma perda de tempo, não muito adequado. A variante de encontrar valor por cálculo, sem tabela completa de antemão, é interessante.

 
Aleksey Vyazmikin:

A matriz é construída através de loops, e isto é uma perda de tempo, não muito adequada. A opção de encontrar um valor por cálculo, sem uma tabela completa de antemão, é interessante.

Não tenho a certeza se tal fórmula existe.

 
Aleksey Nikolayev:

Não tenho a certeza se existe tal fórmula.

Deve haver algum algoritmo, porque acontece que para 15000 elementos de 3 combinações, precisamos de manter o array na memória por 4 terabytes! É ainda mais, eu calculo, se levar 8 bits por 1 item.