Bonjour,
Je ne savais pas trop où poster mon post donc je le poste ici.
Je suis actuellement en stage et je fait face à un problème depuis quelque jours. Je débute en programmation informatique, et je dois écrire un algorithme d'optimisation. Malheureusement, j'ai vraiment du mal à savoir comment m'y prendre.
Je travaille sur le stockage de l'énergie, et je dois optimiser la gestion de l'unité de stockage, pour minimiser le coût pour le particulier.
On considère que ce dernier à une production et une consommation d'énergie connue un jour à l'avance.
Lorsqu'il consomme plus qu'il ne produit, il a 2 solutions pour rétablir l'équilibre : utiliser son stock d'énergie si celui-ci n'est pas vide, ou soutirer de l'énergie sur le réseau.
Dans le cas inverse où il produit plus qu'il ne consomme, il peut soit stocker son énergie ou alors la réinjecter sur le réseau.
Le but de cette optimisation est de minimiser le coût/maximiser le profit pour le particulier : il doit donc déstocker quand l'énergie du réseau est cher, et soutirer quand celle ci est peu chère. Quand il produit plus qu'il ne consomme, il vaut mieux vendre quand le prix de revente est cher, et stocker quand celui ci est peu cher. On considère bien entendu que les prix de revente et d'achat sont connus 24h à l'avance, et l'optimisation se fait sur ces 24h.
Je raisonne en puissance et voila l'expression du coût que j'ai trouvé dans le cas ou l'on consomme plus qu'on ne produit :
On note Pdst la puissance de déstockage et Psout celle de soutirage, et diff=conso-prod
Par ailleurs ak correspond au prix de revente de l'énergie, et bk le prix de soutirage sur le réseau. ak étant strictement inférieur à bk quelque soit k.
Déstocker de l'énergie revient à la payer au prix de revente car on aurait pu la revendre au lieu de l'utiliser. (pour l'instant je considère les rendements de stockage et de déstockage égaux à 1)
1 2 3 4 5 6
|
cout[k]=ak*Pdst[k]+bk*Psout
=ak*Pdst[k]+bk*(diff[k]-Pdst[k])
=(ak-bk)*Pdst[k]+bk*diff[k]
cout= somme(cout[k]pour k=1...24) |
Le but est donc de choisir le bon Pdst[k] à chaque heure.
Les contraintes sont les suivantes :
Pmin<=Pdst[k]<=max(Pmax, stock[k-1]/pas)
Et à chaque tour de boucle je dois calculer le nouveau stock qui à l'expression suivante :
stock[k]=stock[k-1]-Pdst[k]*pas
J'espère que c'est assez clair, n'hésitez pas à me poser des questions dans le cas contraire. J'aurais vraiment besoin d'un petit coup de pouce, car je ne trouve pas d'algorithme d'optimisation dont les contraintes dépendes du temps...
Partager