Pergunta

Para um estudo, eu tenho um sistema (black-box) que requer uma entrada na forma de uma matriz com 4 valores (input_array) e, dependendo de seus valores, ela produz uma saída (resposta) de sinal.

Block diagram

O input_array contém 4 valores reais (parâmetros P1-4), com dado e intervalos separados.O sinal de saída, a qualidade é medida pelo cálculo de sua relação sinal-ruído (SNR).Cada input_array variante pode ser aplicada ao sistema, uma vez a cada 3 segundos (não mais rápido do que 3 s).

Eu tenho que encontrar a melhor input_array que produz maior SNR (de preferência, em menos quantidade de tempo).Isto é, a combinação dos 4 valores reais que maximiza a relação sinal-ruído (uma solução ótima é suficiente;absoluta solução é bem-vinda, mas não necessariamente é obrigatório).Se útil em encontrar uma solução, os 4 parâmetros podem ser diferenciados, mas as suas gamas incluem centenas de possíveis (discretos) valores.

Os valores podem ser considerados independentes, sem o conhecimento prévio está disponível para ser seus intervalos, e suas individuais influência sobre o SNR é desconhecido.A SNR é um valor real, que é influenciado pelo ruído (portanto, para a mesma input_array aplicado consecutivamente, pode ter diferentes (mas quase), valores).

Que solução(s) pode ser aplicado a este problema?

  1. A solução mais simples que vem à mente é a realização de um procura exaustiva dos parâmetros de domínio, mas ele não é aplicável, uma vez que o tempo necessário vai ser muito longo.

  2. Inicialmente, eu estava pensando em aplicar aprendizado por reforço algoritmos para ação contínua espaços, considerando cada parâmetro de uma acção individual e retornando um positivos/negativos recompensa quando o SNR aumenta/diminui (por exemplo, +/-1).No entanto, eu acho que eles exigiria muito tempo;no entanto, eu posso parar a aprendizagem processo a qualquer hora de eu considerar que a input_array produz um aceitável SNR.

  3. Depois de pensar mais, este problema me parecia um problema de pesquisa, então eu pensei que (heurístico) pesquisa de algoritmos pode ser apropriado.

Alguém tem uma idéia do que seria a solução mais adequada para este problema?

Foi útil?

Solução

Parece que você tem uma função $f:\mathbb{R}^4 o \mathbb{R}$ e você quer encontrar $x$ que maximiza $f(x)$, mas você não consegue calcular $f$ diretamente;você só pode obter um ruidoso estimativa de seu valor.

Muitos métodos de otimização pode ser adaptado para esta definição.Uma coisa simples que você pode tentar seria um método iterativo, como gradiente de subida ou Newton método, mas , com mais iterações para a conta para o ruído;a ideia é que o ruído da média dada suficiente de iterações.

Por exemplo, o gradiente de subida exige que você seja capaz de calcular o gradiente $ abla f (x)$ para qualquer ponto de sua escolha.No seu caso, isso pode ser feito por estimativa

$$ abla f(x) = ((f(x+e_1)-f(x-e_1))/2, \dots, (f(x+e_4)-f(x-e_4))/2),$$

onde $e_1=(1,0,0,0)$, $e_2=(0,1,0,0)$, e assim por diante.Agora, dada a capacidade de calcular $f$ em um ponto de sua escolha, por computação $f$ em 8 de entradas, você pode estimar $ abla f(x)$ e, em seguida, dar um só passo do gradiente de subida;e repita até que a convergência.

Uma abordagem mais sofisticada seria tentar utilizar Bayesiana de otimização, tais como O Google Vizir.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a cs.stackexchange
scroll top