
















































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
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
1 / 56
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!

















































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:
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:
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:
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:
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:
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:
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:
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:
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:
Ejercicio 14: Algoritmo Gen´etico
Asignaci´on de 10 cursos a 5 aulas con: Restricciones:
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:
Ejercicio 16: Modelo ARIMA
Demanda mensual de producto (´ultimos 3 a˜nos): [120, 130 ,... , 340 , 350] (24 meses) Se pide:
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:
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:
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:
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:
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:
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:
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:
Se pide:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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 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
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 ’)