File size: 1,880 Bytes
b02cacc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import pandas as pd
# Definir los flujos de efectivo de cada proyecto
data = {
'Proyecto 1': [100, 110, 120, 130, 140],
'Proyecto 2': [100, 100, 100, 100, 200],
'Proyecto 3': [110, 120, 110, 120, 110],
'Proyecto 4': [150, 140, 130, 120, 110]
}
# Crear DataFrame con los flujos de efectivo
df = pd.DataFrame(data)
# Calcular el flujo de efectivo neto (FEN) para cada proyecto
def calcular_fen(flujos, tasa_descuento):
fen = 0
for i, flujo in enumerate(flujos):
fen += flujo / ((1 + tasa_descuento) ** (i + 1))
return fen
tasas_descuento = [0.1, 0.1, 0.1, 0.1, 0.1] # Suponiendo una tasa de descuento del 10% para todos los proyectos
df['FEN'] = df.apply(lambda row: calcular_fen(row.values, tasas_descuento), axis=1)
# Calcular la inversi贸n inicial para cada proyecto
inversiones_iniciales = {
'Proyecto 1': 0,
'Proyecto 2': 0,
'Proyecto 3': 0,
'Proyecto 4': 0
}
# Elegir los proyectos 贸ptimos para diferentes budgets
def elegir_proyectos_optimos(budget):
proyectos_optimos = []
df_temp = df.copy()
df_temp['Ranking'] = df_temp['FEN'] / df_temp.sum(axis=1)
df_temp = df_temp.sort_values(by='Ranking', ascending=False)
acumulado = 0
for index, row in df_temp.iterrows():
if acumulado + row[index] <= budget:
proyectos_optimos.append(index)
acumulado += row[index]
return proyectos_optimos
# a) Budget = 800
budget_a = 800
proyectos_a = elegir_proyectos_optimos(budget_a)
print(f"Proyectos 贸ptimos para un budget de {budget_a}: {proyectos_a}")
# b) Budget = 1200
budget_b = 1200
proyectos_b = elegir_proyectos_optimos(budget_b)
print(f"Proyectos 贸ptimos para un budget de {budget_b}: {proyectos_b}")
# c) Budget = 2400
budget_c = 2400
proyectos_c = elegir_proyectos_optimos(budget_c)
print(f"Proyectos 贸ptimos para un budget de {budget_c}: {proyectos_c}") |