Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


EJERCICIOS AVANZADOS DE PROGRAMACION EN PYTHON (PARTE 2), Exámenes de Programación Lineal

Este documento es un conjunto de ejercicios avanzados de programación en Python, enfocados en aplicaciones de ingeniería y ciencias de la administración. Incluye 50 ejercicios que abarcan temas como optimización de producción (Ejercicio 1), modelos de inventario EOQ (Ejercicio 2), regresión lineal (Ejercicio 3), problemas de la mochila (Ejercicio 4), simulación de Montecarlo (Ejercicio 5), algoritmos de Dijkstra (Ejercicio 6), teoría de colas (Ejercicio 8), programación entera (Ejercicio 9), y modelos financieros (Ejercicio 30). Cada ejercicio presenta un enunciado detallado con datos específicos y se complementa con soluciones implementadas en Python, utilizando bibliotecas como scipy, numpy, matplotlib, y simpy. El documento está estructurado en páginas numeradas y ofrece código completo para cada solución, lo que lo hace útil como material didáctico o referencia técnica para estudiantes y profesionales en áreas relacionadas con la programación aplicada y la investigación operativa.

Tipo: Exámenes

2024/2025

A la venta desde 16/05/2025

Apuntes-UDA
Apuntes-UDA 🇨🇱

5

(2)

392 documentos

1 / 56

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
EJERCICIOS AVANZADOS DE PROGRAMACION EN
PYTHON (PARTE 2)
Universidad de Atacama - Facultad de Ingenieria
12 de Mayo de 2025
Ejercicio 1: Optimizaci´on de Producci´on
Una abrica produce tres tipos de productos (A, B, C) con los siguientes requerimientos:
Producto A: 2h mano de obra, 3kg material, beneficio $50/unidad
Producto B: 4h mano de obra, 2kg material, beneficio $80/unidad
Producto C: 3h mano de obra, 5kg material, beneficio $120/unidad
Disponibilidad semanal:
500 horas de mano de obra
400 kg de material
Se pide:
1. Implementar algoritmo de programaci´on lineal con scipy.optimize.linprog
2. Mostrar cantidad ´optima de cada producto
Ejercicio 2: Modelo EOQ
Una empresa tiene demanda anual de 10,000 unidades. Costos:
Pedido: $150
Almacenamiento: $3/unidad/a˜no
ormula EOQ:
EOQ =r2DS
H
Se pide:
1. Calcular EOQ
2. Simular comportamiento de inventario por 1 a˜no
Ejercicio 3: Regresi´on Lineal
Datos de publicidad vs ventas:
Publicidad (X) Ventas (Y)
1.2 15
2.5 20
3.6 28
4.0 30
5.8 40
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38

Vista previa parcial del texto

¡Descarga EJERCICIOS AVANZADOS DE PROGRAMACION EN PYTHON (PARTE 2) y más Exámenes en PDF de Programación Lineal solo en Docsity!

EJERCICIOS AVANZADOS DE PROGRAMACION EN

PYTHON (PARTE 2)

Universidad de Atacama - Facultad de Ingenieria

12 de Mayo de 2025

Ejercicio 1: Optimizaci´on de Producci´on

Una f´abrica produce tres tipos de productos (A, B, C) con los siguientes requerimientos: Producto A: 2h mano de obra, 3kg material, beneficio $50/unidad Producto B: 4h mano de obra, 2kg material, beneficio $80/unidad Producto C: 3h mano de obra, 5kg material, beneficio $120/unidad Disponibilidad semanal: 500 horas de mano de obra 400 kg de material Se pide:

  1. Implementar algoritmo de programaci´on lineal con scipy.optimize.linprog
  2. Mostrar cantidad ´optima de cada producto

Ejercicio 2: Modelo EOQ

Una empresa tiene demanda anual de 10,000 unidades. Costos: Pedido: $ 150 Almacenamiento: $3/unidad/a˜no F´ormula EOQ: EOQ =

r (^2) DS H Se pide:

  1. Calcular EOQ
  2. Simular comportamiento de inventario por 1 a˜no

Ejercicio 3: Regresi´on Lineal

Datos de publicidad vs ventas: Publicidad (X) Ventas (Y) 1.2 15 2.5 20 3.6 28 4.0 30 5.8 40

Se pide:

  1. Calcular regresi´on Y = aX + b con m´ınimos cuadrados
  2. Graficar resultados con matplotlib

Ejercicio 4: Problema de la Mochila

Cami´on con capacidad 1000 kg y productos: Producto Peso (kg) Valor ($) A 200 1000 B 300 1500 C 500 2000 D 100 800 Se pide:

  1. Implementar soluci´on con programaci´on din´amica
  2. Mostrar combinaci´on ´optima

Ejercicio 5: Simulaci´on de Montecarlo

Tareas cr´ıticas con duraciones inciertas: Tarea 1: N (μ = 10, σ = 2) d´ıas Tarea 2: Triangular(5, 8, 12) d´ıas Tarea 3: Uniforme(6, 14) d´ıas Criterio de fallo: Suma ¿30 d´ıas Se pide:

  1. Simular 10,000 escenarios
  2. Calcular probabilidad de fallo

Ejercicio 6: Algoritmo de Dijkstra

Red de caminos (distancias en km):

A --3-- B --5-- D --2-- F \ / \ / 1 2 4 1 \ / \ / C --6-- E Se pide:

  1. Implementar Dijkstra para encontrar ruta m´as corta A-F

Ejercicio 11: Problema del Transporte

Una empresa tiene 3 f´abricas y 4 centros de distribuci´on con los siguientes datos: Capacidades de producci´on: F1: 100 unidades F2: 200 unidades F3: 150 unidades Demandas: D1: 80 unidades D2: 120 unidades D3: 170 unidades D4: 80 unidades Costos de transporte por unidad ($): D1 D2 D3 D F1 5 3 6 2 F2 4 7 5 9 F3 8 6 4 3 Se pide:

  1. Resolver el problema de transporte usando scipy.optimize.linprog
  2. Mostrar la matriz de asignaci´on ´optima

Ejercicio 12: An´alisis de Sensibilidad

Retomando el Ejercicio 1 (Optimizaci´on de Producci´on), analizar: Escenario 1: Beneficio del Producto A aumenta 20 % Escenario 2: Disponibilidad de material se reduce a 300 kg Se pide:

  1. Recalcular la soluci´on ´optima para cada escenario
  2. Comparar con la soluci´on original

Ejercicio 13: Simulaci´on de Eventos Discretos

Taller de reparaci´on con: Llegadas: 5 clientes/hora (Poisson) Tiempo de reparaci´on: Exponencial (media = 10 minutos) Se pide:

  1. Simular 8 horas de operaci´on con simpy
  2. Calcular: Tiempo promedio de espera Utilizaci´on del taller

Ejercicio 14: Algoritmo Gen´etico

Asignaci´on de 10 cursos a 5 aulas con: Restricciones:

  • Horarios preferentes (ma˜nana/tarde)
  • Capacidad requerida Funci´on objetivo: Minimizar traslapes Se pide:
  1. Implementar algoritmo gen´etico en Python
  2. Representaci´on binaria de asignaciones

Ejercicio 15: Regresi´on Log´ıstica

Datos de 200 m´aquinas industriales con variables: Temperatura (°C) Vibraci´on (mm/s) Horas de uso Falla (0=No, 1=S´ı) Se pide:

  1. Entrenar modelo con sklearn
  2. Evaluar con matriz de confusi´on

Ejercicio 16: Modelo ARIMA

Demanda mensual de producto (´ultimos 3 a˜nos): [120, 130 ,... , 340 , 350] (24 meses) Se pide:

  1. Ajustar modelo ARIMA con statsmodels
  2. Predecir demanda para pr´oximos 3 meses

Ejercicio 17: Problema del Vendedor Viajero

Distancias entre 5 ciudades (km): A B C D E A 0 10 15 20 25 B 10 0 35 25 30 C 15 35 0 30 40 D 20 25 30 0 45 E 25 30 40 45 0 Se pide:

  1. Implementar heur´ıstica del Vecino M´as Cercano

Ejercicio 22: Planificaci´on FIFO vs SJF

Un centro de procesamiento tiene 5 tareas con tiempos de ejecuci´on: Tarea Tiempo (ms) T1 10 T2 5 T3 8 T4 2 T5 6 Se pide:

  1. Comparar el tiempo promedio de espera para: FIFO (First In First Out) SJF (Shortest Job First)
  2. Implementar ambos algoritmos en Python

Ejercicio 23: Modelo de Markov para Predicci´on de Mercado

Matriz de transici´on entre estados de mercado: Bueno Regular Malo Bueno 0.7 0.2 0. Regular 0.3 0.5 0. Malo 0.1 0.3 0. Estado inicial: [0.6, 0.3, 0.1] Se pide:

  1. Predecir la distribuci´on de estados despu´es de 5 per´ıodos
  2. Implementar la simulaci´on en Python

Ejercicio 24: Flujo M´aximo en Redes

Red de distribuci´on con capacidades (unidades/hora): A --10--> B --5--> D --15--> F \ / \ / 5 3 4 10 \ / \ / C --8--> E Se pide:

  1. Implementar el algoritmo de Ford-Fulkerson
  2. Encontrar el flujo m´aximo de A a F

Ejercicio 25: An´alisis ABC para Inventario

Consumo anual de 10 productos (en $): Producto Valor P1 5000 P2 12000 P3 3000 P4 8000 P5 1500 P6 6000 P7 2000 P8 4000 P9 10000 P10 7000 Criterios: Categor´ıa A: 80 % del valor total Categor´ıa B: 15 % del valor total Categor´ıa C: 5 % del valor total Se pide:

  1. Clasificar los productos en categor´ıas A, B y C
  2. Generar diagrama de Pareto

Ejercicio 26: Modelo de Colas M/M/k

Un banco con 3 cajeros tiene: Llegadas: 15 clientes/hora (Poisson) Servicio: 10 minutos/exponencial Se pide:

  1. Simular el sistema con simpy
  2. Calcular: Probabilidad de espera ¿5 minutos N´umero promedio de clientes en sistema

Ejercicio 27: Optimizaci´on No Lineal de Costos

Funci´on de costos y precios: C(x) = 1000 + 5x + 0, 1 x^2 P (x) = 100 − 0 , 5 x Se pide:

  1. Encontrar x que maximiza la utilidad U (x) = P (x) · x − C(x)
  2. Usar scipy.optimize.minimize

Se pide:

  1. Implementar el algoritmo de Prim en Python
  2. Encontrar la red de conexi´on m´as econ´omica
  3. Calcular el costo total m´ınimo

Ejercicio 32: Modelo de Inventario Peri´odico

Par´ametros de inventario: Revisi´on cada 30 d´ıas Demanda: N (μ = 200, σ = 40) unidades Tiempo de entrega: 5 d´ıas Nivel de servicio deseado: 95 % F´ormula punto de reorden: ROP = μLT + z · σLT donde μLT = μ · (L + T ), σLT = σ · √L + T Se pide:

  1. Calcular el punto de reorden
  2. Implementar la soluci´on en Python

Ejercicio 33: Predicci´on de Ventas con Redes Neuronales

Dataset hist´orico contiene: Variables: Precio, Gasto en publicidad, Temporada (1-4), Ventas 60 registros mensuales (5 a˜nos) Se pide:

  1. Dise˜nar arquitectura de red neuronal (1 capa oculta)
  2. Entrenar modelo con 70 % de datos
  3. Evaluar precisi´on con RMSE

Ejercicio 34: Problema de Ruteo de Veh´ıculos (VRP)

Un cami´on con capacidad 200 kg debe atender 10 clientes: Cliente Demanda (kg) C1 20 C2 30 C3 15 C4 25 C5 40 C6 35 C7 10 C8 50 C9 15 C10 30

Se pide:

  1. Implementar heur´ıstica Clark & Wright
  2. Minimizar distancia total recorrida

Ejercicio 35: An´alisis de Congesti´on con Teor´ıa de Colas

Peaje con par´ametros: Llegadas: 120 veh´ıculos/hora (Poisson) Servicio: 15 segundos/veh´ıculo (exponencial) Condici´on de estabilidad: λ < kμ Se pide:

  1. Calcular n´umero m´ınimo de cabinas para evitar cola infinita
  2. Simular el sistema con 3 cabinas

Ejercicio 36: Modelo de Lotka-Volterra

Sistema de ecuaciones para competencia empresarial: dx dt = 0,^1 x^ −^0 ,^02 xy^

dy dt = 0,^05 y^ −^0 ,^01 xy Se pide:

  1. Simular din´amica para 100 d´ıas
  2. Graficar evoluci´on de ambas empresas

Ejercicio 37: Algoritmo de Kruskal para Redes

Conexiones entre 8 almacenes con costos: Conexi´on Costo ($) A-B 150 A-C 200 B-D 180 ... ... G-H 210 Se pide:

  1. Implementar algoritmo de Kruskal
  2. Encontrar red de conexi´on m´ınima

Ejercicio 41: Planificaci´on de Producci´on con Programaci´on Din´amica

Una f´abrica debe planificar producci´on para 4 meses con demanda: Mes Demanda (unidades) 1 100 2 150 3 200 4 120 Costos: Producci´on: $10/unidad (≤ 150), $8/unidad (> 150) Almacenamiento: $1.5/unidad/mes Capacidad almac´en: 100 unidades Se pide:

  1. Implementar soluci´on con programaci´on din´amica
  2. Mostrar plan ´optimo de producci´on

Ejercicio 42: Modelo de Descuento por Cantidad

Un proveedor ofrece descuentos: Rango (unidades) Precio ($/unidad) 0-500 50 501-1000 45 1001+ 40 Par´ametros: Demanda anual: 5,000 unidades Costo pedido: $ 200 Costo almacenamiento: 20 % valor/unidad/a˜no Se pide:

  1. Calcular EOQ para cada tramo
  2. Determinar cantidad ´optima global

Ejercicio 43: Algoritmo de Bellman-Ford

Red de transporte con posibles ganancias (costos negativos): A --(-2)--> B --3--> C | | ^ |4 |-1 | v | | D --2----- E --5----- Se pide:

  1. Implementar Bellman-Ford en Python
  2. Encontrar ruta m´as rentable”de A a C

Ejercicio 44: Segmentaci´on de Clientes con K-means

Dataset de 200 clientes con: Gasto anual ($) Frecuencia de compras (veces/a˜no) Edad Se pide:

  1. Aplicar K-means con k=
  2. Visualizar clusters en 2D
  3. Interpretar segmentos

Ejercicio 45: Simulaci´on de L´ınea de Ensamble

Estaciones de trabajo: Estaci´on Tiempo (min) 1 U(3,5) 2 N(4,1) 3 Exp(6) 4 2 (constante) Se pide:

  1. Simular 8 horas de operaci´on
  2. Identificar cuello de botella
  3. Calcular throughput

Ejercicio 46: Modelo de Huff para Ubicaci´on

Datos para 2 ubicaciones potenciales: Zona Poblaci´on Distancia A (km) Distancia B (km) 1 1000 2 4 2 2000 5 1 3 1500 3 6 Modelo: Pij = Sj^ /T^ ijλ P(Sj /T λ ij )^

(λ = 1,5) Se pide:

  1. Calcular probabilidades de atracci´on
  2. Recomendar mejor ubicaci´on

(SOLUCIONARIO) EJERCICIOS AVANZADOS DE

PROGRAMACION EN PYTHON (PARTE 2)

Universiad de Atacama - Facultad de Ingenieria

12 de Mayo de 2025

Ejercicio 1: Optimizaci´on de Producci´on

1 from scipy. optimize import linprog 2 3 # Coeficientes de la funcion objetivo ( maximizar beneficios -> minimizar negativos ) 4 c = [ -50 , -80 , -120] # Coeficientes negativos para maximizar (^56) # Coeficientes de las restricciones 7 A = [ 8 [2 , 4 , 3] , # Horas de mano de obra 9 [3 , 2 , 5] # Kg de material 10 ] 11 b = [500 , 400] # L m i t e s de recursos 12 13 # L m i t e s de p r o d u c c i n ( x >= 0) 14 bounds = [(0 , None ) , (0 , None ) , (0 , None ) ] 15 16 # Resolver el problema 17 result = linprog (c , A_ub =A , b_ub =b , bounds = bounds , method = ’ highs ’) 18 19 # Mostrar resultados 20 print ( f " Producto A : { result. x [0]:.2 f } unidades " ) 21 print ( f " Producto B : { result. x [1]:.2 f } unidades " ) 22 print ( f " Producto C : { result. x [2]:.2 f } unidades " ) 23 print ( f " Beneficio maximo : $ { - result. fun :.2 f } " ) Listing 1: Soluci´on Programaci´on Lineal

Ejercicio 2: Modelo EOQ

1 import math 2 import matplotlib. pyplot as plt 3 4 # P a r m e t r o s del modelo 5 D = 10000 # Demanda anual 6 S = 150 # Costo de pedido 7 H = 3 # Costo de almacenamiento 8 9 # Calcular EOQ 10 EOQ = math. sqrt ((2 * D * S ) / H ) 11 print ( f " Cantidad economica de pedido ( EOQ ) : { EOQ :.2 f } unidades " ) 12 13 # Simulacion de inventario 14 months = 12 15 demand_monthly = D / 12 16 inventory = EOQ 17 time = [] 18 inventory_level = [] 19 2021 for monthtime. append ( month ) in range ( months ) :

22 inventory_level. append ( inventory ) 23 inventory -= demand_monthly 2425 if inventoryinventory <== 0:EOQ # Realizar nuevo pedido 26 27 # Graficar 28 plt. figure ( figsize =(10 , 5) ) 29 plt. plot ( time , inventory_level , ’b - ’ , marker = ’o ’) 30 plt. title ( ’ Comportamiento del Inventario ( Modelo EOQ ) ’) 31 plt. xlabel ( ’ Mes ’) 32 plt. ylabel ( ’ Nivel de Inventario ’) 33 plt. grid ( True ) 34 plt. show () Listing 2: Soluci´on Modelo de Inventario

Ejercicio 3: Regresi´on Lineal 1 import numpy as np 2 import matplotlib. pyplot as plt 3 4 # Datos 5 X = np. array ([1.2 , 2.5 , 3.6 , 4.0 , 5.8]). reshape ( -1 , 1) 67 Y = np. array ([15 , 20 , 28 , 30 , 40]) 8 # Calcular coeficientes 9 X_mean = np. mean ( X ) 10 Y_mean = np. mean ( Y ) 11 numerator = np. sum (( X - X_mean ) * ( Y - Y_mean ) ) 12 denominator = np. sum (( X - X_mean ) ** 2) 13 b = numerator / denominator 14 a = Y_mean - b * X_mean 15 16 print ( f " Ecuacion de regresion : Y = { a :.2 f } + { b :.2 f } X " ) 17 18 # Graficar 19 plt. scatter (X , Y , color = ’ blue ’ , label = ’ Datos reales ’) 20 plt. plot (X , a + b *X , color = ’ red ’ , label = ’ Regresion lineal ’) 21 plt. title ( ’ Regresion Lineal : Publicidad vs Ventas ’) 22 plt. xlabel ( ’ Gasto en Publicidad ( miles $ ) ’) 23 plt. ylabel ( ’ Ventas ( miles unidades ) ’) 24 plt. legend () 25 plt. grid ( True ) 26 plt. show () Listing 3: Soluci´on Regresi´on Lineal

Ejercicio 4: Problema de la Mochila 1 def mochila ( capacidad , pesos , valores , n ) : 2 # Crear tabla DP 3 dp = [[0 for _ in range ( capacidad + 1) ] for _ in range ( n + 1) ] 4 5 for i in range (1 , n + 1) : 6 for w in range (1 , capacidad + 1) : 7 if pesos [i -1] <= w : 8 dp [ i ][ w ] = max ( valores [i -1] + dp [i -1][ w - pesos [i -1]] , dp [i -1][ w ]) 9 else : 10 dp [ i ][ w ] = dp [i -1][ w ] 11 12 return dp [ n ][ capacidad ] 13 14 # Datos del problema 15 capacidad = 1000 16 pesos = [200 , 300 , 500 , 100]

33 costo , ruta = dijkstra ( grafo , ’A ’ , ’F ’) 34 print ( f " Ruta mas corta : { ruta } con costo { costo } km " ) Listing 6: Soluci´on Ruta M´as Corta

Ejercicio 7: Diagrama de Pareto 12 importimport matplotlib. pyplotnumpy as np as plt 3 4 # Datos 5 defectos = [ ’ Raspadura ’ , ’ Mancha ’ , ’ Deformacion ’ , ’ Falta de pieza ’] 6 frecuencias = [45 , 30 , 15 , 10] 7 8 # Ordenar datos 9 indices = np. argsort ( frecuencias ) [:: -1] 10 defectos_ordenados = [ defectos [ i ] for i in indices ] 11 frecuencias_ordenadas = [ frecuencias [ i ] for i in indices ] 12 13 # Calcular porcentaje acumulado 14 acumulado = np. cumsum ( frecuencias_ordenadas ) 15 acumulado = 100 * acumulado / acumulado [ -1] 16 17 # Graficar 18 fig , ax1 = plt. subplots ( figsize =(10 , 6) ) 19 ax1. bar ( defectos_ordenados , frecuencias_ordenadas , color = ’b ’) 20 ax1. set_xlabel ( ’ Tipos de Defectos ’) 21 ax1. set_ylabel ( ’ Frecuencia ’ , color = ’b ’) 22 23 ax2 = ax1. twinx () 24 ax2. plot ( defectos_ordenados , acumulado , ’r - ’ , marker = ’o ’) 2526 ax2. set_ylabel ( ’ Porcentajeax2. set_ylim ([0 , 110]) Acumulado ’ , color = ’r ’) 27 28 plt. title ( ’ Diagrama de Pareto de Defectos ’) 29 plt. grid ( True ) 30 plt. show () Listing 7: Soluci´on An´alisis de Pareto

Ejercicio 8: Modelo de Colas M/M/ 1 import math (^23) # Parametros 4 lambda_ = 10 # Tasa de llegadas ( clientes / hora ) 5 mu = 15 # Tasa de servicio ( clientes / hora ) 6 7 # Calculos 8 rho = lambda_ / mu 9 10 if rho < 1: 11 L = rho / (1 - rho ) # Numero esperado en sistema 12 Lq = rho **2 / (1 - rho ) # Numero esperado en cola 13 W = 1 / ( mu - lambda_ ) # Tiempo en sistema 14 Wq = rho / ( mu - lambda_ ) # Tiempo en cola 15 16 print ( f " Factor de utilizacion (\ rho ) : { rho :.2 f } " ) 17 print ( f " Clientes promedio en sistema : { L :.2 f } " ) 18 print ( f " Clientes promedio en cola : { Lq :.2 f } " ) 19 print ( f " Tiempo promedio en sistema : { W *60:.2 f } minutos " ) 20 print ( f " Tiempo promedio en cola : { Wq *60:.2 f } minutos " ) 21 else : 22 print ( " El sistema es inestable (\ rho >= 1) " ) Listing 8: Soluci´on Teor´ıa de Colas

Ejercicio 9: Programaci´on Entera 1 from pulp import * 2 3 # Crear problema 4 prob = LpProblem ( " Asignacion_Enfermeras " , LpMinimize ) 5 6 # Definir variables 7 dias = 7 8 enfermeras = 10 9 turnos = [ ’ m a a n a ’ , ’ tarde ’ , ’ noche ’] 10 11 # Variables de decision 12 x = LpVariable. dicts ( " x " , 13 [( i , j , k ) for i in range ( enfermeras ) 14 for j in range ( dias ) 15 for k in turnos ] , 16 cat = ’ Binary ’) 17 18 # Funcion objetivo ( minimizar total de asignaciones ) 19 prob += lpSum ( x [( i , j , k ) ] for i in range ( enfermeras ) 20 for j in range ( dias ) 2122 for k in turnos ) 23 # Restricciones 24 for j in range ( dias ) : 25 for k in turnos : 26 # Minimo 3 enfermeras por turno 27 prob += lpSum ( x [( i , j , k ) ] for i in range ( enfermeras ) ) >= 3 28 29 for i in range ( enfermeras ) : 30 # Maximo 5 dias consecutivos 31 for j in range ( dias - 5) : 32 prob += lpSum ( x [( i , j + d , k ) ] for d in range (5) 33 for k in turnos ) <= 5 34 35 # Resolver 36 prob. solve () 37 print ( " Estado : " , LpStatus [ prob. status ]) 38 print ( " Asignaciones totales : " , value ( prob. objective ) ) Listing 9: Soluci´on Asignaci´on de Turnos

Ejercicio 10: Suavizado Exponencial 1 import pandas as pd 2 3 # Datos historicos 4 ventas = [120 , 135 , 140 , 150 , 160 , 170 , 185 , 190 , 210 , 200 , 220 , 230] 5 alpha = 0. 6 7 # Inicializar 8 pronostico = [ ventas [0]] # Primer pronostico = primer dato real 9 10 # Calcular pronosticos 11 for i in range (1 , len ( ventas ) ) : 12 pronostico. append ( alpha * ventas [i -1] + (1 - alpha ) * pronostico [i -1]) 13 14 # Pronostico para el proximo mes 15 prox_mes = alpha * ventas [ -1] + (1 - alpha ) * pronostico [ -1] 16 print ( f " Pronostico para el proximo mes : { prox_mes :.2 f } unidades " ) 17 18 # Graficar 19 meses = list ( range (1 , len ( ventas ) +1) ) 20 plt. plot ( meses , ventas , ’b - ’ , label = ’ Ventas Reales ’) 21 plt. plot ( meses , pronostico , ’r - - ’ , label = ’ Pronosticos ’)