/ Proyectos / Industria / Sintonización de controladores PID

Sintonización de controladores PID: error compuesto y búsqueda en árbol binario

Optimizar las ganancias Kp, Ki y Kd de un PID no es minimizar un solo número: es balancear velocidad, sobreimpulso y esfuerzo de control en una sola función objetivo.

9 min de lectura Python · SciPy · JavaScript Planta: función de transferencia de un actuador industrial Aplicable a tesis y proyectos de control industrial
Respuesta al escalón de un lazo de control PID comparando distintas combinaciones de ganancias sintonizadas con búsqueda heurística

El objetivo era encontrar las ganancias Kp, Ki y Kd de un controlador PID para una planta modelada como función de transferencia, sin recurrir a prueba y error manual ni quedarse en el resultado genérico de Ziegler-Nichols. El punto de partida fue un notebook que hacía una búsqueda en malla y elegía la combinación con menor error cuadrático medio (MSE).

El problema real: minimizar solo el MSE encontraba ganancias que, en simulación, parecían buenas en promedio pero oscilaban alrededor de la referencia o exigían una señal de control demasiado agresiva para un actuador físico. El hallazgo más importante no fue el algoritmo de búsqueda, fue la función objetivo. Componer el error con seis criterios, no uno, cambió por completo qué combinaciones terminaban en el top del ranking.


Mapa del casoContenido


Estructura de alto nivelDiagrama de la solución

Fuente Modelo de la planta G(s) Fuente Rango de ganancias Kp Ki Kd Grid de combinaciones (10×10×10) Simulación lazo cerrado PID + planta Desempeño IAE · OS · Tr Esfuerzo y estabilidad Error compuesto ponderado (6 métricas) Árbol binario ordenado por error compuesto Selección Top-3 menor error compuesto Ganancias PID validadas

Pasa el cursor sobre cada bloque para ver qué hace ese paso.

La malla de combinaciones y la simulación en lazo cerrado se mantuvieron separadas del cálculo del error compuesto, porque combinar demasiado pronto habría hecho más difícil auditar por qué una combinación quedaba mejor rankeada que otra.

Pruébalo con tu propia planta

Mismo motor del notebook (malla logarítmica + error compuesto + árbol binario), corriendo en tu navegador. No se envía nada a ningún servidor.

Planta G(s)

G(s) = (b1·s + b0) / (a2·s² + a1·s + a0)

Rango de búsqueda
Búsqueda y simulación
#KpKiKd Error compuestoIAEOvershootTr (s)
Referencia (escalón) Top-1 Top-2 Top-3

El error compuesto pondera IAE (30%), overshoot (20%), tiempo de subida (15%), energía de control (15%), error estacionario (10%) y oscilación (10%) — igual que en el notebook del repositorio. Esto es una herramienta de exploración: antes de llevar estas ganancias a un controlador físico, valida el modelo de planta con datos reales y respeta los límites de saturación y anti-windup de tu actuador.


Cómo se construyóConstrucción de la solución

Condiciones del proyecto

RestricciónDato
Objetivo inicialEncontrar Kp, Ki, Kd que minimicen el error de seguimiento sin sacrificar estabilidad ni esfuerzo de control
Planta disponibleModelo de función de transferencia de segundo orden, sin acceso a hardware real durante la sintonización
Métrica inicial del notebookMSE puro sobre una referencia senoidal
Presupuesto de cómputoMalla de 10×10×10 combinaciones, cada una con una simulación completa del lazo cerrado
OpciónPor qué se descartó
Usar solo MSE como función objetivoMinimiza el error promedio pero ignora sobreimpulso, esfuerzo de control y oscilación: puede converger a ganancias agresivas e inestables en la práctica
Ordenar candidatos con sort() simple sobre una listaFunciona, pero no deja una estructura lista para insertar nuevas evaluaciones sin reordenar todo desde cero
Error compuesto ponderado (IAE + overshoot + tiempo de subida + energía de control + error estacionario + oscilación) + árbol binario ordenado por errorConcentra la búsqueda en candidatos realmente utilizables en un controlador físico, y deja la estructura lista para escalar a una búsqueda incremental

Pasos

1

Definición de la función objetivo

Agente: propuso minimizar solo el MSE del error de seguimiento.
Criterio aplicado: componer el error con IAE, overshoot, tiempo de subida, energía de control y error estacionario, cada uno con su propio peso, para evitar ganancias que minimizan el promedio del error pero generan sobreimpulso o gasto de energía excesivo.

2

Señal de referencia usada para sintonizar

Agente: usó una referencia senoidal para explorar la respuesta dinámica durante la búsqueda.
Criterio aplicado: cambiar a una rampa senoidal suave, sin discontinuidades de derivada, porque una referencia con cambios bruscos sesga la búsqueda hacia ganancias que responden bien a esa forma de entrada, no necesariamente a un escalón real.

3

Penalización de oscilaciones

Agente: no consideraba directamente la oscilación alrededor de la referencia, solo el error promedio.
Criterio aplicado: contar los cruces entre la salida y la referencia y sumar esa penalización al error compuesto, porque dos configuraciones con el mismo IAE pueden tener comportamientos muy distintos: una estable y otra oscilando de forma sostenida.

4

Estructura de datos para ordenar candidatos

Agente: ordenaba los resultados con sort() sobre una lista de diccionarios.
Criterio aplicado: insertar cada candidato en un árbol binario ordenado por error compuesto, de forma que el recorrido inorden entregue siempre el ranking completo, dejando la estructura lista para escalar a una búsqueda incremental, por ejemplo agregando generaciones de un algoritmo genético sin reprocesar todo desde cero.

Proceso de iteración

Ajuste documentado, no forzado

Las primeras corridas, con MSE puro como única métrica, entregaban un top-3 con sobreimpulsos de más de 30% y oscilaciones sostenidas alrededor de la referencia, aunque el MSE reportado fuera bajo. Al introducir el error compuesto, el ranking cambió por completo: las ganancias con menor "error" ya no eran las de menor MSE, sino las que balanceaban las seis métricas. Un efecto secundario esperable de una búsqueda en malla: el óptimo tendió a quedar en el borde del rango explorado para Kp y Ki, señal de que, en un proyecto real, el rango debería ampliarse o acotarse según los límites físicos del actuador, no dejarse arbitrario. Comparado contra Ziegler-Nichols, el error compuesto redujo tanto el sobreimpulso como el tiempo de asentamiento; comparado contra los resultados de Algoritmo Genético y Evolución Diferencial reportados en la literatura, la malla logarítmica con error compuesto llegó a soluciones de calidad comparable sin necesidad de implementar operadores de cruce y mutación completos.


CierreLecciones importantes

El trabajo de mayor impacto ocurrió antes de tocar el algoritmo de búsqueda. Componer el error con seis criterios en vez de uno fue más determinante para el desempeño real del controlador que cambiar la malla logarítmica por un Algoritmo Genético o Evolución Diferencial. Una función objetivo mal planteada optimiza perfectamente el número equivocado.

Este proyecto se queda deliberadamente en sintonización offline con un modelo conocido de la planta. El siguiente paso natural, para una planta cuyos parámetros cambian con el tiempo, es un esquema de reajuste online de las ganancias. Un buen punto de partida documentado, aplicado a un sector industrial real, es este trabajo sobre modelos neuro-difusos para el ajuste en línea de controladores PID: A Neuro-Fuzzy Model for Online Optimal Tuning of PID Controllers in Industrial System Applications to the Mining Sector. Para una revisión más amplia de algoritmos metaheurísticos aplicados a PID, esta referencia de acceso abierto es un buen mapa del estado del arte: Metaheuristic algorithms for PID controller parameters tuning: review, approaches and open problems.

Termina ya tu proyecto

¿Tienes un proyecto similar y no sabes por dónde empezar? Yo te ayudo a diseñarlo.

El 92% de los profesionales de datos desbloquea sus proyectos al ver ejemplos completos resueltos.

54
proyectos
8
sectores
100%
aplicado

Sin registro. Acceso inmediato