Passer au contenu principal
SAM évalue solaire, solaire avec stockage et stockage autonome par segment. Le calcul actif importe le classeur, construit les scénarios, évalue l’économie client, estime l’adoption, met les options en concurrence et produit les résultats.

Entrées, unités et axes

Scenarios sélectionne les segments. Les feuilles technologiques décrivent tailles, CAPEX, OPEX, marchés maximaux, incitatifs, profils, financement et adoption. Les paramètres utilisent Input, les séries annuelles Year. Sector Selector et les nouvelles feuilles d’incitatifs de stockage ont un traitement optionnel; les autres feuilles et colonnes directement indexées sont requises. Chaque année d’acquisition correspond à une colonne de flux sur la durée de projet, temps zéro inclus. Les prévisions comprennent une observation initiale d’installations et les années suivantes. Aligner positions, durées et années tarifaires; les séries doivent couvrir la durée des achats en fin d’horizon. Le CLI analyse --inputs-folder, mais main transmet directement la constante de chemin configurée à import_data. Ce paramètre ne sélectionne donc pas le classeur exécuté. L’importation programmatique accepte un chemin.

Production et rémunération solaire

Pour profil ghg_h, taille KyK_y et charge LhL_h : Py,h=Kygh,Xy,h=max⁡(Py,h−Lh,0),Sy,h=Py,h−Xy,hP_{y,h}=K_yg_h,\quad X_{y,h}=\max(P_{y,h}-L_h,0),\quad S_{y,h}=P_{y,h}-X_{y,h} XX est l’export et SS l’autoconsommation. Le multiplicateur de production sur la durée est -npf.pv(r, age, 0, 1), soit (1+r)−age(1+r)^{-age}, différent de (1−r)age(1-r)^{age}. Le mesurage net valorise export et autoconsommation au tarif temporel sélectionné, puis applique multiplicateur et taxes. La facturation nette distingue les deux quantités; le tarif de rachat suit sa branche contractuelle. Les tarifs utilisent des masques mois/heures et des trajectoires d’augmentation.

Investissement, exploitation et financement

L’investissement PV vaut taille × CAPEX × (1+sales_tax)(1+sales\_tax). Le stockage ajoute puissance × durée × CAPEX et remplacements applicables. La branche solaire-stockage traite explicitement zéro, un ou deux remplacements, avec coûts futurs aux positions de durée de vie du stockage. Prévoir une couverture suffisante des coûts. Achat direct, prêt et autres financements créent des flux distincts. Mise de fonds, intérêts, taxes, incitatifs et exploitation ne sont pas interchangeables. Ils sont combinés avant le calcul économique et l’adoption; ne pas soustraire une deuxième fois les incitatifs.

Branches exactes de financement

Soit CyC_y le coût à l’acquisition yy, dd la mise de fonds, nn la durée et ryr_y le taux. Pour principal positif PP, npf.pmt donne PMT(r,n,P)=−Pr/[1−(1+r)−n]PMT(r,n,P)=-Pr/[1-(1+r)^{-n}] si rr est non nul, et −P/n-P/n sinon.
  • Direct Purchase : −Cy-C_y au temps zéro, puis zéros sur les autres lignes de durée de projet.
  • Lease : −dleaseCy-d_{lease}C_y initialement, puis nleasen_{lease} paiements. Le principal est Cy(1−dlease)+∑t>nleaseOPEXy,tC_y(1-d_{lease})+\sum_{t>n_{lease}}OPEX_{y,t}, les OPEX étant négatifs. Le code utilise la tranche d’OPEX après la durée du bail. Ce comportement implémenté ne doit pas être remplacé par une hypothèse conventionnelle de bail.
  • Toute autre chaîne entre dans la branche prêt : −dloanCy-d_{loan}C_y initialement, puis nloann_{loan} paiements PMT(ry,nloan,Cy(1−dloan))PMT(r_y,n_{loan},C_y(1-d_{loan})). Le taux est choisi dans Loan_Rate par année d’acquisition et type de client, pas par un scalaire commun.
Le tableau final est additionné au tableau purchase de durée de projet avec remplacement des cellules absentes par zéro. Une durée de paiement supérieure au projet peut donc prolonger le résultat aligné. L’exploitation est calculée séparément; conserver le retrait des OPEX initiaux propre au bail pour reproduire les flux combinés.

Applications du stockage

Revenus et économies de puissance suivent la branche d’application. L’autoconsommation utilise la première ligne de taille de stockage, calcule capacité kWh = kW × durée, recharge depuis l’export PV et décharge dans les importations sous limite de puissance : uh=min⁡(Xh,PES),vh=min⁡(Importh,PES),SOCh=clip⁡(SOCh−1+uh−vh,0,EES)u_h=\min(X_h,P_{ES}),\quad v_h=\min(Import_h,P_{ES}),\quad SOC_h=\operatorname{clip}(SOC_{h-1}+u_h-v_h,0,E_{ES}) Cette forme suppose les intervalles d’une heure du code. L’état de charge est réinitialisé au début de l’année simulée. Aucun multiplicateur explicite de rendement aller-retour n’est inclus dans cette récurrence. Les bénéfices livrés proviennent des variations d’état borné, pas des flux demandés non contraints. Ce n’est pas un arbitrage tarifaire optimisé. Les autres branches calculent séparément pointe et réponse à la demande; ne pas additionner leurs usages comme s’ils étaient simultanément disponibles sans contrainte.

Réponse financière

Pour achat/prêt, le délai alternatif d’adoption est PBalt=−NPV(cou^ts)/moyenne(beˊneˊfices)PB^{alt}=-NPV(coûts)/moyenne(bénéfices), borné à la durée du projet. Le délai résidentiel rapporté cherche séparément le dernier passage ascendant à zéro du flux cumulé, avec interpolation. Le non-résidentiel utilise ln⁡2/ln⁡(1+IRR)\ln2/\ln(1+IRR) après bornage du TRI négatif à zéro. Le stockage autonome ajuste le délai borné sur 15 ans à la durée du projet. my=exp⁡(A PByalt+B)m_y=\exp(A\,PB^{alt}_y+B) Cette branche ne plafonne pas ensuite mm à un : les coefficients doivent rester cohérents. Pour les autres financements, rr est le ratio d’économies nettes de première année à la facture initiale : m(r)={e3.93r−3.02,r<0Q(r),0<r≤1.50.99,r>1.50,r=0m(r)=\begin{cases}e^{3.93r-3.02},&r<0\\Q(r),&0<r\le1.5\\0.99,&r>1.5\\0,&r=0\end{cases} Q(r)=−0.105168269230765r5+0.875491695804174r4−2.39574227855474r3+2.28287077505825r2+0.167472319347325r+0.0490034965034988Q(r)=-0.105168269230765r^5+0.875491695804174r^4-2.39574227855474r^3+2.28287077505825r^2+0.167472319347325r+0.0490034965034988 Le cas exactement zéro découle des masques stricts. nan_to_num est appliqué au résultat de cette réponse; il ne valide pas toutes les divisions par facture nulle ni les autres métriques indéfinies.

Diffusion et adoption avant concurrence

Initialiser le temps équivalent à Time in Market, puis avancer d’un an à chaque position, même si le marché maximal diminue : Fy=1−e−(p+qy)(ty+2)1+(qy/p)e−(p+qy)(ty+2)F_y=\frac{1-e^{-(p+q_y)(t_y+2)}}{1+(q_y/p)e^{-(p+q_y)(t_y+2)}} None ou No laisse qq inchangé. Low, Moderate, High utilisent qy=q0(1+ay)q_y=q_0(1+ay) avec a=0.005,0.01,0.02a=0.005,0.01,0.02. Une autre chaîne provoque une erreur. Le candidat cumulatif est MymyFyM_ym_yF_y; ajouter les installations initiales, puis imposer le maximum cumulatif pour éviter une diminution avant concurrence.

Concurrence et annualisation

Le groupe partage segment, rémunération solaire, indicateurs incitatifs/ITC, financement, type de taille, CAPEX, augmentation tarifaire et facteur de capacité. Pour les candidats njn_j : nj′={njmax⁡k(nk)/∑knk,∑knk≠00,sinonn'_j=\begin{cases}n_j\max_k(n_k)/\sum_kn_k,&\sum_kn_k\ne0\\0,&\text{sinon}\end{cases} Le total devient le plus grand candidat, pas leur somme. Aucun maximum cumulatif après concurrence : une option peut diminuer lorsque les parts concurrentes changent. L’adoption annuelle est la différence du cumul après concurrence, avec zéro initial. Lisser les positions intérieures par moyenne précédent/courant/suivant et conserver les extrémités. Reconstituer le cumul lissé en remplaçant la première valeur annuelle par l’adoption initiale après concurrence, puis en cumulant. Ce n’est pas un lissage direct du cumul.

Sorties

La capacité PV est l’adoption cumulative lissée après concurrence × taille de l’année, avec taille initiale ajoutée. La capacité annuelle est la différence du cumul, pas nécessairement un nombre d’installations × taille constante. Le stockage utilise taille et adoption applicables. Les sorties comprennent adoption, déploiement, production, autoconsommation, incitatifs et diagnostics économiques. Respecter les conversions kW/MW et kWh/GWh avant d’agréger les sorties.

Exemples et limites

1 000 clients × fraction 0,4 × diffusion 0,25 donnent 100 candidats. Si le cumul précédent est 120, le maximum avant concurrence conserve 120. Deux candidats 100 et 50 deviennent 66,666… et 33,333…, total 100, sans arrondissement entier implicite. Contrôler factures nulles, TRI non positif/indéfini, passages du flux cumulé à zéro, couverture des coûts futurs, adoption concurrente décroissante, groupes vides et limites puissance/énergie. Les vérifications doivent conserver les axes acquisition/durée, pas seulement le total final. Les tests existants couvrent moins de cas que les branches financières/applicatives; une courbe lisse ne valide ni calibration ni hypothèses politiques.