• Non ci sono risultati.

Dispacciamento economico per una SG funzionante in parallelo alla rete,

Nel documento Gestione Razionale dell Energia Elettrica (pagine 95-99)

3. Modellistica per la Gestione Ottimale dell’Energia Elettrica nelle Reti

3.8. Dispacciamento economico per una SG funzionante in parallelo alla rete,

generazione e di carico e sulla potenza contrattuale

Il caso più generale possibile di dispacciamento economico in una SG si ha in corrispondenza di domanda elastica, parallelo alla rete e vincoli sulle potenze di

generazione e di carico e sulla potenza contrattuale. La funzione obiettivo in questo caso appare nella sua forma completa (4) ed il problema di minimizzazione deve essere formulato come di seguito:

( )

sottoposto a ∑

(39)

La soluzione del problema è ricavabile in maniera iterativa, seguendo la procedura descritta nel Paragrafo 7 ed aggiungendo i moltiplicatori relativi ai vincoli di disuguaglianza sulle potenze di carico. Si noti che, rispetto al caso visto nell’Esempio 7.1, i cui risultati sono riportati in Tab. VI, la flessibilità della domanda comporta in questo caso una riduzione della potenza assorbita dai carichi di 50 MW.

3.8.1. Esempio 8.1

Si consideri una SG funzionante in parallelo alla rete, in cui sono in linea due unità di generazione, i cui parametri sono riportati in Tab. V, ed un carico elettrico i cui parametri sono riportati in Tab. VIII; inoltre, per il dato intervallo di tempo, la tariffa oraria di acquisto o vendita di potenza dalla rete di distribuzione è pari a

€/MWh. Si supponga che anche stavolta sia consentita l’immissione di potenza sulla rete di distribuzione al PCC, con un limite contrattuale di 500 MW in immissione o in prelievo. Si calcolino i valori ottimali delle potenze prodotte dalle unità di generazione, della potenza acquistata o ceduta alla rete di distribuzione e delle potenze di carico.

Tab. VIII. Parametri delle unità di carico Unità

(€/MWh) [€/(MW) 2h]

(MW) (MW)

1 80 0.1 500 700

In questo caso MW e MW. Sotto tali premesse si ottengono i risultati riportati in Tab. IX.

Tab. IX. Soluzioni del problema di dispacciamento economico

(MW)

(MW)

(MW) (MW) (€/MWh) (€/h)

80 40 430 550 25 -15145

APPENDICE

Soluzione dei problemi di dispacciamento economico in ambiente MATLAB: la funzione fmincon

La soluzione dei problemi di ottimizzazione sopra descritti è immediatamente e facilmente ricavabile in ambiente MATLAB attraverso l’utilizzo della funzione

fmincon. La sintassi da rispettare per l’utilizzo di tale funzione è la seguente:

[x,fval,exitflag,output,molt] =

fmincon(@fobj,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

Gli ingressi della funzione sono, nell’ordine:

1. fobj. È la funzione obiettivo (scalare) che va minimizzata, che va definita in un file esterno e che viene richiamata attraverso l’operatore @.

2. x0. È il vettore di dimensioni [ x ] delle soluzioni iniziali (normalmente imposte nulle o pari ai valori nominali) da fornire come ingresso alla funzione.

3. A,b. Sono rispettivamente la matrice di dimensioni [ x ] e il vettore di dimensioni [ x ] attraverso cui possono essere imposti i vincoli di disuguaglianza lineari, nella forma , dove è il vettore delle incognite.

4. Aeq,beq. Sono rispettivamente la matrice di dimensioni [ x ] e il vettore di dimensioni [ x ] attraverso cui possono essere imposti gli vincoli di uguaglianza lineari, nella forma .

5. lb,ub. Sono i vettori di dimensioni [ x ] attraverso cui possono essere imposti i vincoli rispettivamente di lower bound e di upper bound sulle incognite, nella forma . 6. nonlcon. È una funzione, anch’essa definita in un file esterno, che contiene l’espressione di tutti

i vincoli non lineari e che quindi non possono essere espressi in forma matriciale. Si noti che nella nonlcon possono essere definiti anche i vincoli lineari, in alternativa all’espressione matriciale.

7. options. È una struttura di dati di tipo stringa-valore che consente di modificare, ad esempio, l’algoritmo di risoluzione della funzione, le soglie di tolleranza, il numero massimo di iterazioni, e così via.

Le uscite della funzione sono, nell’ordine:

1. x. È il vettore di dimensioni [ x ], soluzione del problema di minimizzazione.

2. fval. È il valore (scalare) che assume la funzione obiettivo in corrispondenza della soluzione trovata x.

3. exitflag. È un valore (scalare e discreto) che fornisce un’indicazione sulla bontà della soluzione trovata x. Può assumere, in particolare, valori da -3 a +5. Valori negativi indicano una deficienza dell’algoritmo di risoluzione; il valore +1 assicura la bontà della soluzione; valori più elevati suggeriscono un’analisi a posteriori della soluzione trovata.

4. output. È una struttura di dati contenenti informazioni sull’algoritmo utilizzato, sulle tolleranze imposte e sul numero di iterazioni.

5. molt. È una struttura contenenti i valori dei moltiplicatori e in corrispondenza della soluzione trovata x.

Nel seguito, i problemi affrontati negli Esempi 5.1, 6.1, 7.1, 7.2 e 8.1 verranno risolti attraverso script di MATLAB.

A.1. Esempio 5.1

Si consideri una SG funzionante in isola, in cui sono in linea due unità di generazione i cui parametri sono riportati in Tab. I, qui nuovamente riportata per comodità di lettura. La richiesta energetica per l’ora considerata è anelastica ed è pari a MW. Si supponga di non avere vincoli sulle potenze minime né su quelle massime che possono essere immesse sulla SG da parte delle unità di generazione. Tale esempio è uguale quindi al caso studio D riportato nell’esempio 5.1. Si calcolino i valori ottimali delle potenze prodotte dalle unità di generazione ai fini della minimizzazione dei costi di approvvigionamento.

Tab. I. Parametri delle unità di generazione Unità

(€/h) (€/MWh) [€/(MW) 2h]

1 100 20 0.05

2 200 21 0.10

Il file main .m in MATLAB che consente di risolvere il problema, impostando il vincolo di uguaglianza in forma matriciale, è il seguente:

clear all

dove la funzione obiettivo richiamata c_tot_1 che viene minimizzata è la seguente:

function Ct = c_tot_1(p)

Fig. A1. Struttura contenente i valori ottimi dei moltiplicatori

Il problema poteva essere risolto analogamente, imponendo il vincolo di uguaglianza nella funzione nonlcon. In tal caso, il file main .m che si adopera è:

clear all close all clc

global c0g ag bg Pd

c0g = [100 200];

ag = [20 21];

bg = [0.05 0.1];

P0 = [0; 0];

Pd = 600;

[P,C_tot,exitflag,output,molt] =

fmincon(@c_tot_1,P0,[],[],[],[],[],[],@vinc_1);

dove la funzione che contiene i vincoli vinc_1 è la seguente:

function [C, Ceq] = vinc_1(p)

global Pd

C = [];

Ceq = sum(p)- Pd;

Si noti che C è rappresentativa dei vincoli di disuguaglianza, qui non presenti, in quanto viene imposto nella risoluzione dell’algoritmo , mentre Ceq è rappresentativa dei vincoli di uguaglianza, in quanto viene imposto nella risoluzione dell’algoritmo . Ovviamente la soluzione del problema è la stessa ottenuta in precedenza.

Nel documento Gestione Razionale dell Energia Elettrica (pagine 95-99)