You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browse the tutorials and tests for usefull code snippets and examples of use
Reproduced the issue after updating with pip install --upgrade pandapower (or git pull)
Tried basic troubleshooting (if a bug/error) like restarting the interpreter and checking the pythonpath
Reproducible Example
# -*- coding: utf-8 -*-"""Created on Thu May 9 15:30:17 2024@author: Usuario"""importpandapowerasppimportpandasaspdimportosos.environ["NUMBA_DISABLE_JIT"] ="1"Vdc=12# Crear una red vacíanet=pp.create_empty_network()
#print(pp.available_std_types(net, "line"))# Código para corregir los valores NaN en net.ext_gridnet.ext_grid['name'] =net.ext_grid['name'].fillna('bus_1')
net.ext_grid['bus'] =net.ext_grid['bus'].fillna(1)
net.ext_grid['bus'] =net.ext_grid['bus'].astype(int)
# Crear el bus 1 con coordenadas geográficasbus1=pp.create_bus(net, vn_kv=0.012, name='bus_1', geodata=(-65.4644, -18.169))
# Crear el bus 2 con coordenadas geográficasbus2=pp.create_bus(net, vn_kv=0.012, name='bus_2', geodata=(-65.4634, -18.1704))
# Crear el bus 3 con coordenadas geográficasbus3=pp.create_bus(net, vn_kv=0.012, name='bus_3', geodata=(-65.465, -18.1699))
net.bus_geodata['coords'] =net.bus_geodata.apply(lambdarow: (row['x'], row['y']), axis=1)
print(net.bus_geodata.isnull().sum())
# Agregar almacenamiento de energía a cada busstorage_capacity=712# Capacidad de almacenamiento en Whmax_p_charge=160# Potencia máxima de carga en Wmax_p_discharge=160# Potencia máxima de descarga en Wefficiency=0.95# Eficiencia de carga/descargaforbusin [bus1, bus2, bus3]:
pp.create_storage(net, bus=bus, p_mw=0, max_e_mwh=storage_capacity/1000, max_p_mw=max_p_charge, min_p_mw=-max_p_discharge, efficiency=efficiency)
# Agregar la columna 'state_of_charge_mwh' al DataFrame net.storage e inicializarla con cerosnet.storage['state_of_charge_mwh'] =0.0# Ruta del archivo CSV a importarruta_archivo="C:\\Users\\Usuario\\.spyder-py3\\data_proysolar\\df_4viviendas_30.97.csv"# Cargar el archivo CSV en un DataFramedf=pd.read_csv(ruta_archivo)
dc_line_std_type= {
"r_ohm_per_km": 1.95, # Resistencia de la línea en ohmios/km"x_ohm_per_km": 0, # Reactancia de la línea en ohmios/km"c_nf_per_km": 0, # Capacidad de carga de la línea en nF/km"max_i_ka": 88.2, # Corriente máxima admisible en kA# Otros parámetros relevantes para la línea DC
}
# Nombre del tipo estándar de línea DCdc_line_std_type_name="tipo_estandar_linea_DC"# Agregar el tipo estándar de línea DC a la rednet.std_types['line'][dc_line_std_type_name] =dc_line_std_type# Crear la línea que conecta los buses 1 y 2 utilizando el tipo estándar de línea DCpp.create_line(net, from_bus=bus1, to_bus=bus2, length_km=0.174, std_type='15-AL1/3-ST1A 0.4')
pp.create_line(net, from_bus=bus2, to_bus=bus3, length_km=0.19137, std_type='15-AL1/3-ST1A 0.4')
pp.create_line(net, from_bus=bus3, to_bus=bus1, length_km=0.03508, std_type='15-AL1/3-ST1A 0.4')
# Función para adaptar el DataFramedefadaptar_df(df, Vdc, x, y, name):
df.drop(columns=['num_pan20', 'caida_tension', 'caida_porc'], inplace=True)
df['vn_kv'] =Vdc/1000df['x'] =xdf['y'] =ydf['name'] =namedf['p_kw'] =df['gen'] /1000df.drop(columns=['gen'], inplace=True)
returndf# Adaptar el DataFramedf=adaptar_df(df, Vdc, 0, 0, 'grupo1')
"""# Agregar buses desde el DataFramefor index, row in df.iterrows(): pp.create_bus(net, vn_kv=row['vn_kv'], name=row['name'], geodata=(row['x'], row['y']))""""""# Agregar líneas desde el DataFramefor index, row in df.iterrows(): pp.create_line(net, from_bus=1, to_bus=2, length_km=0.05, std_type=dc_line_std_type_name)# Agregar cargas desde el DataFramefor index, row in df.iterrows(): pp.create_load(net, bus=bus1, p_mw=row['Demanda'] / 1e6, q_kvar=0) pp.create_load(net, bus=bus2, p_mw=row['Demanda'] / 1e6, q_kvar=0) pp.create_load(net, bus=bus3, p_mw=row['Demanda'] / 1e6, q_kvar=0) # Agregar generadores desde el DataFramefor index, row in df.iterrows(): pp.create_sgen(net, bus=bus1, p_mw=row['p_kw']/1000, q_mvar=0,sn_mva=row['p_kw']/1000, name=row['name'],slack=True) pp.create_sgen(net, bus=bus2, p_mw=row['p_kw']/1000, q_mvar=0,sn_mva=row['p_kw']/1000, name=row['name']) pp.create_sgen(net, bus=bus3, p_mw=row['p_kw']/1000, q_mvar=0,sn_mva=row['p_kw']/1000, name=row['name'])"""# Agregar generador con slack=True#pp.create_gen(net, bus=bus1, p_mw=0, vm_pu=1.0, slack=True)# Definir e inicializar los registros horarios de generación y consumo para cada nodogeneration_records= {"bus_1": [0] *24, "bus_2": [0] *24, "bus_3": [0] *24} # Registros horarios de generación inicializados en ceroconsumption_records= {"bus_1": [0] *24, "bus_2": [0] *24, "bus_3": [0] *24} # Registros horarios de consumo inicializados en cero# Función para actualizar los registros horariosdefupdate_hourly_records(df):
forindex, rowindf.iterrows():
surplus_energy=row['surplus']
unsatisfied_energy=row['energia_insatisfecha']
time_str=row['Time']
hour=int(time_str.split(':')[0]) # Extraer solo la hora desde 'HH:MM:SS'fornodein ["bus_1", "bus_2", "bus_3"]:
ifsurplus_energy>0:
generation_records[node][hour] +=surplus_energyelifunsatisfied_energy>0:
consumption_records[node][hour] +=unsatisfied_energy# Modificar los registros horarios con los datos del DataFrameupdate_hourly_records(df)
forhourinrange(24):
fornodein ["bus_1", "bus_2", "bus_3"]:
bus_index=net.bus.index[net.bus['name'] ==node]
iflen(bus_index) >0:
node_index=bus_index[0]
pp.create_gen(net, bus=node_index, p_mw=generation_records[node][hour], vm_pu=1.0, name=f'gen_hour_{hour}_{node}')
pp.create_load(net, bus=node_index, p_mw=consumption_records[node][hour], q_kvar=0, name=f'load_hour_{hour}_{node}')
#print(f"Nivel de almacenamiento en {node}: {net.storage.at[node_index, 'state_of_charge_mwh']} MWh")else:
print(f"No se encontró el nodo {node} en net.bus")
# Modificar la potencia del ext_grid según los valores de 'energia_insatisfecha' y 'surplus' multiplicados por 3p_ext_grid=sum([consumption_records[node][hour] *3fornodein ["bus_1", "bus_2", "bus_3"]]) # Multiplicar por 3 los valores de 'energia_insatisfecha'p_ext_grid-=sum([generation_records[node][hour] *3fornodein ["bus_1", "bus_2", "bus_3"]]) # Multiplicar por 3 los valores de 'surplus'net.ext_grid.at[0, 'p_mw'] =p_ext_grid"""# Crear registros horarios de generación y consumo para cada nodogeneration_records = {"bus1": [0] * 24, "bus2": [0] * 24, "bus3": [0] * 24} # Registros horarios de generación inicializados en ceroconsumption_records = {"bus1": [0] * 24, "bus2": [0] * 24, "bus3": [0] * 24} # Registros horarios de consumo inicializados en cero# Función para actualizar los registros horariosdef update_hourly_records(df): for index, row in df.iterrows(): surplus_energy = row['surplus'] unsatisfied_energy = row['energia_insatisfecha'] time_str = row['Time'] hour = int(time_str.split(':')[0]) # Extraer solo la hora desde 'HH:MM:SS' for node in ["bus1", "bus2", "bus3"]: if surplus_energy > 0: generation_records[node][hour] += surplus_energy elif unsatisfied_energy > 0: consumption_records[node][hour] += unsatisfied_energy# Actualizar los registros horarios con los datos del DataFrameupdate_hourly_records(df)# Calcular la generación y el consumo para cada nodo# Calcular la generación y el consumo para cada nodofor hour in range(24): for node in ["bus1", "bus2", "bus3"]: node_index = net.bus.index[net.bus.name == node][0] pp.create_gen(net, bus=node_index, p_mw=generation_records[node][hour], vm_pu=1.0, name=f'gen_hour_{hour}_{node}') pp.create_load(net, bus=node_index, p_mw=consumption_records[node][hour], q_kvar=0, name=f'load_hour_{hour}_{node}') print(f"Nivel de almacenamiento en {node}: {net.storage.at[node_index, 'state_of_charge_mwh']} MWh")"""# Crear generador con slack=True como bus de referencia#pp.create_gen(net, bus=bus1, p_mw=0, vm_pu=1.0, slack=True)# Crear el nodo PV para representar la generación y consumo de energía en la red#pp.create_sgen(net, bus=bus2, p_mw=0, q_mvar=0, name='PV_generation', slack=True) # Generador PV controlado# Crear líneas y buses como se hizo antes...# Función para adaptar el DataFrame como antes...# Adaptar el DataFrame como antes...# Agregar buses desde el DataFrame como antes...# Agregar cargas desde el DataFrame como antes...# Agregar generadores desde el DataFrame como antes...# Ahora la red debería estar correctamente creada en Pandapower (variable 'net')# Puedes utilizar funciones de Pandapower para analizar la red, como pp.runpp() para calcular flujos de potencia, etc.pp.runpp(net)
print(net.res_line) # Flujos de potencia en las líneas
Issue Description and Traceback
runfile('C:/Users/Usuario/Desktop/Mi ingeniería e. e/Contenidos por cursos/Cuarto curso/Octavo semestre (BOLIVIA)/RAMP/archivos_py_surplus/procesador_microred.py', wdir='C:/Users/Usuario/Desktop/Mi ingeniería e. e/Contenidos por cursos/Cuarto curso/Octavo semestre (BOLIVIA)/RAMP/archivos_py_surplus')
x 0
y 0
coords 0
dtype: int64
Traceback (most recent call last):
File ~\anaconda3\envs\ramp\lib\site-packages\spyder_kernels\py3compat.py:356 in compat_exec
exec(code, globals, locals)
File c:\users\usuario\desktop\mi ingeniería e. e\contenidos por cursos\cuarto curso\octavo semestre (bolivia)\ramp\archivos_py_surplus\procesador_microred.py:207
pp.runpp(net)
File ~\anaconda3\envs\ramp\lib\site-packages\pandapower\run.py:250 in runpp
_powerflow(net, **kwargs)
File ~\anaconda3\envs\ramp\lib\site-packages\pandapower\powerflow.py:75 in _powerflow
ppc, ppci = _pd2ppc(net)
File ~\anaconda3\envs\ramp\lib\site-packages\pandapower\pd2ppc.py:101 in _pd2ppc
net["_is_elements"] = aux._select_is_elements_numba(net, sequence=sequence)
File ~\anaconda3\envs\ramp\lib\site-packages\pandapower\auxiliary.py:798 in _select_is_elements_numba
set_elements_oos(element_df["bus"].values, element_df["in_service"].values,
File ~\anaconda3\envs\ramp\lib\site-packages\numba\core\dispatcher.py:468 in _compile_for_args
error_rewrite(e, 'typing')
File ~\anaconda3\envs\ramp\lib\site-packages\numba\core\dispatcher.py:409 in error_rewrite
raise e.with_traceback(None)
TypingError: non-precise type array(pyobject, 1d, C)
During: typing of argument at C:\Users\Usuario\anaconda3\envs\ramp\lib\site-packages\pandapower\auxiliary.py (756)
El sistema no puede encontrar la ruta especificada.
Expected Behavior
It should give the results and power fluxes in the grid.
Installed Versions
python version: 3.10.14
pandas version: 2.2.2
networkx version: 3.3
scipy version: 1.13.0
numpy version: 1.24.4
packaging version: 23.2
tqdm version: 4.66.2
deepdiff version: 7.0.1
Operating System name/version: Microsoft Windows 11 Home / 10.0.22631 N/D Compilación 22631
Label
Relevant labels are selected
The text was updated successfully, but these errors were encountered:
Bug report checklis
Searched the issues page for similar reports
Read the relevant sections of the documentation
Browse the tutorials and tests for usefull code snippets and examples of use
Reproduced the issue after updating with
pip install --upgrade pandapower
(orgit pull
)Tried basic troubleshooting (if a bug/error) like restarting the interpreter and checking the pythonpath
Reproducible Example
Issue Description and Traceback
Expected Behavior
It should give the results and power fluxes in the grid.
Installed Versions
Operating System name/version: Microsoft Windows 11 Home / 10.0.22631 N/D Compilación 22631
Label
The text was updated successfully, but these errors were encountered: