Optimización de la planta de turbinas eólicas en Scipy
Estoy trabajando en un proyecto (usando la biblioteca definida por el usuario pywake) y he escrito el siguiente código:
enter code here
import numpy as np
from py_wake.examples.data.hornsrev1 import V80
from py_wake.examples.data.hornsrev1 import Hornsrev1Site # Trabajamos con el sitio Horns Rev 1, que ya viene configurado con PyWake.
from py_wake.examples.data.hornsrev1 import wt_x, wt_y # Las coordenadas de diseño existentes también están disponibles en PyWake.
from py_wake import BastankhahGaussian
import function
site = Hornsrev1Site()
x, y = site.initial_position.T
windTurbines = V80()
wf_model = BastankhahGaussian(site, windTurbines)
c=np.random.randint(0,2,size=len(x))
c=np.random.randint(0,2,size=len(x)) # Interruptor de WT apagado/encendido
print(c)
x_new,y_new=function.funC(x, y, c)
print(wf_model)
Ejecutar simulación de parque eólico
sim_res = wf_model(x_new, y_new, # Posiciones de la turbina eólica
h=None, # Alturas de la turbina eólica (por defecto definidas en windTurbines)
type=0, # Tipos de turbina eólica
wd=None, # Dirección del viento (por defecto site.default_wd (0,1,…,360 si no se ha sobreescrito))
ws=None, # Velocidad del viento (por defecto site.default_ws (3,4,…,25m/s si no se ha sobreescrito))
)
print(sim_res.aep().sum())
Solo para aclarar un poco el código, ingresamos datos sobre un parque eólico y luego realizamos la simulación y obtenemos la salida de energía de la turbina eólica (print(sim_res.aep().sum())).
Ahora he definido una nueva variable (c) en la que tenemos dos valores 0 y 1. Si c = 1, decimos que esa turbina eólica está encendida, de lo contrario estará apagada y la producción de energía disminuirá.
Ahora, usando los scripts definidos, quiero hacer una optimización en Scipy mediante el uso de la función de penalización: quiero maximizar la producción de energía cambiando los valores de c. Es decir, queremos encender y apagar diferentes turbinas eólicas y ver la producción de energía de salida. Sé que el valor optimizado es cuando todos los parámetros en c son uno, pero hay algunos límites, por lo que necesito usar la función de penalización. ¿Podría ayudarme a optimizar la producción de energía mediante el uso de c y la función de penalización?
davy.ai
Para optimizar la producción de energía cambiando los valores de la variable “c” usando la función de penalización en Scipy, podemos seguir los siguientes pasos:
La variable solución contendrá el valor optimizado para “c” que maximiza la producción de energía mientras satisface la restricción impuesta. Podemos acceder al valor optimizado utilizando “solución.x”. Tenga en cuenta que la función de restricción puede necesitar ajustarse en función del problema y las restricciones específicas.