Domanda

Io lavoro per una società di ricerche di mercato nello spazio online. Abbiamo passato tutti i nostri cicli per oltre un anno e mezzo costruire la prossima grande cosa in questo spazio per quanto riguarda la profilazione nostri intervistati (nel tempo) per metterli meglio in sondaggi disponibili. Qualcosa che uno dei nostri ricercatore di noi ha chiesto molte volte (giustamente) è uno strumento che si rivelerà il valore di questo nuovo sistema di profilazione e predire il risultato di modifiche alla sua molti algoritmi e regole per mostrare quale versione di un set di regole ha un risultato migliore.

L'obiettivo è quello di essere in grado di prendere una scheggia del nostro sistema di profilazione (una fetta statica di Q & AI dati per un tempo determinato - il sesso:. Maschio / femmina, bevande: Coke / pepsi / mt.dew, reddito: etc) e agenti utente rUN (artificialmente sviluppati robot software o agenti) attraverso il nostro sistema di profilazione per vedere quali sarebbero stati i risultati interattivi. Poiché i dati di Q & A sarebbe lo stesso, gli agenti utente capacità di scegliere le risposte sarebbero lo stesso, e solo gli algoritmi e le regole che stanno dietro come funziona il profiler cambierebbero - questa teoria ci permetterebbe di predeterminare l'esito di eventuali modifiche il nostro sistema. Questo risultato sarebbe poi ci consentirà ai cambiamenti prova prima di spingere le modifiche al nostro sistema produttivo. La speranza è che potremmo più facilmente rilevare eventuali errori prima di rilasciare al selvaggio. Ma questo consentirebbe anche di testare le modifiche alla logica a caccia di ottimizzazioni nel profiler.

La mia domanda: (. C # / NET per lo più) Per uno come me che ha veramente lavorato solo nello spazio di applicazione web, dove posso guardare per iniziare a costruire programmi utente che sono in grado di interagire con un esterno sistema, come il mio sistema di profilazione? In particolare mi bisogno di sapere come spin up 1000 (mille) agenti e farli interagire con il mio sistema di profilazione (nel corso di un determinato periodo di tempo) per essere in grado di rispondere alle domande che si presentano loro dal sistema di profilazione in base alle caratteristiche che sono dinamicamente definito dal programma utente al momento dell'inizializzazione.

Un esempio di questo è che ho bisogno di alcuni agenti neri, alcuni agenti cinesi, alcuni agenti di sesso maschile, alcuni agenti di sesso femminile, alcuni vecchi agenti, alcuni nuovi agenti, alcuni agenti religiosi, alcuni che bevono coca cola, ecc e tutti loro mescolati insieme per assomigliare più adeguatamente il mondo. Abbiamo già la rottura verso il basso demografico della nostra popolazione in modo che possiamo facilmente spin up 10% maschi neri, il 60% di sesso femminile bianco soggiorno a casa le madri, e tutte le altre rappresentazioni della nostra popolazione.

I miei primi pensieri per la creazione di un sistema come questo è stato per utilizzare la potenza della mia XBOX 360 , e alcuni agenti ben pensato che assomigliano a una persona da un mondo orientato agli oggetti con alcune caratteristiche aggiunto da in grado di rispondere in modo intelligente ad alcune domande ... e indovinate in altri.

Nel parlare con il mio collega, è stato suggerito che io uso alcuni dei quadri di intelligenza artificiale là fuori e una scheda grafica 1000 CPU (ne abbiamo già uno) per ottenere alcuni super malvagio prestazioni veloci di carichi di agenti utente. Dove ogni CPU è un agente ... (qualcosa di simile).

C'è qualcuno là fuori con esperienza in questo genere di cose? Correzione dei problemi con un modello fittizio del mondo?

È stato utile?

Soluzione

Tu dici "interagire con un sistema esterno" - che cosa è l'interfaccia a questo sistema, e come fa una persona usa? E 'attraverso il web? Se è così, stai perdendo il tuo tempo a pensare ottimizzazioni GPU e simili in quanto il collo di bottiglia delle prestazioni sarà la rete, anche su una rete LAN. In tali circostanze si può anche semplicemente eseguire gli agenti in modo sequenziale. Anche se si potrebbe deporre le uova in modo efficace 1000 agenti contemporaneamente (magari su più macchine), le probabilità sono alte che ti basta paralizzare il server di destinazione in un denial accidentale dell'attacco di servizio, quindi è controproducente. Tuttavia se avete la possibilità di cambiare l'interfaccia per consentire la comunicazione tra processi diretta, si potrebbe tornare a considerare l'approccio di parallelismo massiccio. Ma poi 1000 non è un numero grande in termini di calcolo. E 'probabile che ci si spendono più tempo a fare l'algoritmo di eseguire in parallelo di quanto si potrebbe risparmiare da avere in questo modo.

Per quanto riguarda i 'quadri di intelligenza artificiale', non credo ci sia niente di così vaga che vi aiutano. AI e agenti intelligenti è un campo enorme - il libro Intelligenza Artificiale: un approccio moderno che è uno standard testo introduttivo sugli agenti intelligenti è lungo più di 1000 pagine e contiene forse 20 o 30 tecniche completamente indipendenti, molti dei quali potrebbero applicarsi al vostro problema, molti dei quali non. Se è possibile specificare più chiaramente ciò che compiti l'agente deve svolgere, e quali fattori produttivi che ha sulla quale effettuare tali decisioni, raccogliendo una tecnica discreta diventa possibile. In effetti, può risultare che il vostro problema non richiede intelligenza artificiale a tutti, se si dispone di una chiara corrispondenza tra i dati demografici degli agenti e il processo decisionale - basta guardare in alto la risposta da utilizzare dalla tabella che hai fatto in precedenza. Quindi è importante per capire quale problema si sta effettivamente cercando di risolvere prima.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top