Algoritmo para combinar faixas de um segmento - ajuda a criar - página 3

 
Dmitry Fedoseev:

1. onde está o coeficiente?

2. e p.1?

3. não, é mais simples do que isso. Ok, tentarei acelerar isso amanhã.

1. O coeficiente (índice composto) em cada segmento estará em suas características - experimentalmente, então eu determino a fórmula, mas convencionalmente podemos assumir que ele está.

Portanto, é por segmento separadamente, apenas um indicador (dos três sobre os quais é calculado) pode ser distribuído a todos, e os outros dois não podem.

3. Obrigado, vou esperar.

 

Aqui. Mas se há 1.000 seções, isso não ajuda. Existem muitas variantes, você pode até mesmo não ter memória suficiente.

Você pode ir por outro caminho - até o final de cada segmento, vincular uma matriz com índices que apontam para o próximo segmento. Assim você pode passar por todas as opções sem encher a memória. Mas ainda assim haverá muitas opções... A busca levará muito tempo. Você também pode pensar em como fornecer acesso às variantes através de seus números, se você precisar (por diversão).

Mas será que vale mesmo a pena, quando há tantas variantes? Que tal especificar a tarefa para torná-la mais realista?

Arquivos anexados:
3.mq5  14 kb
 
Dmitry Fedoseev:

Aqui. Mas se há 1.000 seções, isso não ajuda. Há muitas variantes, talvez você nem tenha memória suficiente.

Você pode ir por outro caminho - até o final de cada segmento, vincular uma matriz com índices que apontam para o próximo segmento. Assim você pode passar por todas as opções sem encher a memória. Mas ainda assim haverá muitas opções... A busca levará muito tempo. Você também pode pensar em como fornecer acesso às variantes através de seus números, se você precisar (por diversão).

Mas será que vale mesmo a pena, quando há tantas variantes? Que tal especificar a tarefa para torná-la mais realista?

Pode haver muitos alvos por aí. Os menores erros, dos segmentos mais longos, dos mais curtos, dos mais idênticos) mesmo nos gráficos de destino o tempo mais curto e o caminho mais curto logisticamente são resolvidos de forma diferente)
 
Valeriy Yastremskiy:
Pode haver muitos alvos lá. Os menores erros, dos segmentos mais longos, dos mais curtos, dos mais idênticos) mesmo nos gráficos de destino menos tempo e caminho mínimo logisticamente são resolvidos de forma diferente)

Do que se trata?

As matrizes, com indicações para um segmento vizinho, são uma quantidade insignificante de memória em comparação com uma matriz que contém todas as combinações prontas.

 
Dmitry Fedoseev:

Aqui. Mas se há 1.000 seções, isso não ajuda. Há muitas opções, você pode até mesmo não ter memória suficiente.

Obrigado!

Mas não tenho certeza de qual é o objetivo da atualização - foram feitas correções no código? Da última vez que recuperou 613 combinações, desta vez recuperou 1507.

A velocidade se tornou mais lenta, mas isso provavelmente é devido ao número de combinações.

Última variante:

2021.04.23 19:56:08.350 Scripts script Q_Podbor_02 (Si-6.21,M1) loaded successfully
2021.04.23 19:56:08.742 Scripts script Q_Podbor_02 (Si-6.21,M1) removed

Variante atual:

2021.04.23 19:51:56.608 Scripts script Q_Podbor_03 (Si-6.21,M1) loaded successfully
2021.04.23 19:51:58.387 Scripts script Q_Podbor_03 (Si-6.21,M1) removed
Dmitry Fedoseev:

Poderíamos ir por outro caminho - ao final de cada segmento poderíamos amarrar uma matriz com índices apontando para o segmento seguinte. Isso garante a passagem por todas as variantes sem encher a memória. Mas ainda haverá muitas variantes... a busca levará muito tempo. Você também pode pensar em como fornecer acesso às variantes através de seus números, se você precisar (por diversão).

Se eu acertei, a idéia é posteriormente calcular a combinação e avaliá-la, depois salvar o resultado e passar para a próxima combinação. Se o novo resultado (ou top 10) for melhor do que o último, nós o substituímos na variável array. E, sim, só queria perguntar, como obter a cadeia de índices do primeiro nível da matriz em que consiste a combinação?

Dmitry Fedoseev:

Mas será que faz sentido se existem tantas variantes? Que tal especificar o problema para torná-lo mais realista?

Por que a variante com número limitado de segmentos do ponto atual (etapa de combinação, quando n segmentos já foram pegos) não é adequada, porque reduzirá significativamente o número de combinações?

 
Aleksey Vyazmikin:

Obrigado!

Mas eu não entendi bem o objetivo da atualização - foram feitas correções no código? Da última vez foram 613 combinações, desta vez são 1507.

A velocidade se tornou mais lenta, mas isso provavelmente é devido ao número de combinações.

Última variante:

Variante atual:

Se entendi corretamente, é proposto calcular consecutivamente uma combinação e avaliá-la imediatamente, salvar o resultado da avaliação e passar para a próxima combinação. Se o novo resultado (ou top 10) for melhor do que o anterior, nós o substituímos em array/variable. E, sim, só queria perguntar, como obter uma cadeia de índices de primeiro nível da matriz da qual a combinação consiste?

Por que não é bom tentar um número limitado de seções a partir do ponto atual (etapa de combinação, quando você já pegou n seções), porque isso permite reduzir significativamente o número de combinações?

Por que não consideramos a versão original do problema?

 
Алексей Тарабанов:

Por que não olhamos para a versão original do problema?

Sem os segmentos.

 
Алексей Тарабанов:

Por que não olhamos para a versão original do problema?

Alexei Tarabanov:

Sem os segmentos.

Havia tal variante?

A variante original é dividir idealmente as séries numéricas como uma matriz em segmentos (faixas). Os critérios para a divisão são:

1. Pelo menos 5% dos números caem em uma faixa - %R. 2;

2) Avalie a resposta de um segmento a outra matriz binária do mesmo tamanho (se houver um número na faixa - 1, se não - 0) e a resposta do segmento deve diferir do valor médio de toda a matriz binária em pelo menos 5% - dP%;

3. Em 10 segmentos idênticos por profundidade de matriz, calcular SCO dP%, que não deve ser superior a 1,5 - K_SKO.

Agora métodos diferentes definem faixas, mas métodos diferentes são capazes de selecionar faixas diferentes que atendem aos critérios acima. Portanto, o objetivo é levar todas as desagregações em segmentos a partir de diferentes métodos e combinar os melhores.

 
Aleksey Vyazmikin:

Obrigado!

Mas eu não entendi bem o objetivo da atualização - foram feitas correções no código? Da última vez foram 613 combinações, desta vez são 1507.

A velocidade se tornou mais lenta, mas isso provavelmente é devido ao número de combinações.

Última variante:

Variante atual:

Se entendi corretamente, é proposto calcular consecutivamente uma combinação e avaliá-la imediatamente, salvar o resultado da avaliação e passar para a próxima combinação. Se o novo resultado (ou top 10) for melhor do que o anterior, nós o substituímos na variável array. E, sim, só queria perguntar, como obter uma cadeia de índices de primeiro nível da matriz da qual a combinação consiste?

Por que não é útil tentar um número limitado de seções do ponto atual (etapa de combinação, quando você já pegou n seções), porque isso permite reduzir significativamente o número de combinações?

E eu não sei onde e no que você está procurando por combinações? Geralmente, a cada início é criado um novo conjunto de segmentos de entrada e é sempre diferente.

Uma cadeia de índices - portanto, é necessário criar combinações não a partir dos segmentos, mas dos índices dos segmentos, ou adicionar um terceiro elemento na segunda dimensão e armazenar o índice nele.

Não sei por que um número limitado não é adequado, você escreveu sobre todas as combinações.

 
Dmitry Fedoseev:

Eu não sei onde e em que combinações você está procurando?

Acima, Alexei Tarabanov escreveu em detalhes onde e em quê ao responder. Mas isto é teoria - eu realmente ainda não terminei o que preciso.

Dmitry Fedoseev:

Geralmente, cada partida cria um novo conjunto de segmentos iniciais e eles são sempre diferentes.

Então eu vejo - eu não lidei com isso e apenas executei dois scripts - se o conjunto for diferente, então só será possível avaliar se os conjuntos são os mesmos.

Dmitry Fedoseev:

Cadeia de índices - por isso devemos criar combinações não de segmentos, mas de índices de segmentos, bem ou adicionar um terceiro elemento à segunda dimensão e salvar o índice nela.

Acho que o terceiro elemento é uma opção mais conveniente. Você poderia ajustar o código para que ele funcione corretamente com esta implementação?

Dmitry Fedoseev:

Não sei por que uma enumeração de um número limitado não é boa, você escreveu sobre todas as combinações.

Isso mesmo, originalmente escrevi sobre todas as combinações, mas no processo, graças a vocês, fica claro que é muito caro e que precisamos de uma opção, empiricamente capaz de não ser pior que força bruta. E como a avaliação do segmento resultante é formada por seus pedaços, presumo que, limitando n combinações de melhores pedaços e acrescentando novos pedaços, será possível abordar a melhor opção de todas as combinações possíveis sem limite.