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 1), Exámenes de Programación Lineal

Esta guía de 50 ejercicios están diseñados para abordar problemas complejos utilizando Python. Cubre una amplia gama de temas avanzados, como optimización de producción con programación lineal, regresión lineal, simulación de Montecarlo, modelos de inventario, rutas críticas (CPM), teoría de colas (M/M/1), algoritmos de Dijkstra, suavizado exponencial, programación entera para turnos, árboles de decisión, modelos ARIMA, equilibrio de Nash, optimización de portafolio, análisis ABC de inventario. Cada ejercicio incluye enunciados detallados, soluciones implementadas en Python con bibliotecas como PuLP, scikit-learn, TensorFlow, y simulaciones con NumPy y SciPy. Está dirigido a estudiantes que buscan aplicar técnicas avanzadas de programación y análisis de datos en escenarios reales. Los ejercicios están organizados en orden de complejidad, desde problemas básicos de optimización hasta técnicas avanzadas como NSGA-II para optimización multiobjetivo y NLP para análisis de sentimiento.

Tipo: Exámenes

2024/2025

A la venta desde 16/05/2025

Apuntes-UDA
Apuntes-UDA 🇨🇱

5

(2)

392 documentos

1 / 49

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 1)
Universidad de Atacama - Facultad de Ingenieria
12 de Mayo de 2025
Ejercicio 1: Optimizaci´on de Producci´on
Enunciado: Una abrica produce tres productos (A, B, C) con:
Requerimientos:
Producto A: 2 h, 3 kg, $10 beneficio
Producto B: 4 h, 2 kg, $15 beneficio
Producto C: 3 h, 5 kg, $20 beneficio
Recursos disponibles: 100 h laborales, 150 kg materiales
Objetivo: Maximizar beneficio diario con programaci´on lineal (PuLP).
Soluci´on esperada: Cantidades ´optimas y beneficio aximo.
Ejercicio 2: Regresi´on Lineal
Enunciado: Dataset de ventas vs. publicidad (12 meses):
Publicidad (kUSD) 1.2 2.1 . . . 4.2
Ventas (kUSD) 25 38 . . . 72
Objetivo: Calcular coeficientes (β0,β1), R2y predecir ventas para $5kUSD.
Ejercicio 3: Simulaci´on de Montecarlo
Enunciado: Proyecto con:
Costos: N(µ= 1M, σ = 100K) USD
Beneficios: N(µ= 1,5M, σ = 200K) USD
Objetivo: Simular 10,000 escenarios para P(Beneficio Neto <0).
Ejercicio 4: Modelo EOQ
Enunciado: Par´ametros de inventario:
D= 10,000 unidades/a˜no
S= $50 (costo pedido)
H= $2 (costo almacenamiento/unidad/a˜no)
Objetivo: Calcular Q(EOQ) y costo total anual.
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

Vista previa parcial del texto

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

EJERCICIOS AVANZADOS DE

PROGRAMACION EN PYTHON (Parte 1)

Universidad de Atacama - Facultad de Ingenieria

12 de Mayo de 2025

Ejercicio 1: Optimizaci´on de Producci´on

Enunciado: Una f´abrica produce tres productos (A, B, C) con: Requerimientos:

  • Producto A: 2 h, 3 kg, $10 beneficio
  • Producto B: 4 h, 2 kg, $15 beneficio
  • Producto C: 3 h, 5 kg, $20 beneficio Recursos disponibles: 100 h laborales, 150 kg materiales Objetivo: Maximizar beneficio diario con programaci´on lineal (PuLP). Soluci´on esperada: Cantidades ´optimas y beneficio m´aximo.

Ejercicio 2: Regresi´on Lineal

Enunciado: Dataset de ventas vs. publicidad (12 meses): Publicidad (kUSD) 1.2 2.1... 4. Ventas (kUSD) 25 38... 72 Objetivo: Calcular coeficientes (β 0 , β 1 ), R^2 y predecir ventas para $5kUSD.

Ejercicio 3: Simulaci´on de Montecarlo

Enunciado: Proyecto con: Costos: N (μ = 1M, σ = 100K) USD Beneficios: N (μ = 1, 5 M, σ = 200K) USD Objetivo: Simular 10,000 escenarios para P (Beneficio Neto < 0).

Ejercicio 4: Modelo EOQ

Enunciado: Par´ametros de inventario: D = 10, 000 unidades/a˜no S = $50 (costo pedido) H = $2 (costo almacenamiento/unidad/a˜no) Objetivo: Calcular Q∗^ (EOQ) y costo total anual.

Ejercicio 5: Ruta Cr´ıtica (CPM)

Enunciado: Tareas del proyecto: Tarea Duraci´on (d´ıas) Predecesoras A 3 – B 5 A C 2 A D 4 B, C Objetivo: Determinar ruta cr´ıtica y duraci´on total.

Ejercicio 6: Diagrama de Pareto

Enunciado: Defectos en producci´on: Defecto Frecuencia A 120 B 60

...... Objetivo: Graficar Pareto y identificar defectos cr´ıticos (80 % acumulado).

Ejercicio 7: Teor´ıa de Colas (M/M/1)

Enunciado: Sistema con: λ = 10 clientes/hora μ = 12 clientes/hora

Objetivo: Calcular: Wq: Tiempo promedio en cola P (n > 3): Probabilidad de ¿3 clientes en sistema

Ejercicio 8: Algoritmo de Dijkstra

Enunciado: Grafo de rutas (distancias en km): Nodo B C D A 4 2 – B – – 5 C 1 – 8 Objetivo: Encontrar ruta m´as corta A→D.

Ejercicio 14: Equilibrio de Nash

Enunciado: Matriz de pagos para duopolio: Empresa A/B Bajo Medio Alto Bajo (30,25) (20,35) (10,45) Medio (40,20) (25,30) (15,40) Alto (50,15) (30,25) (20,35) Objetivo: Encontrar equilibrios puros de Nash.

Ejercicio 15: Simulaci´on de L´ınea

Enunciado: Tiempos por etapa (distribuci´on normal): Etapa 1: N (5, 1) min Etapa 2: N (7, 2) min Etapa 3: N (4, 1) min Objetivo: Simular 1,000 iteraciones para P (Tiempo total > 20 min).

Ejercicio 16: Modelo de Transporte

Enunciado: Datos de transporte: Oferta: [100, 150, 200] unidades Demanda: [80, 90, 120, 160] unidades

Costos:

Objetivo: Soluci´on inicial con esquina noroeste y costo total.

Ejercicio 17: Sensibilidad en PL

Enunciado: Problema de maximizaci´on: m´ax Z = 3x + 5y s.a. x + 2y ≤ 10 x ≤ 4 x, y ≥ 0

Objetivo: Analizar rango ´optimo para c 1 (coeficiente de x).

Ejercicio 18: Algoritmo Gen´etico

Enunciado: Distancias entre 5 ciudades (km): A B C D E A 0 10 15 20 25 B. 10 0 35 25 30 .. ... ... ... ... ...

Objetivo: Resolver TSP con DEAP (poblaci´on=50, generaciones=100).

Ejercicio 19: Control de Calidad (Cpk)

Enunciado: Proceso con: Especificaciones: LIE=10, LSE= Par´ametros: μ = 15, σ = 1, 5 Objetivo: Calcular:

Cpk = m´ın

μ − LIE 3 σ ,

LSE − μ 3 σ

Ejercicio 20: Red Neuronal

Enunciado: Dataset de demanda con: Features: Precio, temporada, PIB Target: Demanda (unidades) Objetivo: Arquitectura:

Capa Configuraci´on Entrada 3 neuronas Oculta ReLU (10 neuronas) Salida 1 neurona lineal Metrica: RMSE < 10 % del promedio.

Ejercicio 21: An´alisis ABC de Inventario

Enunciado: 500 ´ıtems con consumo anual (USD): Distribuci´on lognormal (μ = 3, σ = 1) Clasificaci´on:

  • A: 20 % ´ıtems, 80 % valor
  • B: 30 % ´ıtems, 15 % valor
  • C: 50 % ´ıtems, 5 % valor Objetivo: Implementar algoritmo de clasificaci´on ABC usando pandas.

Ejercicio 27: Teor´ıa de Colas M/M/k

Enunciado: Call center con: λ = 50 llamadas/hora μ = 30 llamadas/hora (por servidor)

Objetivo: Calcular k ´optimo para P (espera) < 10 %.

Ejercicio 28: Red LSTM para Pron´ostico

Enunciado: Serie temporal de ventas (60 meses) con: Tendencia lineal + estacionalidad anual Ruido gaussiano (σ = 5 %) Objetivo: Configurar LSTM con:

Par´ametro Valor Capas 2 LSTM (64 unidades) Dropout 0. Epocas´ 100

Ejercicio 29: Optimizaci´on de Portafolio

Enunciado: Activos financieros: Retornos = [8 %, 12 %, 5 %] Covarianza =

Objetivo: Minimizar varianza para retorno del 10 %.

Ejercicio 30: Localizaci´on de Instalaciones

Enunciado: 5 ubicaciones potenciales: Ubicaci´on Costo Fijo (kUSD) Costo Variable (USD/u) 1 10 5 (^2). 15 4 .. ... ...

Objetivo: Seleccionar ubicaciones para servir 3 clientes con demanda [100, 200, 150].

Ejercicio 31: An´alisis de Supervivencia (Kaplan-Meier)

Enunciado: Datos de falla de 100 m´aquinas: Tiempos de falla: Distribuci´on Weibull(β = 2, η = 30 meses) Datos censurados: 30 % de observaciones Objetivo: Calcular:

S(t) =

Y

i:ti≤t

1 − d nii

donde di = fallas en ti, ni = m´aquinas en riesgo.

Ejercicio 32: Sistema Multiagente (Log´ıstica Minera)

Enunciado: Simulaci´on con: 5 camiones 3 puntos de extracci´on 1 planta de procesamiento Velocidades: Uniforme(30, 50) km/h Objetivo: Implementar en Mesa y calcular:

M´etrica Valor Tiempo promedio ciclo X horas Utilizaci´on camiones Y %

Ejercicio 33: Problema de la Mochila

Enunciado: 20 proyectos con: Costos: [10, 30, ..., 25] kUSD Retornos: [15, 40, ..., 35] kUSD Presupuesto: 200 kUSD Objetivo: Resolver con programaci´on din´amica:

V [i, w] = m´ax(V [i − 1 , w], V [i − 1 , w − wi] + vi)

Ejercicio 37: Sistema de Recomendaci´on

Enunciado: Matriz 50 proyectos × 30 materiales: Ratings: 1-5 estrellas Sparsidad: 85 % Objetivo: Factorizaci´on SVD con:

ˆrui = μ + bu + bi + qiT pu

Ejercicio 38: Simulaci´on de L´ınea (SimPy)

Enunciado: Proceso de 3 etapas: Etapa Distribuci´on tiempo 1 Exponencial(λ = 0,2/min) 2 Uniforme(3,7) min 3 Normal(μ = 4, σ = 1) min Objetivo: Simular 8 horas y calcular: Throughput: Unidades/hora WIP promedio

Ejercicio 39: Regresi´on Log´ıstica

Enunciado: Dataset de 1000 clientes: Variable Tipo Rango/Escala Ingresos Num´erica [20k, 200k] USD Score cr´edito Num´erica 300- Morosidad Binaria 0/ Objetivo: Modelar con: P (Y = 1) = (^) 1 + e−(β 0 +^1 β 1 X 1 +β 2 X 2 )

Ejercicio 40: Flujo M´aximo en Redes

Enunciado: Red de distribuci´on de agua: [width=0.5]redagua.png Figura 1: Grafo con capacidades en L/s Objetivo: Aplicar algoritmo Ford-Fulkerson para encontrar flujo m´aximo fuente-sumidero.

Ejercicio 41: Modelo Lotka-Volterra

Enunciado: Competencia entre dos productos: dP 1 dt = 0,^1 P^1 −^0 ,^02 P^1 P^2 dP 2 dt = 0,^01 P^1 P^2 −^0 ,^1 P^2 Objetivo: Resolver num´ericamente con scipy.integrate.odeint y graficar: Evoluci´on temporal (0-12 meses) Diagrama de fase

Ejercicio 42: PCA para Control de Calidad

Enunciado: Dataset de 500 lecturas de sensores: 10 variables correlacionadas 5 % de observaciones an´omalas Objetivo: Reducci´on a 2 componentes principales y visualizaci´on con: Z = XW (donde W son autovectores)

Ejercicio 43: Algoritmo H´ungaro

Enunciado: Matriz de costos (horas) para asignaci´on:    

Objetivo: Encontrar asignaci´on ´optima que minimice: X^5 i=

X^5

j=

Cij Xij

sujeto a P i Xij = 1 y P j Xij = 1.

Ejercicio 44: Inventario Just-in-Time

Enunciado: Par´ametros: Par´ametro Valor Demanda diaria Poisson(λ = 15) Lead time Uniforme(1,3) d´ıas Stock inicial 30 unidades Costo stockout $100/unidad Objetivo: Simular 30 d´ıas y calcular: Service Level = 1 − N°^ Nstockouts° d´ıas

Capacidad veh´ıculo: 100 unidades Objetivo: Calcular ahorros: sij = di 0 + d 0 j − dij y optimizar rutas.

Ejercicio 49: NLP para An´alisis de Sentimiento

Enunciado: 1,000 rese˜nas en espa˜nol: 600 positivas (4-5 estrellas) 400 negativas (1-2 estrellas) Objetivo: Pipeline con:

Paso Herramienta Tokenizaci´on NLTK Vectorizaci´on TF-IDF Modelado Naive Bayes Evaluaci´on Matriz de confusi´on

Ejercicio 50: Optimizaci´on Multiobjetivo (NSGA-II)

Enunciado: Problema: m´ax f 1 (x) = 3x 1 + 2x 2 (Beneficio) m´ın f 2 (x) = x^21 + x^22 (Emisiones) s.a. x 1 + x 2 ≤ 100 x 1 , x 2 ≥ 0

Objetivo: Implementar NSGA-II con: Poblaci´on: 50 individuos Generaciones: 100 Prob. cruce: 0. Prob. mutaci´on: 0.

(SOLUCIONARIO) EJERCICIOS AVANZADOS

DE PROGRAMACION EN PYTHON (PARTE

Universidad de Atacama - Facultad de Ingenieria

12 de Mayo de 2025

Ejercicio 1: Optimizaci´on de Producci´on

1 from pulp import * 2 3 # Crear problema 4 prob = LpProblem ( " Maximizar_Beneficio " , LpMaximize ) 5 6 # Variables 7 x1 = LpVariable ( " Producto_A " , lowBound =0 , cat = ’ Integer ’) 8 x2 = LpVariable ( " Producto_B " , lowBound =0 , cat = ’ Integer ’) 9 x3 = LpVariable ( " Producto_C " , lowBound =0 , cat = ’ Integer ’) (^1011) # F u n c i n objetivo 12 prob += 10* x1 + 15* x2 + 20* x3 , " Beneficio_Total " 13 14 # Restricciones 15 prob += 2* x1 + 4* x2 + 3* x3 <= 100 , " Horas_Laborales " 16 prob += 3* x1 + 2* x2 + 5* x3 <= 150 , " Materiales " 17 18 # Resolver 19 prob. solve () 20 21 # Resultados 22 print ( f " Estado : { LpStatus [ prob. status ]} " ) 23 print ( f " ptimo : A ={ x1. varValue } , B ={ x2. varValue } , C ={ x3. varValue } " ) 24 print ( f " Beneficio M x i m o : $ { value ( prob. objective ) :.2 f } " ) Listing 1: Soluci´on con PuLP Salida esperada: Estado: Optimal ´Optimo: A=25.0, B=12.0, C=0. Beneficio M´aximo: $430.

Ejercicio 2: Regresi´on Lineal

1 import numpy as np 2 from sklearn. linear_model import LinearRegression 3 from sklearn. metrics import r2_score 4 5 # Datos

Ejercicio 5: Ruta Cr´ıtica (CPM) 1 from collections import defaultdict 2 3 tareas = { 4 " A " : { " duracion " : 3 , " predecesoras " : []} , 5 " B " : { " duracion " : 5 , " predecesoras " : [ " A " ]} , 6 " C " : { " duracion " : 2 , " predecesoras " : [ " A " ]} , 7 " D " : { " duracion " : 4 , " predecesoras " : [ " B " , " C " ]} 8 } 9 10 def calcular_ruta_critica ( tareas ) : 11 early_start = defaultdict ( int ) (^1213) for tarea in sorted ( tareas. keys () , key = lambda x : len ( tareas [ x ][ " predecesoras " ]) ) : 14 max_prev = max ([ early_start [ p ] + tareas [ p ][ " duracion " ] for p in tareas [ tarea ][ " predecesoras " ]] or [0]) 15 early_start [ tarea ] = max_prev 16 17 duracion_total = max ( early_start [ t ] + tareas [ t ][ " duracion " ] for t in tareas ) 18 return duracion_total 19 20 print ( f " D u r a c i n total : { calcular_ruta_critica ( tareas ) } d a s " ) Salida: Duraci´on total: 12 d´ıas

Ejercicio 6: Diagrama de Pareto 1 import matplotlib. pyplot as plt 2 import numpy as np (^34) defectos = { " A " : 120 , " B " : 60 , " C " : 30 , " D " : 15 , " E " : 10} 5 items = sorted ( defectos. items () , key = lambda x : -x [1]) 6 nombres , frecuencias = zip (* items ) 7 8 # Porcentaje acumulado 9 acumulado = np. cumsum ( frecuencias ) / sum ( frecuencias ) * 100 10 11 # G r f i c o 12 fig , ax = plt. subplots () 13 ax. bar ( nombres , frecuencias , color = ’ C0 ’) 14 ax2 = ax. twinx () 15 ax2. plot ( nombres , acumulado , color = ’ C1 ’ , marker = ’o ’) 16 ax2. axhline (80 , color = ’r ’ , linestyle = ’ -- ’) 17 18 ax. set_title ( " Diagrama de Pareto " ) 19 ax. set_ylabel ( " Frecuencia " ) 20 ax2. set_ylabel ( " Porcentaje Acumulado ( %)" ) 21 plt. show ()

pareto.png

Figura 1: Resultado del diagrama de Pareto

Ejercicio 7: Teor´ıa de Colas M/M/ 1 import math 2 3 lambd = 10 # Tasa llegadas ( clientes / hora ) 4 mu = 12 # Tasa servicio ( clientes / hora ) 5 6 # M t r i c a s 7 rho = lambd / mu 8 Lq = rho **2 / (1 - rho ) 9 Wq = Lq / lambd 10 P_mas_3 = rho **(3 + 1) 11 12 print ( f " Tiempo promedio en cola : { Wq *60:.1 f } minutos " ) 13 print ( f " Probabilidad >3 clientes : { P_mas_3 :.2 %} " ) Salida: Tiempo promedio en cola: 12.5 minutos Probabilidad >3 clientes: 40.19%

Ejercicio 8: Algoritmo de Dijkstra

Ejercicio 10: K-Means Clustering 1 import numpy as np 2 import matplotlib. pyplot as plt 3 from sklearn. cluster import KMeans 4 5 # Datos s i n t t i c o s 6 np. random. seed (42) 7 ingresos = np. random. normal (50 , 15 , 100) 8 gastos = ingresos * 0.6 + np. random. normal (0 , 5 , 100) 9 X = np. column_stack (( ingresos , gastos ) ) 10 11 # Modelo 12 kmeans = KMeans ( n_clusters =3). fit ( X ) 13 labels = kmeans. predict ( X ) 14 15 # G r f i c o 16 plt. scatter ( X [: ,0] , X [: ,1] , c = labels , cmap = ’ viridis ’) 17 plt. title ( " S e g m e n t a c i n de Clientes " ) 18 plt. xlabel ( " Ingresos Anuales ( kUSD ) " ) 19 plt. ylabel ( " Gastos Anuales ( kUSD ) " ) 2021 plt. grid ( True )plt. show ()

kmeans.png

Figura 2: Resultado de clustering con K-Means

Ejercicio 11: Programaci´on Entera para Turnos 1 from pulp import * 2 3 # Crear problema 4 prob = LpProblem ( " Asignacion_Turnos " , LpMinimize ) 5 6 # Variables 7 x1 = LpVariable ( " Matutino " , lowBound =5 , cat = ’ Integer ’) 8 x2 = LpVariable ( " Vespertino " , lowBound =4 , cat = ’ Integer ’) 109 x3^ =^ LpVariable ( " Nocturno " ,^ lowBound =3 ,^ cat = ’ Integer ’) 11 # F u n c i n objetivo 12 prob += 100* x1 + 120* x2 + 150* x3 , " Costo_Total " 13 14 # Restricciones 15 prob += x1 + x2 + x3 <= 10 , " Total_Trabajadores " 16 17 # Resolver 18 prob. solve () 19 20 # Resultados 21 print ( " A s i g n a c i n ptima : " ) 22 print ( f " Matutino : { x1. varValue } trabajadores " ) 23 print ( f " Vespertino : { x2. varValue } trabajadores " ) 24 print ( f " Nocturno : { x3. varValue } trabajadores " ) 25 print ( f " Costo m n i m o diario : $ { value ( prob. objective ) :.2 f } " ) Listing 2: Soluci´on con PuLP Salida esperada: Asignaci´on ´optima: Matutino: 5.0 trabajadores Vespertino: 4.0 trabajadores Nocturno: 1.0 trabajadores Costo m´ınimo diario: $1070.

Ejercicio 12: ´Arbol de Decisi´on 1 from sklearn. tree import DecisionTreeClassifier , plot_tree 2 from sklearn. model_selection import train_test_split 3 import numpy as np 4 5 # Datos s i n t t i c o s 6 np. random. seed (42) 7 X = np. random. rand (200 , 3) * [100 , 24 , 5] # Inversion , Duracion , Sector 8 y = ( X [: ,0] * 0.8 + X [: ,1] * 0.5 + np. random. normal (0 , 10 , 200) ) > 50 9 10 # Modelo 11 X_train , X_test , y_train , y_test = train_test_split (X , y , test_size =0.3) 12 model = DecisionTreeClassifier ( max_depth =3). fit ( X_train , y_train ) 13 14 # E v a l u a c i n 15 print ( f " P r e c i s i n : { model. score ( X_test , y_test ) :.2 %} " ) 16 17 # V i s u a l i z a c i n ( requiere graphviz ) 18 plt. figure ( figsize =(12 ,6) ) 19 plot_tree ( model , feature_names =[ " Inversion " , " Duracion " , " Sector " ] , (^2021) plt. show ()class_names =[ " No Rentable " , " Rentable " ] , filled = True )