per chi come me in questo periodo non può fare a meno di stare lontano (volente o nolente) dal mondo dell'elettronica e tutto ciò che è collegato ad essa, pongo questo quesito, che spero mi possiate aiutare a risolvere.
Dovrei realizzare un sistema di ottimizzazione che dovrà essere impiegato per il tuning di un sistema elettronico RF attraverso dei controlli in tensione. Quello che faccio è interfacciarmi attraverso labview con un VNA (Vector Network Analyser) e ricevere ciclicamente i parametri S21 dal sistema analizzato. I dati ricevuti devono poter essere confrontati con un andamento desiderato entro determinati intervalli di frequenza, quindi automaticamente agire sui controlli in tensione (sempre interfacciando labview con un opportuno hardware atto a tale scopo) del sistema RF stesso per raggiungere la condizione di ottimo che più si avvicina alla condizione desiderata.
Per l'algoritmo di ottimizzazione avevo pensato di costruire una funzione obiettivo di errore del tipo:

dove
sono i singoli punti in frequenza analizzati, N costituisce il numero di goals imposti per l'ottimizzazione,
è il numero di punti dell'intervallo di analisi, S21 è il goal imposto e measured.S21 è la misura acquisita con il VNA.
è l'ordine della norma, mentre
sono dei pesi.Ovviamente l'ottimizzazione si persegue minimizzando il più possibile la funzione obiettivo.
Per l'ottimizzazione in labview avevo pensato di utilizzare il VI Global Optimization, che si basa sull'algortimo DE (Differential Evolution). Al VI è necessario fornire la funzione obiettivo, i parametri iniziali da cui partire, gli estremi dell'intervallo di valori che possono assumere i parametri da variare ed eventualmente delle impostazioni opzionali per l'algoritmo DE, e restituisce i valori dei parametri
corrispondenti alla condizione di ottimo raggiunta ed il costo, cioè il valore della funzione obbiettivo ottenuto con tali parametri.Veniamo ora al mio problema: la funzione obiettivo che fornisco al VI, secondo l'help di labview, deve essere del tipo F(X), dove X è un array costituito dai parametri che devono essere variati, e quello che lui fa è variare questi parametri e ricalcolare la funzione F(x) fin quando non raggiunge una condizione di minimo, imposta nelle opzioni dell'algoritmo. Nel mio caso però la funzione obiettivo non dipende direttamente dai parametri, perché le tensioni di controllo
su cui devo agire mi vanno a variare la risposta in frequenza del sistema, ed è quella che viene valutata nella funzione obiettivo stessa.Non so quindi come poter impostare il codice in labview per poter utilizzare il Vi global optimization per i miei scopi. Più che altro lo vedo adatto a operazioni di ottimizzazione di modelli matematici, ma in questo caso, dove l'ottimizzazione si basa sul confronto tra misure e condizioni desiderate, forse non può essere utilizzato.
chiedo quindi a voi se c'è un modo per poter utilizzare questo VI per i miei scopi, o se eventualmente ci sono altre strade che potrei percorrere. Grazie mille

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
