Pergunta

Eu trabalho para uma empresa de pesquisa de mercado no espaço online. Temos vindo a gastar todos os nossos ciclos por mais de um ano e meio a construir a próxima grande coisa neste espaço com relação ao perfil de nossos entrevistados (ao longo do tempo) para melhor colocá-los em inquéritos disponíveis. Algo que um dos nosso pesquisador de nos pediu para muitas vezes (com razão) é uma ferramenta que irá provar o valor deste novo sistema de perfis e prever o resultado de ajustes para ele, muitos algoritmos e regras para mostrar a versão de um conjunto de regras tem um resultado melhor.

O objetivo é ser capaz de tomar uma fatia do nosso sistema de perfis (uma fatia estática de dados de perguntas e respostas para um determinado tempo - sexo: masculino / feminino, bebidas: Coque / pepsi / mt.dew, renda: etc.) e agentes de usuário são executados (desenvolvido artificialmente robôs de software ou agentes) através do nosso sistema de perfis para ver o que os resultados interativos seria. Como os dados de perguntas e respostas seria o mesmo, as habilidades agentes de usuário para escolher respostas seria o mesmo, e somente os algoritmos e regras por trás de como as obras de perfil mudaria - isso teoricamente permitiria a pré-determinar o resultado de qualquer alteração nosso sistema. Este resultado seria, então nos permitem alterações à prova antes de empurrar as mudanças para o nosso sistema de produção. A esperança é que nós poderíamos mais facilmente detectar quaisquer erros antes de liberar à vida selvagem. Mas isso também nos permitirá testar as alterações para a lógica de caça para otimizações do profiler.

A minha pergunta: Para alguém como eu (C # / NET principalmente.) Que realmente só funcionou no espaço de aplicações web, onde eu olhar para começar na construção de agentes que são capazes de interagir com um fora sistema, como o meu sistema de perfil? I especificamente precisa saber como girar até 1000 (mil) agentes e tê-los interagir com o meu sistema de perfis (ao longo de um determinado período de tempo) por ser capaz de responder às perguntas que lhes são apresentados pelo sistema de perfis com base nas características que são definidas dinamicamente no agente de usuário no momento da inicialização.

Um exemplo disso é que eu preciso de alguns agentes preto, alguns agentes chineses, alguns agentes do sexo masculino, alguns agentes do sexo feminino, alguns agentes velhos, alguns novos agentes, alguns agentes religiosos, alguns que coque bebida, etc. e todos eles em conjunto misturados para se assemelhar mais apropriadamente o mundo. Nós já temos a quebra demográfica para baixo da nossa população, para que possamos facilmente girar 10% homens negros, 60% estadia fêmea branca em casa mães, e todas as outras representações da nossa população.

Meu primeiro pensamento para a criação de um sistema como este era para usar o poder do meu XBOX 360 , e alguns bem pensado agentes que se assemelham a uma pessoa de um mundo orientado a objetos com algumas características adicionadas para ser capaz de responder de forma inteligente algumas perguntas ... e acho que em outros.

Ao falar com o meu colega, foi sugerido que eu uso algumas das estruturas artificiais de inteligência lá fora e um cartão 1000 cpu gráficos (já temos um) para obter algum super-mau desempenho rápido de cargas de agentes de usuário. Onde cada CPU é um agente ... (algo assim).

Há alguém lá fora, com experiência neste tipo de coisa? Prova de problemas com um modelo fictício do mundo?

Foi útil?

Solução

Você diz "interagir com um sistema de fora" - o que é a interface para este sistema, e como faz um uso de pessoa é? É através da web? Se assim for, você está desperdiçando seu tempo pensando sobre otimizações de GPU e similares desde o seu gargalo de desempenho será a rede, mesmo através de uma LAN. Em tais circunstâncias, você pode também apenas executar os agentes sequencialmente. Mesmo que você poderia efetivamente desova 1.000 agentes ao mesmo tempo (talvez em várias máquinas), as chances são altas que você só vai prejudicar o servidor de destino em uma negação acidental de ataque de serviço, por isso é contraproducente. No entanto, se você tem a capacidade de mudar a interface para permitir a comunicação entre processos direta, você poderia voltar a considerar a abordagem paralelismo maciço. Mas então 1000 não é um número grande em termos de computação. É provável que você iria gastar mais tempo fazendo o algoritmo executado em paralelo do que você salvar por tê-lo dessa forma.

Quanto aos 'quadros de inteligência artificial', eu não acho que há alguma coisa tão vaga que iria ajudá-lo. AI e agentes inteligentes é um campo enorme - o livro Artificial Intelligence: A Modern Approach que é um padrão texto introdutório sobre agentes inteligentes é mais de 1000 páginas e contém talvez 20 ou 30 técnicas totalmente independentes, muitos dos quais poderiam se aplicar ao seu problema, muitos dos quais não. Se você pode especificar mais claramente quais as tarefas que o agente tem que realizar, e quais as entradas que tem sobre o qual para tomar essas decisões, escolhendo uma técnica decente se torna possível. Na verdade, pode acontecer que o seu problema não requer AI em tudo, se você tem um mapeamento claro entre demografia agente e tomada de decisão - você só olhar para cima a resposta ao uso da mesa que você fez anteriormente. Portanto, é importante para descobrir o que problema você está realmente tentando resolver em primeiro lugar.

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