años = 60 # cantidad de años a evaluar el VAN itera= 3 # cantidad de iteraciones del VAN por cada año # nota: si sale un error al finalizar es posible que tengas una #cantidad de años que supera el recurso disponible, es bueno ver en # los resultados, el ultimo año con resultados para ir ajustado # Lista para almacenar los valores de VAN en cada iteración valores_VAN = [] valores_GOC = [] # Inicialización de la variable para el cálculo del inventario Qmc_anual_anterior = 0 # Inicialización de la variable para la iteración nuevo_B_anual_anterior = 0 # Definir la función para calcular el nuevo beneficio anual def calcular_nuevo_beneficio_anual(B_anual, Qmc_anual, Qcc_anual, Qrc_anual, i, T): nuevo_B_anual = (2204.6 * (s - r) * Qrc_anual * 1000000 - m * Qmc_anual * 1000000 - c * Qcc_anual * 1000000 - f * 1000000) / 1000000 VAN = nuevo_B_anual * ((((1 + i) ** T) - 1) / (((1 + i) ** T) * i)) return nuevo_B_anual, VAN # Iterar para cada año for year in range(1, años): print(f"Año {year}:") # Calcular Qmc_anual para el año actual Qmc_anual = Qmc_anual_anterior if year > 1 else 0 # Actualizar el inventario para el año actual df['Ton Parcial'] -= Qmc_anual / len(df) # Asegurarnos de que los valores no sean negativos df['Ton Parcial'] = df['Ton Parcial'].clip(lower=0) # Crear DataFrame df_original = df.copy() # Crear una copia del DataFrame original # Crear la columna 'Xi' que es el promedio entre 'Inferior' y 'Superior' df['Xi'] = (df['Inferior'] + df['Superior']) / 2 # Calcular el tonelaje acumulado desde abajo hacia arriba df['ton_acum'] = df['Ton Parcial'][::-1].cumsum()[::-1] # Crear la columna 'Fino' que es la multiplicación de 'Xi' por 'Ton Parcial' dividido entre 100 df['Fino'] = (df['Xi'] * df['Ton Parcial']) / 100 # Calcular el fino acumulado desde abajo hacia arriba df['fino_acum'] = df['Fino'][::-1].cumsum()[::-1] # Calcular la Ley Media Ponderada df['LeyMedia'] = (df['fino_acum'] / df['ton_acum']) * 100 # Calcular el tonelaje total ton_total = df['Ton Parcial'].sum() # Crear la columna 'Qm' que es el tonelaje acumulado dividido en el tonelaje total, multiplicado por 100 df['Qm'] = ton_total # Crear la columna 'Qc' que es el tonelaje acumulado dividido en el tonelaje total, multiplicado por 100 df['Qc'] = (df['ton_acum'] / ton_total) * 100 # Crear la columna 'Qr' que es el fino acumulado df['Qr'] = ton_total * df['Qc'] / 100 * df['LeyMedia'] / 100 * y # Crear la columna 'Qr2' que es el fino acumulado df['Qr2'] = C * df['LeyMedia'] * (y / 100) print(df) # Iterar para cada iteración dentro del año for iteracion in range(1, itera): print(f"Iteración {iteracion}:") ###opcion que cada año comience con B de la ultima iteracion #Inicialización de variables para el primer año if iteracion == 1 and year == 1: B_anual_actual = 0 else: #Usar el beneficio anual obtenido en la última iteración del año anterior como B_anual inicial B_anual_actual = nuevo_B_anual_anterior ###opcion que cada año comience con B=0 #if iteracion == 1: # # En la primera iteración de cada año, establecer B_anual_actual en 0 # B_anual_actual = 0 #else: # # En las iteraciones posteriores dentro del mismo año, utilizar el beneficio anual calculado en la iteración anterior # B_anual_actual = nuevo_B_anual_anterior # Imprimir el beneficio anual actual print(f"B_anual_actual en Iteración {iteracion}, Año {year}: {B_anual_actual}")