Newsgroup: it.discussioni.ingegneria
Titolo: Retroazione nei software...

Ciao a tutti, sono al II anno di ing. informatica, in particolare sto 
seguendo con piacere il corso di Fondamenti di Automatica... il concetto di 
retroazione è qualcosa che mi ha sorpreso per la sua "potenza". Stavo 
pensando se fosse possibile applicare una cosa del genere quando si scrive 
un software: fare cioè in modo che un software ma anche una banale procedura 
scritta in C, possa modificarsi a seconda dei risultati che elabora.
Cioè, se a seconda dell'efficacia dei risultati modifichi i suoi parametri 
interni per migliorare il risultato prodotto:
non so se mi sono spiegato, facciamo un esempio: un software di analisi 
borsistica "evolve" a seconda dell'esattezza delle sue previsioni; penso che 
nel contesto finanziario non sia applicabile una cosa del genere, altrimenti 
la maggior parte degli informatici sarebbe ricchissima...
Forse ciò che chiedo trova risposte in quella che si chiama Intelligenza 
artificiale, ma non ne sono sicuro dato che non so molto di questa 
disciplina...
vi chiedo soltanto se ne sapete più di me (non che ci voglia molto) di 
consigliarmi qualche lettura, qualche tecnica per "retroazionare" un 
software, in modo da approfondire l'argomento.
Grazie per l'attenzione. 

 interni per migliorare il risultato prodotto:
molto spesso si fa proprio così
ciao
ostrakon

 molto spesso si fa proprio cosě
Ok, grazie ma potresti essere piů preciso? come si realizza una cosa del 
genere? qualche linguaggio in particolare?

 Ok, grazie ma potresti essere più preciso? come si realizza una cosa del 


 disciplina...
algoritmi genetici & reti neurali.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 algoritmi genetici & reti neurali.
ho letto troppo velocemente: in realta' gli algoritmi genetici non
c'entrano tanto, visto che non modificano il proprio stato in base ad una
vera a propria retroazione.


 la maggior parte degli informatici sarebbe ricchissima...
non potrebbe mai accadere, a meno che tu non inventi un software capace
di prevedere il futuro. E comunque, a diventare ricchi sono quelli che
il software lo usano, noi informatici lavoriamo perche' altri facciano
i soldi.
TREMALNAIK

 genere? qualche linguaggio in particolare?
le reti neurali sono un esempio: il sistema fa un conto in base a
determinati parametri, controlla se l'uscita č quella desiderata e se non lo
č quantifica l'errore e sulla base di questo corregge i propri parametri.
ma direi che ogni programma che implementa un filtro di kalman (che serve a
scopi + simili rispetto all'esempio che facevi tu) fa la stessa cosa: butta
fuori un valore per il tempo t e il valore per t+1 viene calcolato anche in
base alla differenza fra il valore reale al tempo t e il valore predetto al
tempo t.
in questo caso perň il sistema non modifica i propri parametri, tutto č
deciso a priori ma comunque l'uscita precedente viene usata per migliorare
la previsione.
insomma, questi sono solo due esempi, i primi che mi sono venuti in mente,
ma come hai notato tu la retroazione č uno strumento molto utile e quindi
viene usata spesso; per quanto riguarda il come, basta prevedere per la
funzione che lo implementa anche uno (o piů) parametro in ingresso che
rappresentano le uscite precedenti e sulla base di questo fare dei calcoli
"sensati".
ciao
ostrakon

[...]
A rigor di logica, qualsiasi algoritmo che faccia uso della ricorsione può 
essere considerato retroazionato, no?
Ciao 

 essere considerato retroazionato, no?
A mio modo di vedere anche una procedura iterativa. L'importante è che 
in qualche modo l'informazione di uscita sia riportata all'ingresso. 
Detto in termini informatici, i parametri del programma contengono anche 
variabili prelevate dall'output.
Es.: in un controllo di un motore, l'encoder è calettato sull'asse del 
motore ( = uscita) ma il dato viene utilizzato per stabilire posizione e 
velocità ( = ingresso).
Marco / iw2nzm

 software, in modo da approfondire l'argomento.
Una bella lettura, non tecnica, per entrare nel giusto clima: "Godel, 
Escher, Bach: un'Eterna Ghirlanda Brillante " di Douglas R. Hofstadter, ed. 
gli Adelphi. Se sei di Milano lo trovi in Feltrinelli (Duomo) a meno di 20 
?.
Qualcosa di piů tecnico a costo zero (download escluso): cerca gli appunti 
di Bonarini e Matteucci (Soft Computing) su 
www.elet.polimi.it
 e quelli di 
Ferrigno su 
www.biomed.polimi.it/Sinea
E se vuoi investire qualche cosa di piů (traduzione: scordati qualche 
aperitivo):
- Introduction to the theory of neural computation, Addison Wesley, 1991
- An introduction to artificial intelligence, UCL press limited, 1996
- Neural networks: a comprehensive foundation, Haykin, Prentice Hall, 1999
- An introduction to Fuzzy Control, Driankov Hellendoorn Reinfrank, 1996
Un'ultima nota, Haykin č un ottimo autore: per qualcosa di piů ibrido c'č 
"Kalman filtering and neural networks". Il problema č il prezzo esorbitante 
dei libri.
Saluti, Andrea 


Hai mai sentito parlare di evoluzione convergente e metodiche di mutazione
intelligente?
Il meccanismo č pilotato in maniera tale da spingere il kernel della tua
applicazione ( la mutazione in questo caso) in modo da migliorare le
prestazioni in futuro. Qualunque sia la teoria che scegli di usare
(Kolmogorov-Wiener, Kalman, ecc...) trovi comunque una tecnica che soddisfi
il requisito di "comportamento intelligente". C'č una piccola obiezione a 
queste tecniche: piů ti allontani dal rassicurante mondo di  Kalman, piů ti 
inoltri in metodiche potenti ma in cui non viene garantita  una teoria 
chiusa di progettazione del controllore. (cerca ANNs, fuzzy  systems, 
genetic & evolutionary algorithms, kernel machines ecc...con san Google)
Saluti, Andrea

interni per migliorare il risultato prodotto:
Non e' richiesto un ambiente specifico. Non si una l'intelligenza
artificiale per fare il controllo automatico di sistemi.
Quando si fa controllo automatico con sistemi a microprocessore si
parla di controllo numerico. 
Il meccanismo ti e' stato illustrato in altri post.
1) hai una procedura che genera output
2) ogni volta che la fai partire (con un ciclo od altro), deve partire
anche un criterio di valutazione della bonta dei risultati
3) sulla base dei risultati al punto precedente, modifichi
opportunamente i parametri della proedura...
Per fare delle simulazioni del meccanismo, puoi implementare algoritmi
di calcolo numerico. Ad esempio per cercare gli zeri di una equazione
non lineare, usando il metodo delle secanti che non e' troppo
complesso. In questo caso e' un algoritmo iterativo, con una sua
velocita' di convergenza dimostrata teoricamente, e con un sacco di
implementazioni in C ed in Fortran sparse sulla rete.
Sempre nel campo del calcolo numerico puoi trovare molti altri esempi
iterativi (sistemi lineari, non lineari, problemi agli autovalori...) 
Documentati sul controllo numerico e sul calcolo numerico.


io aggiungerei anche fuzzy adattativo.
Il concetto di reazione è legato ad un obiettivo: la minimizzazione di un
errore.
L'errore è definito come differenza fra il valore (o meglio stato) atteso
(set point) e il valore (stato) di uscita.
La stessa cosa si può pensare per un software : occorrerebbe individuare
quali sono quelle variabili che concorrono nella determinazione del
risultato computazionale e determinare un metodo (o criterio) per definire i
parametri che influenzano l'algoritmo.
I passi da seguire sono :
1) modellizazione
2) definizione dell'obiettivo
2) Analisi di stabilità
Se vuoi qualche riferimento sul fuzzy adattativo, ti basta ricercare degli
articoli di Li Xi Wang, se hai accesso alle pubblicazioni della IEEE.
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/