Scénarios de pénétration du véhicule électrique
et calcul de valeurs d’option

Michel Adrien Vogt-Schilb (vogt arrobase centre-cired.fr)
(last modification date: October 10, 2017)
Version pdf de ce document
Version sans bandeaux

1 Préambule
2 Introduction: premières données problème
3 Modélisation du marché automobile
4 Scénarios de prix de l’énergie et pénétration du véhicule électrique
5 Calcul et contrôle des emissions de gaz à effet de serre

Contents

1 Préambule
2 Introduction: premières données problème
3 Modélisation du marché automobile
4 Scénarios de prix de l’énergie et pénétration du véhicule électrique
5 Calcul et contrôle des emissions de gaz à effet de serre

1 Préambule

Avant de commencer, créer un fichier optval.sce commençant par:

clear();  
stacksize(1e8);  
MODELDIR = get_absolute_file_path("optval.sce");  
cd(MODELDIR);

2 Introduction: premières données problème


ClassiqueEfficaceElectrique




Cout ($) 16 500 22 000 29 000
Consommation (106 tep/km) 70.4 52.9 15.4
Part de marché à l’année de référence (%) 88 10 2

Table 1: Caractéristiques des différents types de véhicules

On classe les voitures européennes selon trois grands types ou technologies: “classique”,“efficace” et “électrique”. On résume leurs caractéristiques dans le tableau 1. A l’année de référence, l’essence coute 1 700 $/tep et l’électricité coute 2 000 $/tep. Les automobilistes gardent en moyenne 8 ans leur voiture, et parcourent 14 000 km par an.

Question 1 Incorporez ces données à optval.sce.

//parts de marche des voitures a l'annee de reference  
MSH_ref=[ 0.88 0.10  0.02];  
//Cout des voitures  
CINV=[16500   22000  29000]; //$  
conso_carbu = [7.04E-5 5.29E-5 0];  //tep /km  (8.7    6.5    0.  L/100km)  
conso_elec  = [0 0 1.54E-5]; //tep/km  
 
p_elec_ref = 2000; //$/tep  
p_carbu_ref= 1700;//$/tep  
 
//parcours moyen d'un vehicule et duree de vie  
km_per_year=14000;  
life_time = 8;

3 Modélisation du marché automobile

Les notes d’un chercheur mentionnent lcc(j), valeur associée à chaque technologie j et calculée grâce à la relation:

             ∑T
lcc = CInv +     ccarb ⋅-pcarb +-celec-⋅ pelec
             t=1        (1 + i)t
(1)

Question 2 Que représente d’après vous lcc pour chaque technologie? Identifiez chaque terme de l’équation (1).

D’après les notes du chercheur, la part de chaque technologie dans le stock d’automobiles msh (pour market share) vérifie

           (      ) γ
msh-(k)-=   lcc(k)
msh (j)      lcc(j)
(2)

γ est un nombre négatif qui est fonction de l’homogénéité du marché, et (j,k) représente un couple de technologies.

Question 3 Quelle valeur de gamma pourrait représenter un marché parfaitement homogène, i.e. pour lequel tous les consommateurs ont rigoureusement le même comportement ?

La fonction scilab suivante calcule un lcc kilométrique annualisé. On en parlera tout de même par la suite comme du lcc.

function lcc = calc_lcc(CINV,conso_elec,conso_carbu,p_elec,p_carbu,km_per_year,disc_rate)  
    disc_fact =sum(1 ./ (1+disc_rate).^(1:life_time))  
    lcc = CINV./(disc_fact*km_per_year) + (conso_carbu.*p_carbu+conso_elec.*p_elec)  
endfunction

Question 4 Proposez un calcul direct de chaque msh en fonction de tous les lcc, puis complétez la fonction scilab suivante destinée à calculer les parts de marché de chaque technologie. On pourra utiliser la puissance terme à terme .^ et la commande sum.

function MSH = calc_pdm(LCC,gama)  
    //completer ici  
endfunction

Les notes du chercheur proposent les valeurs suivantes pour le taux d’actualisation et la variable d’homogénéité du marché.

Question 5 Vérifiez que ces valeurs donnent des résultats proches des parts de marchés constatées (tableau 1).

disc_rate=0.16;  
gama = -15;  
 
lcc = calc_lcc(CINV,conso_elec,conso_carbu,p_elec_ref,p_carbu_ref,km_per_year,disc_rate)  
MSH = calc_pdm(lcc,gama)  
disp(MSH-MSH_ref,"MSHcalc - MSHref =")

On s’intéresse au cout moyen annualisé du système automobile :

function tot_annual_cost = calc_anualcost(lcc,MSH,km_per_year)  
    tot_annual_cost = sum(lcc.*MSH).*km_per_year  
endfunction

Question 6 Quel est le cout moyen annualisé du système automobile simulé à l’année de référence?

cout_ref = calc_anualcost(lcc,MSH,km_per_year)  
disp("cout moyen anualise de reference : "+string(cout_ref))

4 Scénarios de prix de l’énergie et pénétration du véhicule électrique

L’évolution des prix des énergies est difficile à prévoir, notre chercheur ne peut donc pas assoir son analyse sur une prévision unique des prix. Les prévisions consultées par notre chercheur se contredisent: les prix pourraient aussi bien doublés qu’être divisés par deux ! Le chercheur décide de modéliser les prix futurs comme des variables aléatoires log-normales :

//SCENARIOS  
N=300; //ajuster en fonction de la vitesse de votre machine  
evar = log(2)/3; emean = log(1.2);  
cvar = log(2)/2; cmean = log(1.5);  
distri_elec = exp(grand(1,N,"nor",emean,evar));  
distri_carb = exp(grand(1,N,"nor",cmean,cvar));  
p_elec_futurs = p_elec_ref *distri_elec;  
p_carbufuturs = p_carbu_ref*distri_carb;  
 
//Affichage des hypotheses sur les prix  
n_histo = 40;  
clf;  
subplot(321);  
histplot(n_histo,p_elec_futurs); title("Distribution de p_elec_futurs");  
subplot(322);  
histplot(n_histo,p_carbufuturs); title("Distribution de p_carbufuturs");  
xs2gif(0,"HypothesesPrixFuturs.gif");

Question 7 Pourquoi avoir choisi une représentation log-normale ? Comparez ce que sait notre chercheur sur l’évolution future des prix du carburant et de l’électricité.

Question 8 Calculer, pour chaque couple de prix futurs, les parts de marché de la voiture électrique (VE) et le cout moyen annualisé du système de transport.

//SIMULATIONS DE LA PENETRATION DU VE  
winId=waitbar("Simulation...");  
k=1;  
tot_cost_futurs = zeros(N^2,1);  
lcc_futurs   = zeros(N^2,3);  
MSH_futurs   = zeros(N^2,3);  
for i = 1:size(p_elec_futurs,"*")  
    for j = 1:size(p_carbufuturs,"*")  
        pelec  = p_elec_futurs(i);  
        pcarb  = p_carbufuturs(j);  
        lcc_futurs(k,:) = calc_lcc(CINV,conso_elec,conso_carbu,pelec,pcarb,km_per_year,disc_rate);  
        MSH_futurs(k,:) = calc_pdm(lcc_futurs(k,:),gama);  
        tot_cost_futurs(k)  = calc_anualcost(lcc_futurs(k,:),MSH_futurs(k,:),km_per_year);  
        waitbar(k/(N^2),winId);  
        k=k+1;  
    end  
end  
winclose(winId);  
cost_with_VE = tot_cost_futurs;  
msh_ve       =  MSH_futurs(:,3);  
 
//Affichage  
subplot(312);  
histplot(n_histo,msh_ve); title("Distribution des pdm de VE");  
subplot(313);  
histplot(n_histo,cost_with_VE); title("Distribution des couts du systeme automobile");  
xs2gif(0,"PDMveFuturs.gif");

Question 9 Calculez et affichez de même la distribution de cost_no_VE, cout annualisé du système automobile lorsque les VE ne sont pas disponibles. On pourra utiliser une astuce pour exclure rapidement le VE, comme:

CINVnoVE = CINV; CINVnoVE(3) = 10*CINV(3);

Valeur d’option

On suppose que le revenu moyen des automobilistes est de 30 000 $. On suppose que les déplacements automobiles sont contraints et les automobilistes n’y associent aucune utilité. Cette dernière dépend du logarithme du revenu disponible après déplacements automobiles :

//UTILITE ET VALEUR D'OPTION  
Revenu = 30000;  
function u=calc_util(tot_cost_futurs,Revenu)  
    u = log(Revenu-tot_cost_futurs)  
endfunction

Question 10 Commentez la forme fonctionnelle de l’utilite à la lumière du TP Risk and decision. L’objectif est de calculer l’effet de la disponibilité du VE sur l’utilité espérée. Pourquoi a-t-on besoin de connaitre le revenu ?

Question 11 Affichez la distribution d’utilité dans les cas avec et sans VE, en faisant apparaitre l’utilité espérée. Commentez l’effet de la disponibilité des VE sur la distribution de l’utilité.

u_ve    = calc_util(cost_with_VE,Revenu);  
u_cost_no_VE = calc_util(cost_no_VE,Revenu);  
eu_ve    =mean(u_ve   );  
eu_cost_no_VE =mean(u_cost_no_VE);  
clf;histplot(n_histo,u_ve);  
histplot(n_histo,u_cost_no_VE,style=3);  
title("distribution d''utilite");  
legend(["avecVE"; "sansVE"]);  
plot(eu_ve,0,".k");  
plot(eu_cost_no_VE,0,".g");  
xs2gif(0,"VEsurUtiliteBaseline.gif");

Le gouvernement propose de financer la création de la filière de production de voitures électriques par une taxe forfaitaire et payée par les automobilistes (à l’image de la vignette automobile). On cherche quel est le montant maximal que l’automobiliste est prêt à payer aujourd’hui pour s’assurer que des VE seront disponibles si nécessaires dans le futur.

Question 12 Calculer le prélèvement maximal que l’on peut ponctionner sur le revenu des automobilistes en échange de la garantie que des voitures électriques seront disponibles dans le futur. Il s’agit de la valeur que l’automobiliste partageant avec notre chercheur les croyances sur les prix futurs de l’énergie accorde à une option sur le véhicule électrique (VE).

function y=solve_cvi(x,distrib_cost,Revenu,cible)  
    y =  mean(calc_util(distrib_cost,Revenu+x))-cible  
endfunction  
 
cvi = fsolve(0,list(solve_cvi,cost_no_VE,Revenu,eu_ve));  
disp("cvi= "+string(cvi)+" gains moyens = "+string(mean(cost_no_VE-cost_with_VE)))

Question 13 Comparez la valeur d’option à l’effet des VE sur moyenne du cout du système automobile. Commentez la valeur absolue et le signe de la différence entre ces deux valeurs.

Cost at risk

Les bonnes pratiques administratives imposent de s’interesser au cost at risk des projets sur lesquels la puissance publique intervient. On appelle cost at risk au niveau λ du système automobile le cout annualisé x tel que le cout futur du système automobile soit inférieur à x avec une probabilité de 1 λ.

Question 14 Calculer et comparer le cost at risk au niveau 5% du système automobile lorsque les VE sont disponibles et indisponibles.

//COST AT RISK  
lambda=0.05;  
 
values=gsort(cost_with_VE);  
CaR_ve=values(int(lambda*N^2));  
clf;  
plot(values,linspace(0,1,N^2),"r");  
disp("CaR(5%) des trajets avec VE = "+string(CaR_ve) );  
 
valuesnove=gsort(cost_no_VE);  
CaR_nove=valuesnove(int(lambda*N^2));  
plot(valuesnove,linspace(0,1,N^2),"b");  
disp("CaR(5%) des trajets sans VE = "+string(CaR_nove) );  
 
legend(["avecVE","sansVE"]);  
title("Distribution des couts du systeme automobile et CaR(5%)")  
plot([values; valuesnove],lambda*ones([values; valuesnove]),"k");  
xs2gif(0,"DistribCoutsTrajetBaseline.gif");

5 Calcul et contrôle des emissions de gaz à effet de serre

Calcul des émissions de CO2


Prix du carbone ($) 01030200
Abbatements (GtCO2)00.5 1 2

Table 2: Réponse du reste de l’économie à un prix du carbone

Il y a 220 millions de véhicules dans le parc. La consommation de carburants s’accompagne d’émissions de CO2: l’électricité contient 400 gCO2/kWh, et les carburants liquides contiennent 2.8 tC02/tep.

Question 15 Complétez la fonction scilab qui calcule les emissions de gaz à effet serre du système automobile, puis calculez les émissions des voitures à l’année de référence.

//EMISSIONS DE GAZ A EFFET DE SERRE  
contenu_elec_ref  = 4.5; // tC02/tep  
contenu_carbu = 2.8; // tC02/tep  
 
function emis = calc_car_emi(MSH,conso_elec,conso_carbu,contenu_elec,contenu_carbu)  
   //completer ici  
   ...  
endfunction  
disp("emis. voitures ref. : "+string(calc_car_emi(..  
    MSH_ref,conso_elec,conso_carbu,contenu_elec_ref,contenu_carbu)*1e6)+"g/km")

On s’intéresse aux émissions totales de CO2. Le reste de l’économie (hors système automobile) est responsable de 4.5 GtCO2/an. On souhaite appliquer une taxe carbone pour réduire les émissions de CO2. Notre chercheur connait précisément la réponse du reste de l’économie à une taxe carbone, qui est résumée dans le tableau 2.

Question 16 Complétez la fonction suivante qui calcule les émissions de CO2 du reste de l’économie en fonction du niveau de la taxe. On pourra utiliser la commande interpln.

//BOUCLAGE MACRO  
emi_roe_ref = 2.5e9; //tCO2  
function emis = calc_roe_emis(tax,emi_roe_ref)  
    //completer ici  
endfunction

Notre chercheur est de plus certain que le contenu carbone de l’éléctricité décroit linéairement avec le niveau de la taxe, pour atteindre 0 à 250 $/tCO2:

function contenu_elec= calc_contenu_elec(tax,contenu_elec_ref)  
    contenu_elec = max (interpln ([0 250; contenu_elec_ref 0],tax),0)  
endfunction

On souhaite tester la réponse de notre modèle à un prix du carbone. Pour l’instant, on soumet arbitrairement le modèle à des taxes de 0, 10, 30, 60 et 100 $/tCO2, qui seront considérées équiprobables.

Question 17 Calculer, afficher et commmenter la distribution des émissions de gaz à effet de serre totaux, quand le VE est disponible et lorsqu’il ne l’est pas. Pour cela compléter le programme ci-dessous :

//Hypotheses sur la valeur du carbone  
taxes_futures = [0 10 30 60 100]  
n_tax= size(taxes_futures,"*");  
 
//distribution des emissions avec VE  
winId=waitbar("Impact taxe...");  
k=1;  
tot_cost_futurs = zeros(N^2*n_tax,1);  
lcc_futurs      = zeros(N^2*n_tax,3);  
MSH_futurs      = zeros(N^2*n_tax,3);  
contenu_elec    = zeros(N^2*n_tax,1);  
emis_roe        = zeros(N^2*n_tax,1);  
emiscar         = zeros(N^2*n_tax,1);  
for i = 1:size(p_elec_futurs,"*")  
    for j = 1:size(p_carbufuturs,"*")  
        for l=1:n_tax  
            tax = taxes_futures(l);  
            pelec  = p_elec_futurs(i);  
            pcarb  = p_carbufuturs(j);  
            contenu_elec = calc_contenu_elec(tax,contenu_elec_ref);  
            emis_roe(k)    =  calc_roe_emis(tax,emi_roe_ref);  
            lcc_futurs(k,:) = calc_lcc(CINV,conso_elec,conso_carbu,pelec+tax*contenu_elec,..  
                pcarb+tax*contenu_carbu,km_per_year,disc_rate);  
            MSH_futurs(k,:) = calc_pdm(lcc_futurs(k,:),gama);  
            emiscar(k) = calc_car_emi(MSH_futurs(k,:),conso_elec,conso_carbu,contenu_elec,contenu_carbu);  
            waitbar(k/(N^2*n_tax),winId);  
            k=k+1;  
        end  
    end  
end  
winclose(winId);  
emis_ve = emiscar + emis_roe;  
 
//COMPLETER ICI LE CAS SANS VE  
...  
 
 
clf;histplot(n_histo,emis_ve);  
histplot(n_histo,emis_nove,style=3);  
title("distribution des emissions");  
legend(["avecVE"; "sansVE"]);  
xs2gif(0,"PresenceVEsurEmissions.gif");

Question 18 Que deviennent alors la valeur d’option du VE et les Cost at risk du système automobile?

Contrôle des émissions de CO2

Plutôt que de faire des scénarios sur le prix futur du CO2, on souhaite contraindre l’économie à réduire de moitié ses émissions. On cherche donc, dans chaque scénario, a appliquer le prix du carbone qui permet d’atteindre cet objectif.

La fonction suivante calcule la plupart des variables de notre modèle. Elle peut être utilisée comme le montrent les exemples ci-dessous pour calculer les variables du modèle ou pour trouver la taxe qui contraint les émissions à un niveau donné.

function [emis, emiscar, emis_roe,contenu_elec,lcc_futurs,MSH_futurs] = ..  
calc_tot_emis(tax,contenu_elec_ref,contenu_carbu,emi_roe_ref,CINV,conso_elec,..  
conso_carbu,pelec,pcarb,km_per_year,disc_rate,gama,cible)  
        contenu_elec    = calc_contenu_elec(tax,contenu_elec_ref)  
        emis_roe     =  calc_roe_emis(tax,emi_roe_ref)  
        lcc_futurs = calc_lcc(CINV,conso_elec,conso_carbu,pelec+tax*contenu_elec,..  
        pcarb+tax*contenu_carbu,km_per_year,disc_rate);  
        MSH_futurs = calc_pdm(lcc_futurs,gama);  
        emiscar        = calc_car_emi(MSH_futurs,conso_elec,conso_carbu,contenu_elec,contenu_carbu)  
    emis = (emiscar + emis_roe) - cible  
endfunction  
 
//trouve la taxe qui permet d'atteindre 4GtCO2 en partant d'une taxe \`a 50;  
tax_calc = fsolve(50,list(calc_tot_emis,contenu_elec_ref,contenu_carbu,emi_roe_ref,cinv,..  
    conso_elec,conso_carbu,pelec,pcarb,km_per,year,disc_rate,gama,4e9));  
 
//calcule les autres variables du modele sans cibler de niveau d'emissions particulieres.  
 [emis(k), emiscar(k), emis_roe(k),contenu_elec(k),lcc_courant,MSH_courant] = ..  
            calc_tot_emis(tax(k),contenu_elec_ref,contenu_carbu,emi_roe_ref,cinv,conso_elec,..  
            conso_carbu,pelec,pcarb,km_per_year,disc_rate,gama,0);

Question 19 Utiliser les deux formes de cette fonction pour calculer, afficher et comparer la distribution de taxe permettant d’atteindre l’objectif de diviser par deux les émissions de l’économie entière, avec et sans VE disponibles.

Question 20 Calculer la nouvelle valeur d’option du VE et les nouveaux Cost at Risk.