scieee AI-readable full text Open interactive document viewer

Estudio de la Enfermedad de la Fibromialgia como Sistema de Control

Pastor Alfaro, Andrés

Abstract

La fibromialgia -caracterizada por la hipersensibilidad y por un fuerte dolor musculoesquelético crónico-, es un desorden corporal sin cura universal cuyo tratamiento resulta arduo debido a las causas pseudo-desconocidas de la enfermedad. El objetivo principal de este material es facilitar el tratamiento del desorden de la fibromialgia mediante procedimientos propios de la ingeniería de control, buscando localizar el método que mejor se adapte a las necesidades del paciente y del equipo médico asociado en su lucha contra los significativos síntomas de esta enfermedad. Por otro lado, y como objetivo secundario, este trabajo presenta un desarrollo completo de varias metodologías de control con apoyo de la herramienta MATLAB®, sirviendo como caso ejemplo de aplicación de dichos procedimientos y facilitando así la adaptación de las tecnologías aplicadas a otros proyectos de índole similar, apoyando por tanto el uso de nuevas técnicas en el área de la salud y otros campos complejos que pueden beneficiarse de las ventajas asociadas a la ingeniería de control.

Full text

Equation Chapter 1 Section 1 Proyecto Fin de Carrera Ingeniería Electrónica, Robótica y Mecatrónica Estudio de la Enfermedad de la Fibromialgia como Sistema de Control Autor: Andrés Pastor Alfaro Tutor: Ascensión Zafra Cabeza Dpto. de Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019 Proyecto Fin de Carrera Ingeniería Electrónica, Robótica y Mecatrónica Estudio de la Enfermedad de la Fibromialgia como Sistema de Control Autor: Andrés Pastor Alfaro Tutor: Asunción Zafra Cabeza Profesora titular Dpto. de Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019 Proyecto Fin de Carrera: Estudio de la Enfermedad de la Fibromialgia como Sistema de Control Autor: Andrés Pastor Alfaro Tutor: Asunción Zafra Cabeza El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: El Secretario del Tribunal: Fecha: A mi familia, porque aunque somos pocos en comparación con todo el mundo, he aprendido más del mundo con ellos que con los siete mil millones de personas restantes. A mis compañeros de clase y a mi hermano, porque en la vida nadie pelea solo. A mi tutora, Asunción, por darme la oportunidad de aprender que los problemas no comprenden de disciplinas académicas 3 Resumen a fibromialgia -caracterizada por la hipersensibilidad y por un fuerte dolor musculoesquelético crónico-, es un desorden corporal sin cura universal cuyo tratamiento resulta arduo debido a las causas pseudo-desconocidas de la enfermedad. El objetivo principal de este material es facilitar el tratamiento del desorden de la fibromialgia mediante procedimientos propios de la ingeniería de control, buscando localizar el método que mejor se adapte a las necesidades del paciente y del equipo médico asociado en su lucha contra los significativos síntomas de esta enfermedad. Por otro lado, y como objetivo secundario, este trabajo presenta un desarrollo completo de varias metodologías de control con apoyo de la herramienta MATLAB®, sirviendo como caso ejemplo de aplicación de dichos procedimientos y facilitando así la adaptación de las tecnologías aplicadas a otros proyectos de índole similar, apoyando por tanto el uso de nuevas técnicas en el área de la salud y otros campos complejos que pueden beneficiarse de las ventajas asociadas a la ingeniería de control. PALABRAS CLAVE: Naltrexona, fibromialgia, control, PID, Predictivo, MPC, identificación, tratamiento. L 11 valor cualitativo “igual que la estimación del sistema”, marcado con un valor cuantificado de 50. 60 Ilustración 37: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluídas. Ejemplo con revisiones con valor cualitativo “mejor que la estimación del sistema”, marcado con un valor cuantificado de 0. 60 Ilustración 38: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluídas. Ejemplo con revisiones con valor cualitativo “mejor que la estimación del sistema”, marcado con un valor cuantificado de 100 61 Ilustración 39: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluídas. Ejemplo primero. 62 Ilustración 40: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluídas. Ejemplo segundo 62 Ilustración 41: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluídas. Ejemplo tercero 63 Ilustración 42: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluídas. Referencia al 0% de síntomas 63 Ilustración 43: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluídas. Tiempo de periodicidad de citas de 7 días. 64 Ilustración 44: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluídas. Tiempo de periodicidad de citas de 7 días. 64 12 Notación X Cantidad de días indeterminado entre cita y cita médica n Variación arbitraria de la señal de entrada de una función de transferencia m Variación de la señal de salida de una función de transferencia cuya señal de entrada ha variado “n” Gs1 Función de transferencia de primer orden, continua, que modela la respuesta de un paciente al tratamiento de naltrexona contra la fibromialgia, extraída según datos experimentales de artículos previos a este estudio. Gs2 Función de transferencia de segundo orden subamortiguada, continua, que modela la respuesta de un paciente al tratamiento de naltrexona contra la fibromialgia, extraída según datos experimentales de artículos previos a este estudio Gs3 Función de transferencia de segundo orden sobreamortiguada, continua, que modela la respuesta de un paciente al tratamiento de naltrexona contra la fibromialgia, extraída según datos experimentales de artículos previos a este estudio Gz Función de transferencia de segundo orden que modela la respuesta de un paciente al tratamiento de naltrexona contra la fibromialgia, extraída según datos experimentales de artículos previos a este estudio, y que proviene de la discretización del modelo Gs3 Cs Función de transferencia continua para el control de un sistema modelado a partir de la función Gs3 Cz Función de transferencia para el control de un sistema modelad a partir de la función Gz, proveniente de la discretización de Cs. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 13 1. Introducción a fibromialgia, enfermedad crónica reconocida por la OMS en 1992, es un desorden común que afecta aproximadamente al 5% de las mujeres y al 1.6% de los hombres en la sociedad actual [1], caracterizada por una gran hipersensibilidad en los característicos “puntos sensibles” (tender points) del cuerpo humano (véase Ilustración 1) donde pasan a producirse fuertes dolores al contacto, acompañada por otros tantos síntomas igualmente desagradables con los que muchos se han resignado a vivir. Si bien los síntomas que acompañan a esta enfermedad son comunes en el día a día y el número de personas que la sufren es realmente elevado, hasta hace apenas unos años ni siquiera era considerada como enfermedad. La ausencia de este estatus se debía fundamentalmente a la controversia que durante siglos ha causado su identificación por parte de los expertos en los pacientes, ya que los síntomas asociados son ciertamente comunes en otros conjuntos de lesiones y/o trastornos crónicos o eventuales, llegándose a dar el caso de que, durante numerosos años (e incluso hoy en día), ciertos sectores de la medicina consideren el término “fibromialgia” como “un simple apelativo con el que ponerle nombre a cualquier conjunto de fenómenos de dolor físico con origen posiblemente neurológico que un equipo médico no sepa diagnosticar, con el fin de evadir la responsabilidad de ahondar más en el caso.” (más información en Anexo 1). Por suerte, no es así en todo el sector médico, donde desde un tiempo a esta parte han ido surgiendo L “Era demasiado orgullosa para oponer una resistencia inútil.” - Peter Pan y Wendy J. M. Barrie . Ilustración 1: Tender Points Sites of Fibromialgia. Fuente: https://www.ssa.gov/OP_Home/rulings/di/01/SSR2012-02-di- 01.html Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 14 numerosos estudios y grupos de especialistas concienciados con esta enfermedad. Realmente es en el año 1976 cuando, tras numerosos estudios del dolor muscular que se datan a partir de 1592, se hizo uso por primera vez del término “fibromialgia” [2], siendo el detonante de gran cantidad de proyectos que tratarían de acotar los síntomas, el diagnóstico y las relaciones y diferencias respecto a otros desórdenes crónicos parecidos [3]. Si bien en 1992 la OMS reconoce la fibromialgia como una enfermedad crónica, aún serían necesarias una gran cantidad de publicaciones antes de poder describir una forma bien definida de diagnosticar la fibromialgia, siendo las conclusiones de algunas de ellas aún dudosas para esos sectores de la medicina reacios a admitir la realidad de una enfermedad que atañe a tantas personas. Gracias al mundo en el que vivimos, donde la tecnología y la investigación pueden darse la mano, muchos autores y equipos tratan a día de hoy de definir hasta los mínimos detalles de esta enfermedad y sus consecuencias, acercándonos cada vez más hacia la verdad de uno de los trastornos crónicos más comunes de la población. Si bien es cierto que los numerosos estudios con los que ya contamos han hecho posible diagnosticar innumerables veces esta enfermedad, aún queda un largo camino por recorrer antes de que la sociedad venza definitivamente a la fibromialgia. Por suerte, es una meta al alcance de una humanidad que ha vencido y vencerá innumerables trastornos desde tiempos inmemoriales. En un mundo actualizado como el nuestro, donde tenemos la oportunidad de identificar y tratar enfermedades que llevan disminuyendo la calidad de vida de la población durante siglos, un trastorno tan común como la fibromialgia merece los esfuerzos de la comunidad científica con el fin de aumentar los diagnósticos correctos, paliar sus síntomas y, en definitiva, hacer más felices a millones de personas. Serán esa intención y ese espíritu los que nos apoyen a dar los primeros pasos de este trabajo, en una búsqueda de respaldar a esta sociedad en la lucha contra una adversidad que daña a tanta gente. 1.1 Motivación del trabajo Pero, aunque tengamos esa intención y espíritu como apoyo, ¿qué necesita ser apoyado y qué motivos nos han llevado a crear este trabajo y no otro, y por qué tratar de estudiar la fibromialgia como sistema de control? Quizá el motivo más simple por lo cual comenzar un trabajo como este lo hemos comentado varias veces en la introducción: la calidad de vida de una persona se ve enormemente reducida cuando sufre fibromialgia no diagnosticada o sin tratamiento eficaz. Esto se debe fundamentalmente a tres aspectos. El primero y ya nombrado son sus síntomas, que además de la hipersensibilidad en los tender points anteriormente remarcada (que se siente, en palabras textuales de enfermos, como “unos grilletes; hay veces que solo tienes un pequeñísimo hormigueo, como un calambre, y no te atreves ni a quedar para cenar con unos amigos porque igual hoy que te encuentras medio bien pero… ¿mañana podrás con tu cuerpo? ¿Podrás levantarte de la cama?”- más información en Anexo 1), la fibromialgia viene acompañada de otros efectos adversos tales como la fatiga, trastornos del sueño, anomalías intestinales, fuertes picos de ansiedad y desórdenes en el humor [4]. Si bien estos síntomas pueden aparecer en mayor o menor medida, de forma más o menos suave y con más o menos asiduidad en cada paciente, el segundo de los aspectos que reducen la calidad de vida de una persona se basa en que tratamos con una enfermedad que, actual y desgraciadamente, no tiene cura. Esto se relaciona directamente con el Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 15 tercero de los aspectos asociados: la dificultad que los equipos médicos tienen para diagnosticar la enfermedad y tratarla ya que, como destacamos anteriormente, los síntomas de la fibromialgia son comunes a otras enfermedades de afección musculoesquelética y los métodos más novedosos y eficaces para diagnosticarla aún no han llegado a todos los hospitales; sin contar además con la dificultad añadida de que las formas más sencillas de evaluar un daño musculoesquelético no tienen aplicación efectiva en la fibromialgia, debido a que, como muchas veces destacan los especialistas, uno de los problemas de este desorden es que “Aunque el dolor se produzca en un punto determinado del cuerpo, no hay lesiones ni daños visibles o palpables en la zona, debido a que la enfermedad se basa en un fallo neurológico y no en uno muscular o esquelético” (más información en Anexo 1). Sin embargo, este motivo nos impulsaría más claramente a ahondar en los trastornos asociados a esta enfermedad, en cómo identificarlos y en cómo curar la afección. ¿Por qué entonces planteamos hacer de la fibromialgia un sistema de control? Fundamentalmente, esto se sustenta en otros hechos tan destacables como los anteriores, comenzando por la curiosa realidad sobre los tratamientos eficaces contra la fibromialgia, ya que existen pacientes cuyos dolores menguan con tan solo hacer deporte, dejar de tomar gluten, pérdida de peso, estiramientos, yoga o imponiendo rutinas de sueño (más información en Anexo 1). No obstante, si bien estos tratamientos pueden o no producir mejoras en cada paciente en particular, con mayor o menor eficacia, numerosos estudios avalan el uso de tratamientos basados en la naltrexona (medicamento sobre el que hablaremos en futuros puntos de este trabajo) como medida eficaz contra la fibromialgia [1]. Además, debido a la naturaleza crónica de la enfermedad y las infinitas posibilidades de tratamiento (útil o inútil), establecer una forma eficaz de controlar la evolución de un paciente, reduciendo cuanto antes las molestias ocasionadas por la fibromialgia y buscando a la vez de forma rápida una terapia con grandes posibilidades de éxito se convierte en una plena necesidad. Si intentásemos apoyarnos en la práctica médica tradicional, basada en tratamientos que no necesariamente incluyen características individuales del paciente ni procesos de optimización exclusivos, podríamos generar desórdenes de otros tipos intentando paliar la enfermedad crónica (sin contar con el hecho de que no son necesariamente eficaces contra este tipo de enfermedades), mientras que el uso de tratamientos que se adapten al paciente, en los que las dosis se ajustan a una respuesta particular a través del tiempo, reducen el malgasto de medicamentos y las posibilidades de efectos secundarios indeseados, aumentando a su vez en gran cantidad las probabilidades de tener éxito en la mitigación de síntomas e incrementando la eficiencia de cada una de las consultas médicas (algo plenamente necesario en las asistencias médicas sobresaturadas de la sociedad actual, que deben hacer frente a presupuestos limitados), a la vez que hacen disminuir rápidamente los síntomas de unas enfermedades complejas que merman enormemente la calidad de vida de sus afectados [5] [6]. Es aquí donde se demuestra, como exhibiremos en este estudio y como otros estudios han relevado, la eficacia de los principios de la ingeniería de control en tratamientos de enfermedades crónicas como la fibromialgia [7], debido al claro e importante papel que el control ha demostrado ofrecer en cuanto a la eficacia en este tipo de aplicaciones (tratamientos complejos que precisen de mayor eficiencia, minimización de residuos y otros gastos, sin que por ello deje de aumentarse el número de objetivos cumplidos del tratamiento y sin dejar de mejorar la potencia de intervención) [8] [9] [10]. Buscaremos así, por tanto, realizar un estudio de la fibromialgia como sistema de control, apoyándonos en los estudios anteriormente mencionados y motivados por razones tan importantes como las que hemos enumerado anteriormente, tratando de alcanzar el método más eficaz y beneficioso para los grupos de especialistas y, sobre todo, para los afectados por la fibromialgia del presente y del futuro. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 16 1.2 Objetivos Para ello, estableceremos una lista de objetivos que este trabajo pretende cumplir y que, como podrá verse al final del mismo, se han conseguido alcanzar satisfactoriamente: 1) Establecer una identificación clara del sistema. 2) Extraer una relación fiable entre las señales del sistema identificado. 3) Estudiar las restricciones básicas de cada señal y cómo afectan al conjunto del sistema. 4) Estudiar diversas metodologías de control que podrían ser aplicadas a nuestro caso. 5) Generar sistemas de control básicos basados en las metodologías anteriores. 6) Comparar los sistemas de control básicos con y sin restricciones. 7) Establecer un modelo más realista de nuestro sistema de control elegido, optimizando su respuesta y acercándolo a un entorno similar a la realidad. 8) Realizar pruebas de testeo y adaptabilidad de nuestro sistema a entornos realistas. 1.3 Contenido y metodología Con el fin de lograr estos objetivos, marcaremos un contenido más específico de cada uno de sus puntos, acompañado de una metodología que nos permita alcanzarlos de forma satisfactoria: 1) Establecer una identificación clara del sistema: exponiendo en primer lugar la necesidad de este paso, definiendo el sistema a determinar y sus elementos, diferenciando entre las diversas magnitudes que afectan a nuestro sistema, estableciendo las similitudes y disparidades existentes entre casos comunes de la ingeniería de control y un caso médico en el que se trate de aplicar los mismos conocimientos -refiriéndonos a los aspectos generales que deben tenerse en cuenta para adaptar la teoría general de la ingeniería de control a nuestra aplicación, y no aludiendo a las características particulares de nuestro sistema, cuestión que ahondaremos en el tercer punto del contenido-, para posteriormente realizar un análisis de identificación de las señales del mismo. Este punto se apoyará fundamentalmente en estudios, ensayos y artículos ya realizados por la comunidad científica, de entre cuyas propuestas elegiremos evaluaciones y resultados a partir de los cuáles erigir los cimientos de nuestro trabajo. 2) Extraer una relación fiable entre las señales del sistema identificado: definiendo y calculando posibles modelos matemáticos de relación entre las señales del sistema según diversos métodos de la ingeniería de control, estableciendo una comparación exhaustiva entre ellos con el fin de realizar una elección del más indicado para nuestro caso particular. Con el fin de alcanzar este punto, haremos uso de herramientas matemáticas de control, apoyándonos también en el programa MATLAB®, cuyo conjunto de funciones y herramientas pueden resultar de ayuda para la definición de modelos y que será de gran utilidad para la comparación entre los mismos. 3) Estudiar las restricciones básicas de cada señal y cómo afectan al conjunto del sistema: tras encontrar el modelo más apropiado del sistema para nuestra aplicación, expondremos las limitaciones de las distintas señales, así como otros aspectos a tener en cuenta de nuestro sistema particular, que nos pueden llevar a modificar o no el conjunto de ecuaciones calculadas anteriormente para nuestro modelo, con la intención de acercar nuestras aproximaciones a un entorno más realista sin que por ello perdamos eficiencia u obtengamos resultados menos Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 17 óptimos. Usaremos para ello la información pertinente referida a las restricciones de nuestras señales, extraídas de los artículos seleccionados en el primer punto del contenido, evaluando los cambios y adaptando nuestros modelos mediante MATLAB® y otras herramientas matemáticas. 4) Estudiar diversas metodologías de control que podrían ser aplicadas a nuestro caso: analizar las numerosas opciones que nos da la ingeniería de control con el fin de establecer las mejores metodologías que este campo puede ofrecernos para nuestra aplicación, realizando una introducción a ellas y definiendo cuáles son los motivos que nos llevan a categorizarlas como preferibles para nuestro trabajo en particular. Para completar este objetivo, haremos uso de conocimientos que aluden al amplio campo de la ingeniería de control. 5) Generar sistemas de control básicos basados en las metodologías anteriores: una vez definidas, al término del objetivo anterior, las metodologías a partir de las cuales trabajaremos en nuestro estudio, el siguiente punto será la creación de diversos sistemas de control basados en dichas metodologías, susceptibles de constituir la mejor opción para nuestro caso, definiendo, al igual que en el apartado anterior, qué motivos nos harán clasificar los resultados de los diversos sistemas básicos de control de una metodología como preferibles o deficientes (pues no debemos olvidar que una metodología puede incluir diversos métodos de extracción de sistemas de control a evaluar). Para este paso, haremos uso de información relativa al campo de la ingeniería de control y de la herramienta MATLAB®. 6) Comparar los sistemas de control básicos, con y sin restricciones: generando gráficas de los diferentes controles, con y sin restricciones, y analizando la información que pueda extraerse de ellas, detallando los últimos requisitos por los cuáles nos decantaremos por unos u otros métodos de control con el fin de alcanzar satisfactoriamente nuestros objetivos sin reducir por ello la cantidad de información necesaria que el sistema debe contemplar para que nuestro estudio sea un estudio adaptado a las necesidades de nuestro estudio. Para este punto, haremos uso de la herramienta MATLAB® y de información relativa al campo de la ingeniería de control. 7) Establecer un modelo más realista de nuestro sistema de control elegido, optimizando su respuesta y acercándolo a un entorno similar a la realidad: tras hacer selección en el punto anterior de un sistema de control que se adapte a nuestro caso de la forma más eficaz, útil y respetuosa con el paciente, trataremos de realizar una adaptación de dicho sistema a un entorno de aplicación más realista, teniendo en cuenta las interacciones médico-paciente, las citas médicas e, incluso, la relatividad de la percepción del dolor, estableciendo un ejemplo simplificado de las posibilidades que dichas opciones. Para este punto, haremos uso de la herramienta MATLAB® y de información relativa al campo de la ingeniería de control. 8) Realizar pruebas de testeo y adaptabilidad de nuestro sistema a entornos realistas: observando la versatilidad de nuestro trabajo, como un único código sistemático y autoadaptable, a un mayor número de posibilidades de las opciones realistas descritas en el anterior punto y no solo a un ejemplo simplificado (percepción de dolor relativa, citas médicas cíclicas y percepciones de dolor muy diferentes de las establecidas en los artículos médicos cuyos test sirven de base para la creación de nuestro trabajo). Para esto, se hará uso de la herramienta MATLAB®. Por supuesto, y como añadido en este trabajo, se mostrará claramente cómo realizar, paso por paso, cada uno de los métodos de control que creamos necesarios para el estudio, así como mostraremos también formas de identificar modelos relativos a conjuntos de datos reales, apoyados en el uso de la herramienta MATLAB®. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 18 MATLAB® (abreviatura de MATrix LABoratory, "laboratorio de matrices") es un sistema de cómputo numérico que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M) [11]. En las propias palabras de los creadores de la herramienta: “Millones de ingenieros y científicos de todo el mundo utilizan MATLAB® para analizar y diseñar los sistemas y productos que transforman nuestro mundo. El lenguaje basado en matrices de MATLAB® […] y las herramientas gráficas internas hacen que sea fácil de visualizar y obtener percepciones de los datos y conjuntos matemáticos. […] Pudiéndose ejecutar análisis de grandes conjuntos de datos de inmensa escala. Además, el código MATLAB® se puede integrar con otros idiomas, lo que le permite implementar algoritmos y aplicaciones dentro de webs, empresas y sistemas de producción.” [12] Sin embargo, los conocimientos básicos de MATLAB® no serán explicados en esta memoria, sino solo aplicados. Existen centenares de manuales, foros y videotutoriales gratuitos y de fácil acceso que se han encargado ya de hacer y de llevar al público, de forma brillante, un trabajo como ese. Ilustración 2: MATLAB® & MathWorks logo. Fuente: https://es.mathworks.com/?s_tid=gn_logo Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 2. Modelado de la fibromialgia on la intención de alcanzar los objetivos anteriormente marcados, en búsqueda de lograr realizar un estudio de la fibromialgia como sistema de control, subdividiremos el contenido de esta memoria en dos grandes apartados, uno de modelado y otro de control. El primer bloque que ahora presentamos se compondrá de tres puntos, siendo estos “Identificación del sistema” (donde definiremos completamente el sistema que pretendemos controlar), “Relación entre las señales, modelo de la respuesta del paciente” (donde encontraremos la relación matemática entre el tratamiento y los síntomas) y “Restricciones de cada señal y consecuencias de las mismas” (donde analizaremos más en profundidad los límites que debemos imponer en nuestra aplicación para alcanzar todos los objetivos de forma efectiva y útil para la sociedad). 2.1 Identificación del sistema En nuestro esfuerzo por establecer un sistema de control a partir de una enfermedad crónica como es la fibromialgia, pasaremos por gran cantidad de puntos referentes a la ingeniería de control. Todos ellos se sustentarán en el pilar fundamental del modelo del sistema, pero antes de poder alcanzar el momento de la creación de dicho modelo será de gran importancia comprender cuál es nuestro sistema y de qué elementos se compone, puesto que no podemos pretender aplicar la ingeniería de control a algo que no podemos comprender (ya que sería similar a intentar ponerse a los mandos de un coche e intentar controlarlo sin saber la función del volante o de los pedales). Para ello, procederemos a exponer en la siguiente figura (véase Ilustración 3) sendos ejemplos simplificados de la ingeniería de control (superior) y del seguimiento de un paciente crónico por su equipo médico (inferior). C “Los cuentos de hadas son más que la verdad. No porque nos digan que los dragones existen, sino porque nos enseñan que los dragones se pueden derrotar.” - Coraline Neil Gaiman . Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 20 Ilustración 3: Comparación entre ejemplos básicos de la ingeniería de control y del seguimiento de un paciente No es difícil percibir la similitud existente entre los dos esquemas, lo que deja expuesto de forma simple por qué es posible tratar de establecer un sistema de control automático en una enfermedad. Y es que es claramente sencillo ver que, en ambos casos, se precisa de unos actuadores que actúan en el proceso (o un tratamiento que afecta al paciente), de forma que las salidas del proceso (o los síntomas del paciente) se ven modificados. Esas salidas son evaluadas por un controlador mediante los sensores (al igual que un médico mide y valora los síntomas del paciente), que modificará la actuación (o el tratamiento) según convenga. En el caso de este estudio, la intención es aunar la ingeniería de control y los procesos médicos tradicionales, con la intención de dar una atención completa al paciente que sufre fibromialgia. Eso podría suponer, como primera intención, la eliminación de la necesidad de un médico, sustituyéndolo por un conjunto de sensores y un módulo de control automático (o “controlador”). Sin embargo, no creemos oportuno llevar a cabo esta sustitución. En primer lugar, los procesos médicos crónicos son muy sensibles y, si bien un controlador bien diseñada puede tomar un amplio abanico de decisiones, la experiencia y saberes de un especialista en medicina permiten ejecutar actuaciones diversas y, por encima de todo, permite aumentar considerablemente la capacidad de improvisación con respecto a un módulo de control automático (sin contar con que buscamos el bienestar del paciente y, actualmente, la mayoría de la población no confía en la automatización total de procesos tan sensibles). En segundo lugar, nuestra intención no es eliminar el trato del especialista con el paciente, sino apoyar al especialista en su trabajo para brindar beneficios al paciente. Con esta segunda idea en mente, podemos plantear varias formas de abordar la parte del sistema referida a la toma de datos sobre los síntomas, la evaluación de ellos y el planteamiento de los cambios en el tratamiento. Una primera forma de realizar este paso sería seguir usando el método médico tradicional: el especialista evalúa al paciente y modifica el tratamiento. Sin embargo, esta práctica no es de nuestro interés, puesto que queremos que el sistema ayude al médico y, por tanto, creemos en la necesidad de la introducción de un módulo de control supervisado por un especialista, de forma que se puedan aprovechar los beneficios de esta sinergia. ¿Y a qué beneficios nos referimos? Son simples de evaluar si seguimos planteando formas de definir esta parte del sistema. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 27 Para hacer uso de la aplicación que nos trae la herramienta, con la cual trataremos de hallar el modelo que buscamos, solo necesitamos introducir en comando “systemIdentification” en la ventana de comandos. Una vez introducido, se nos abrirá la pantalla inicial de la aplicación (véase Ilustración 8) Ilustración 8: Pantalla de inicio de la aplicación systemIdentification En dicha pantalla, pinchando en el desplegable “Import Data” y eligiendo “Time domain data”, se nos abrirá una ventana donde podremos escribir el nombre de nuestras matrices dato, siendo “Naltrexona” el “Input” y “Sintoma_origen” el “Output”. Pinchando en “More” podremos introducir las magnitudes de nuestras variables, así como decidir nombres para los “canales” donde se cargarán las variables introducidas. Será importante decidir adecuadamente el nombre del canal y las magnitudes (o podemos dejar dichos campos vacíos, con lo cual la aplicación se encargará de asociarles valores predeterminados) debido a que, una vez generemos modelos a partir de dichos datos, solo podrán contrastarse con aquellos grupos de datos con los mismos canales y magnitudes. El resto de campos los dejaremos en blanco y pulsaremos “Import” (véase Ilustración 9). Tras esto, aparecerán nuestros datos bajo el desplegable “Import data” de la ventana principal en forma de gráfica con el nombre que hayamos marcado en el cuadro “Data name” de la ventana “Import data” (véase Ilustración 9). Ilustración 9: Ventana de "Import", botón "more" pulsado. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 28 Pinchando ahora en la gráfica que se ha creado tras la importación, podremos llevar a cabo varios procesos. En el desplegable “Preprocess” que aparece en la columna titulada con el nombre “Operations” en la ventana principal (véase Ilustración 8), podremos llevar a cabo varios preprocesados antes de estimar nuestro modelo. En el desplegable “Estimate” que aparece en la columna “Operations” en la ventana principal (véase Ilustración 8) podremos elegir el tipo de estimación que usaremos para que la aplicación halle el modelo que queramos a partir de los datos introducidos. En nuestro caso, en dicho desplegable seleccionaremos “Polynomial models”, ya que pretendemos hacer una estimación por mínimos cuadrados, y se nos abrirá una ventana con dicho nombre. “Mínimos cuadrados” es una técnica de análisis numérico en la que, dados un conjunto de parejas de datos (variable independiente y variable dependiente relacionadas entre sí, como es nuestro caso) y una familia de funciones, se intenta encontrar la función continua, dentro de dicha familia, que mejor se aproxime a los datos (un "mejor ajuste"), de acuerdo con el criterio de mínimo error cuadrático - o mínimo valor del estimador que mide el promedio de los errores al cuadrado (es decir, la diferencia entre el estimador y lo estimado) [16]. Para exponerlo de forma simple, trataremos de reproducir, para nuestro experimento, lo que se muestra en la imagen explicativa (véase Ilustración 10). Tras seleccionar el orden que queramos, ([2 2 1] o [4 4 1] estarán bien), podremos seleccionar “Estimate”. Una vez hecho esto, aparecerá en la ventana principal, bajo el desplegable “Import model”, el modelo estimado que acabamos de crear (véase Ilustración 8). La herramienta permite, además, una vez estimado el modelo, comprobar su correspondencia con el conjunto de datos inicial. Para ello, arrastraremos la gráfica de datos sobre la casilla “Validation data”, y pinchando sobre la gráfica de nuestro modelo que se encuentra bajo “Import model”, así como en la casilla “Model output”, nos aparecerá una gráfica comparativa donde nos dirá el porcentaje de cercanía entre el modelo y el experimento original. En el caso que concierne a este proyecto, no resultó en un porcentaje alto (apenas un 45%), debido a ello, creímos conveniente preprocesar la señal antes de generar el modelo, así como probar todas las opciones que la pestaña “Polynomial models”. Tras muchos intentos que no mostraremos, puesto que terminaríamos generando una memoria tediosa y lo consideramos innecesario (ya que se basa en un proceso repetitivo de preprocesar, probar, modificar, probar y volver a preprocesar y así seguir cíclicamente), apenas nos vimos con un porcentaje del 55%. Para intentar mejorar dicho valor y tratar de extraer un modelo más fiable (es decir, más parecido al experimento real y, por tanto, con menor cantidad de desviación frente al estado real de un posible Ilustración 10: Resultado del ajuste de un conjunto de datos a una función cuadrática; en rojo pueden verse los datos iniciales, en azul, la curva tendencia por mínimos cuadrados. Fuente: https://es.m.wikipedia.org/wiki/Archivo:Linear_least_squares2.png Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 29 paciente), realizamos un remodelado analítico de los datos. Debido a que la herramienta estima el modelo a partir de los datos, ciertas partes del experimento, que podrían considerarse como “ruidosas”, podrían estar afectando negativamente a la estimación del modelo. Concretamente, en nuestro experimento, en los primeros días del mismo, pueden verse ciertas bajadas bruscas que no parecen corresponderse a un periodo de no-tratamiento (véase Ilustración 11). Como bien dijimos en apartados anteriores, debido a la no-linealidad del modelo y a que el modelado de una enfermedad no trata de establecer una buena estimación en aquellos extraños días donde estos sucesos ocurren (días donde, afortunadamente, el paciente se encuentra mejor aún sin tratamiento), podríamos extraer estos primeros días de los datos, para tratar de evitar que la aplicación modele teniendo en cuenta este carácter dinámico que posteriormente solventaremos con el método para las supervisiones médicas que implementaremos en apartados posteriores. De igual manera, el pico que se da en torno al día 75 también podría ser categorizado como un suceso del mismo tipo que el anterior, por lo que podría ser tratado de la misma forma. No obstante, no trataremos de eliminar directamente dichas partes, sino que estudiaremos los casos según estén o no incluidas para tenerlas en cuenta en el modelado mediante un proceso igual que el anterior (preprocesar, probar, modificar, probar y así cíclicamente). Con ello, conseguimos extraer dos posibles candidatos con un porcentaje de más del 60% (véase Ilustración 13), de entre los cuáles elegiremos “far3sin10” como el mejor de ambos, por tener un poco más de valor en la correspondencia y, por tanto, menos desviación respecto del experimento original (como vemos en la Ilustración 13, no hemos eliminado para hallar dichos modelos la zona experimental que aparece en verde en la Ilustración 11). Una vez elegido nuestro modelo, nos quedará comprobar su buen funcionamiento en el entorno de simulación donde hallaremos los controladores pertinentes. Para ello, utilizando la propia herramienta System Identification Toolbox™, transformaremos el modelo arx en una función de transferencia en la aplicación, para luego seleccionar el modelo en forma de función de transferencia, pinchando dos veces en su gráfica de la columna “Import model”, gracias a lo cual se nos abrirá una pestaña con los detalles del modelo, en la cual Ilustración 11: Ilustración 7, con posibles zonas ruidosas remarcadas. Ilustración 12: Algunos de los modelos creados y comprobados para la generación del modelo de respuesta del paciente. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 30 pincharemos “Export” en la zona inferior. Con ello, la función de transferencia pasará a estar en el Workspace de MATLAB® junto con “Naltrexona” y “Sintoma_origen”. Ilustración 13: Respuesta de los modelos far3sin10 y far2sin10 frente al experimento original. Así, la función de transferencia hallada habrá sido: 𝐹𝑎𝑟3𝑠𝑖𝑛10 =−(0.1317∙ 𝑠 + 0.03938) 𝑠2 + 0.03947∙ 𝑠 + 0.006045 Recordemos, por supuesto, que dicha “s” nos indica que estamos usando la Transformada de Laplace como herramienta matemática de apoyo para hallar e implementar nuestros modelos. Con el fin de probar si, efectivamente, el modelo es apto para la puesta en marcha del control que queremos crear, haremos uso de la herramienta Simulink®. La herramienta Simulink® es un entorno de programación visual, ejecutado sobre la base de MATLAB® y su lenguaje, que permite la simulación de multitud de procesos de ámbitos muy diferentes de forma gráfica e intuitiva mediante la unión de bloques, y en el cual se pueden introducir multitud de herramientas (que pueden ser tanto creadas por el propio equipo de MATLAB®, por empresas o usuarios particulares) para el apoyo a la simulación de procesos específicos. En nuestro caso, para probar el modelo “far3sin10”, usaremos estos "bloques" de lenguaje Simulink® para introducir en el modelado de respuesta del paciente la misma entrada que tenía el experimento (es decir, la dosis diaria de naltrexona de la Ilustración 7) y comprobar si a su salida vemos unos síntomas de fibromialgia que se asemejen a los del experimento que hemos modelado. Para ello, crearemos el siguiente montaje en Simulink® (véase Ilustración 14). Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 31 En primer lugar, explicaremos cómo hemos diseñado el "Tratamiento" que se ve expuesto en la imagen superior. Hemos creado dos señales de escalón, una positiva (de 0 a 4.5) y otra negativa (de 4.5 a 0) que se suman; la positiva se activa (es decir, hace el escalón positivo) el día 25, de forma que el tratamiento de 4.5 mg comienza ese día (ya que es cuando comenzó el tratamiento en el experimento) y la negativa se activa el día 64, con lo que el tratamiento se anula a partir de ese momento (al igual que los datos a partir de los cuáles hemos hallado el modelo). Estas señales, al sumarse y conformar el tratamiento, se almacenan como una única señal sobre "Naltrexona", la matriz de datos que teníamos anteriormente; para ello, hemos usado un bloque "To Workspace" marcado internamente (pinchando dos veces en él) como "Array". Ya que no hemos tocado nada sobre el "Sample Time" de este bloque, se almacenarán los datos como señales continuas. Igual que hemos usado un bloque "To Workspace" para almacenar "Naltrexona", se hará lo mismo para almacenar el tiempo de simulación ("tfar", que irá conectado a un "clock" con sus parámetros predeterminados) y la salida de los síntomas ("Sintomas_FM"). Para comprobar la respuesta del paciente según nuestro modelo calculado, usaremos varios bloques que, en conjunto, nos darán a su salida los síntomas equivalentes al tratamiento entrante. Con este fin, se ha utilizado un bloque "Gain" (marcado con una "K") o "ganancia", que multiplica a la señal que pasa a través de él por cierto valor. Esta ganancia puede ser útil para ajustar mejor la respuesta del permanente del modelo frente a la realidad (es decir, reducir el error constante que puede darse en un proceso modelado frente al proceso real en momentos de estabilidad -en -este caso, equivalente a los días a partir del día, aproximadamente, 53, tras lo cual el sistema ha atravesado un estado transitorio y se mantiene constante en un valor medio de bajo error en el experimento, concretamente, en torno al 8% de síntomas presentados). En principio, el valor de esta "K" será 1, de forma que la señal que entra en dicho bloque será la misma que sale, y que entrará de forma pura en el modelo calculado, el cual se espera que nos dé una respuesta aproximada parecida al experimento y que, en el permanente, alcance ese 8% tras los 28 días (aproximados) que dura el periodo transitorio del experimento, al cual también debería ajustarse con el menor error posible. Para terminar de implementar el modelo que hemos creado, usaremos un bloque "Transfer function", el cual renombraremos como "Modelo far3sin10" y en el que introduciremos la función de transferencia con el mismo nombre. A este le añadimos el efecto de un bloque escalón (pudiera ser un Ilustración 14: Montaje en Simulink® para la comprobación del modelo far3sin10 en el entorno de simulación donde comprobaremos futuros módulos de control. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 32 constante en vez de un escalón, ya que se encontrará activo desde el día cero). Este bloque se encargará de situar la función de transferencia en el punto de trabajo que se crea necesario. Para explicar la necesidad de este bloque, recordemos que la función de transferencia, según su propia definición, precisa de valores iniciales nulos. Esto es, que las funciones de transferencia deben sus valores a relaciones entre parejas de datos y, por tanto, miden la evolución de los datos y las variaciones de los mismos. Es decir, que, a efectos de la propia función de transferencia, si se varía a la señal de entrada un valor arbitrario n, a la salida del modelo se variaría un valor m de síntomas relacionado con n, independientemente de si, inicialmente, el paciente tiene un, por ejemplo, 80% de síntomas o, por ejemplo, un 40%. Por ello, necesitamos un bloque que se encargue de especificar dicho valor inicial. En nuestro caso, será el que acabamos de añadir, y su valor pondrá al sistema en un valor inicial del 84%, el valor medio al cuál se encuentra los síntomas del paciente del experimento en el inicio del mismo. La intención, por tanto, será comprobar si el modelo se ajusta a los valores medios del experimento, dándole como el tratamiento el mismo que se aplicó en dicho estudio (de 0 a 4.5mg), comprobando que se llega a un 8% de síntomas en aproximadamente 28 días. Con ello, el Simulink®, estableceremos el tiempo de simulación en 75 días, pulsaremos el botón "Run" y representaremos los datos que se obtienen tras la simulación mediante: 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,1,1);𝑝𝑙𝑜𝑡(𝑡𝑓𝑎𝑟,𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑠𝐹𝑀,𝑡𝑖𝑒𝑚𝑝𝑜,𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑜𝑟𝑖𝑔𝑒𝑛,′𝐿𝑖𝑛𝑒𝑊𝑖𝑑𝑡ℎ′,2);𝑔𝑟𝑖𝑑; 𝑥𝑙𝑎𝑏𝑒𝑙(′𝑡(𝑑𝑖𝑎𝑠)′);𝑦𝑙𝑎𝑏𝑒𝑙(′𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑠 (%)′);𝑡𝑖𝑡𝑙𝑒(′𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑠 𝐹𝑀′); 𝑙𝑒𝑔𝑒𝑛𝑑(′𝑀𝑜𝑑𝑒𝑙𝑜 𝑓𝑎𝑟3𝑠𝑖𝑛10′,′𝐸𝑥𝑝𝑒𝑟𝑖𝑚𝑒𝑛𝑡𝑜′,′𝐿𝑜𝑐𝑎𝑡𝑖𝑜𝑛′,′𝐵𝑒𝑠𝑡′); 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,1,2);𝑝𝑙𝑜𝑡(𝑡𝑓𝑎𝑟,𝑁𝑎𝑙𝑡𝑟𝑒𝑥𝑜𝑛𝑎,′𝐿𝑖𝑛𝑒𝑊𝑖𝑑𝑡ℎ′,2);𝑔𝑟𝑖𝑑; 𝑥𝑙𝑎𝑏𝑒𝑙(′𝑡(𝑑𝑖𝑎𝑠)′);𝑦𝑙𝑎𝑏𝑒𝑙(′𝑁𝑎𝑙𝑡𝑟𝑒𝑥𝑜𝑛𝑎 (𝑚𝑔)′);𝑡𝑖𝑡𝑙𝑒(′𝐷𝑜𝑠𝑖𝑠 𝑑𝑒 𝑛𝑎𝑙𝑡𝑟𝑒𝑥𝑜𝑛𝑎′); 𝑙𝑒𝑔𝑒𝑛𝑑(′𝑁𝑎𝑙𝑡𝑟𝑒𝑥𝑜𝑛𝑎′,′𝐿𝑜𝑐𝑎𝑡𝑖𝑜𝑛′,′𝐵𝑒𝑠𝑡′); Como podemos comprobar en la ilustración anterior (véase Ilustración 15), a pesar de que en la herramienta System Identification Toolbox™ nos indicaba que se alcanzaría el mismo valor, de produce una gran diferencia. Ilustración 15: Far3sin10 frente a experimento, K=1. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 33 Para disminuirla, podemos aumentar la ganancia del modelo (valor de K). Con un cálculo sencillo se ve que, si la aumentamos a 1.75, al suministrar de forma constante 4.5mg, se alcanzará el 8% requerido. No obstante, si bien este cálculo puede hacernos creer que el sistema va a funcionar correctamente, aumentar la ganancia del modelo de respuesta del paciente puede provocar efectos indeseados (véase Ilustración 17), como un modelado falso de efecto rebote tras dejar repentinamente el tratamiento. Ilustración 16: Far3sin10 frente a experiento, K=1.75 Ilustración 17: Far3sin10 frente a experimento, K=1.75, datos de 200 días Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 34 Esto podía deberse a que el modelado no estuviera correctamente hecho. Volviendo a la aplicación de System Identification Toolbox™, podríamos extraer más información sobre por qué ocurre esto. A pesar de tratar el experimento con la intención de mejorar la identificación automática del modelo, no hemos conseguido eliminar efectos indeseados que pudieran llevar a la creación de modelos muy dispares respecto a la realidad. Prueba de ello es que, debido a la alta desviación que hay en el experimento del que partimos entre los valores medios del mismo y los reales en cada día, la aplicación genera una función curva que no se aproxima a lo que buscamos, ya que necesitamos que tenga un carácter más lineal (ya que, como dijimos, la nolinealidad la implementaremos más tarde). Debido a ello, y tratando de conseguir un modelo más con mayor fiabilidad para nuestra aplicación, pasaremos a generar funciones de transferencia mediante métodos gráficos. 2.2.2 Funciones de transferencia por métodos gráficos. Para crear funciones de transferencia mediante métodos gráficos, solo necesitamos comprender ciertos datos que necesitamos extraer de las gráficas que muestran el experimento real. Con este fin, lo primero será seleccionar un tipo de función de transferencia. Existen multitud de tipos de funciones de transferencia que podríamos aplicar, aunque por su simplicidad y buen resultado en multitud de casos, buscaremos hallar de primer y segundo orden. 2.2.2.1 Función de transferencia de primer orden Una función de transferencia de primer orden corresponde a la siguiente formulación: 𝐺𝑠1 = 𝐾 (𝜏∙ 𝑠 + 1) Cuyos parámetros pueden extraerse aplicando los conocimientos extraídos de la siguiente imagen sobre nuestros datos experimentales (véase imagen Ilustración 19 -más detalles pueden ser encontrados en cualquier manual sobre ingeniería de control que trate funciones de transferencia continuas, al igual que puede conocerse más sobre la Transformada de Laplace en cualquiera de ellos, ya que es usada para tratar este tipo de funciones). Y de dónde podemos saber que: Ilustración 18: Far3sin10 frente al experimento completo. Reacciona a lo que consideramos como “ruido inicial” al generar el modelo, a pesar de haberlo eliminado en el preprocesado. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 35 𝐾 = ∆𝑦 ∆𝑢 =𝑉𝑎𝑟𝑖𝑎𝑐𝑖ó𝑛 𝑑𝑒 𝑙𝑎 𝑠𝑒ñ𝑎𝑙 𝑑𝑒 𝑠𝑎𝑙𝑖𝑑𝑎 𝑉𝑎𝑟𝑖𝑎𝑐𝑖ó𝑛 𝑑𝑒 𝑙𝑎 𝑠𝑒ñ𝑎𝑙 𝑑𝑒 𝑒𝑛𝑡𝑟𝑎𝑑𝑎 =𝑉𝑎𝑟𝑖𝑎𝑐𝑖ó𝑛 𝑑𝑒 𝑙𝑜𝑠 𝑠í𝑛𝑡𝑜𝑚𝑎𝑠 𝑉𝑎𝑟𝑖𝑎𝑐𝑖ó𝑛 𝑑𝑒𝑙 𝑡𝑟𝑎𝑡𝑎𝑚𝑖𝑒𝑛𝑡𝑜 Una vez extraídos los parámetros, usaremos un montaje Simulink® igual que el anterior (véase Ilustración 19, donde debemos cerciorarnos de volver a poner el bloque “Gain” a valor 1 (no debemos confundir dicho valor K con la K de la función de transferencia de primer orden; ambas son ganancias, pero son diferentes) y cambiar el modelo far3sin10 por Gs1. Es común que, tras mostrar los datos, el valor de 𝜏 sea ligeramente modificado para un mejor ajuste. En nuestro caso concreto, el modelo quedará definitivamente como: 𝐺𝑠1 = − 16.888 (7 ∙ 𝑠 + 1) Modelo del cuál hemos comprobado un correcto funcionamiento, y que se ajusta a las especificaciones requeridas por nuestro sistema, sirviendo como aproximación del valor medio de los valores del experimento (véase Ilustración 20). Comparándolo con el modelo anterior, notamos una gran mejoría en las zonas de mayor interés para nuestro modelado (del día 12 al 64, cuando más lineal es el sistema, puesto que responde con evoluciones proporcionales a las variaciones de tratamiento de igual valor -véase Ilustración 20). Ilustración 20: Respuesta del modelo Gs1 frente a experimento y a Far3Sin10 (teniendo este último K=1.75) Ilustración 19: Función de transferencia de primer orden y parámetros de la misma [17] Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 36 No obstante, y debido a lo necesario que es conseguir que nuestro modelo de respuesta del paciente sea lo más parecido al valor medio del experimento posible en la parte cuyo comportamiento es más lineal (entre los días 12 y 72), propondremos otras funciones de transferencia y estudiaremos si se ajustan mejor a nuestras necesidades. 2.2.2.2 Función de transferencia de segundo orden Siguiendo el mismo método de análisis que antes, trataremos de crear una función de transferencia de segundo orden para modelar la respuesta del paciente al tratamiento. Comenzaremos con un modelo subamortiguado, que se corresponde con la siguiente función: 𝐺𝑠2 = 𝐾 ∙ 𝜔𝑛 2 𝑠2+2𝛿𝜔𝑛∙ 𝑠 + 𝜔𝑛 2 Donde: 𝐾 = ∆𝑦 ∆𝑢 𝜔𝑛=𝜋 𝑡𝑝√1−𝛿2 𝑆𝑂(%)=100∗𝑒 𝜋∙𝛿 √1−𝛿2 Extrayendo los datos pertinentes del experimento inicial (del que podemos saber que tp -tiempo de establecimiento del permanente, o tiempo que dura el periodo transitorioes de 28 días, y que SO – “sobreoscilación”, o máximo valor al que se le permite al modelo sobrepasar la ∆𝑦 durante el periodo del transitoriodebe ser cercana al 0%, y la tomaremos como 1%), y sin olvidarnos que no debemos confundir las ganancias de bloque y de la función, igual que antes, y seteando la del bloque a 1), el modelo queda de la siguiente forma: 𝐺𝑠2 = −0.6756 𝑠2+0.3304∙ 𝑠 + 0.04 Ilustración 21: Respuesta del modelo Gs2 frente a experimento y a Gs1 Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 3. Control del tratamiento Tal y como adelantamos en el esquema de nuestra aplicación bajo desarrollo (véase Ilustración 6), el siguiente punto de este trabajo contará con el desarrollo de un módulo de control, capaz de estimar un tratamiento que se adecúe eficazmente a las necesidades del paciente, modelado gracias a la realimentación de la información que puede extraerse del modelo de respuesta del paciente de fibromialgia ante un tratamiento de naltrexona desarrollado en el apartado anterior de esta memoria. Aunque ya durante la introducción definimos cuál era la función del módulo de control, no nos costará resumirlo ahora en apenas una frase: la intención es dar al sistema una referencia (es decir, un nivel de síntomas al cuál debe conseguir que el paciente evolucione) y que el módulo de control sea capaz de estimar el tratamiento más eficaz para llegar a dicha referencia según unas especificaciones de velocidad, sobreoscilación, oscilación, agresividad… Para la creación de un controlador capaz de cumplir con estas y otras necesidades ya descritas a lo largo de la memoria, podemos proponer multitud de metodologías de control que podrían ser eficaces en nuestro caso particular. No obstante, nosotros nos centraremos en dos propuestas que, históricamente, han demostrado su alta eficacia en multitud de problemas a los cuáles ha debido enfrentarse la ingeniería de control: el Control PID y el Control Predictivo. El Control PID, basado en un módulo de control (o, simplemente, “controlador”) con el mismo nombre, es una técnica de control simultáneo por realimentación basada en el cálculo de la desviación o error entre un valor medido y un valor deseado y que actúa gracias a los efectos provocados por tres submódulos (P, I y D). El submódulo P (o “proporcional”) trata de llevar a cabo la evolución del sistema hacia la referencia en, fundamentalmente, los momentos de amplios cambios (es decir, de alto nivel de error entre la referencia y la situación actual del sistema); es el encargado principal de la velocidad y de las aproximaciones a la referencia, y depende del valor actual del error, pero es sensible al ruido y, en la mayoría de las ocasiones, no es capaz, por sí solo, de hacer que el sistema alcance cualquier referencia con error nulo o próximo a cero. Para poder corregir estos errores y minimizar su valor, existe el segundo submódulo, el I (o “integral”), sensible a los valores del error y capaz de corregir las desviaciones provocadas por ruido, perturbaciones o errores acarreados por aproximaciones matemáticas, gracias a que actúa no según el "Será necesario que soporte dos o tres orugas si quiero conocer las mariposas” - El Principito Antoine de Saint-Exupéry. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 44 valor del error, sino de su integral (es decir, del sumatorio de los errores a lo largo del tiempo) siendo, por tanto, más sensible ante pequeñas desviaciones, aunque no es efectivo en la mayoría de los casos si no se acompaña de un submódulo P. Por último, el submódulo D (o “derivativo”) trata de mantener el error al mínimo corrigiéndolo proporcionalmente a la misma velocidad a la que se produce; evitándose por tanto un incremento del error que pudiese llevar a tomar medidas agresivas por parte del controlador para solventarlo (es decir, pretende que las variaciones en la “variable de control” -nombre que recibe nuestra señal “dosis de naltrexona diaria”- no tengan un valor exagerado). Dichos submódulos, juntos, conformando el controlador PID, generan uno de los módulos más completos, eficaces y sencillos de programar e implementar del mundo (siempre y cuando se tenga información previa de un modelo de proceso a controlar). Por ello, será una de las dos técnicas de control que implementaremos y compararemos. La otra técnica que nos queda por explicar es, por tanto, el Control Predictivo. Dicho método de control se basa en la “predicción” de la evolución del sistema. Concretamente, existen múltiples formas de Control Predictivo; en nuestro caso, aplicaremos el MPC (“Control Predictivo por Modelo”) El Control Predictivo por Modelo (CPM, más conocido como MPC por sus siglas en inglés) es un método avanzado de control de procesos que depende, igual que el PID, de tener un modelo del proceso que pretendamos controlar. Su ventaja principal frente a otros controladores es que el MPC permite optimizar los rangos de tiempo. Si bien el PID solo trata de alcanzar la referencia a una velocidad específica, el MPC tiene la capacidad de estimar los acontecimientos futuros y tomar acciones de control en consecuencia a dichas estimaciones. No obstante, y como contra, el MPC tiene una implementación más costosa y compleja, precisa de una mayor necesidad de cómputo y se implementa casi universalmente como un sistema de control digital programado (a diferencia de otros controladores como el PID que pueden ser implementados además de forma analógica o por electrónica digital no programada). No obstante, el Control Predictivo ha demostrado numerosas veces ser una herramienta altamente eficaz en aplicaciones de control para sistemas sensibles como enfermedades, y sus ventajas en cuanto a adaptación ante cada paciente particular, imprevistos y situaciones complejas (como sucesivas variaciones de referencia), que podrían suponer complicaciones para numerosas formas de control, conforman para el Control Predictivo simples retos ante los cuáles demostrar su alta eficacia [10] [18]. Como puede comprobarse por nuestra introducción a este punto de control, nuestra intención no es explicar letra a letra la ingeniería de control ni los controladores que vamos a aplicar sino, simplemente, su implementación, así como sus definiciones y pasos necesarios. No obstante, la completa comprensión, así como mucha más información sobre la ingeniería de control y el funcionamiento teórico/práctico del controlador PID y del Predictivo puede ser alcanzada haciendo uso de la bibliografía del Anexo 2. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 45 3.1 Control del proceso mediante PID Como ya hemos dicho anteriormente, el control del proceso mediante PID es sencillo de diseñar e implementar, y más aún si hacemos uso de las herramientas que MATLAB® nos ofrece. En primer lugar, y para analizar el sistema base, realizaremos el control PID sobre nuestro proceso continuo, para posteriormente realizar el pequeño salto (gracias a MATLAB®) hacia el modelo discreto con el que terminamos de definir el modelo de respuesta del paciente. Para ello, comenzaremos introduciendo el modelo Gs3 en la ventana de comandos, para luego cargar dicha función de transferencia en la herramienta “rltool” de MATLAB®. El comando “rltool” abre la herramienta de diseño SISO (“Simple-Input/Single-Output”), que nos ayuda en el diseño interactivo de controladores de una sola entrada/salida (SISO) usando la técnica del lugar de las raíces (el lugar geométrico de los polos y ceros de una función de transferencia en el plano de los ejes real e irreal). Desde un punto de vista práctico, simplemente necesitamos abrir el panel “Tuning Methods” y, dentro de él, pulsar en “PID Tuning” (véase Ilustración 25). Una vez abierta dicha herramienta, se nos desplegará una ventana donde solo necesitaremos pulsar en “PID” y, posteriormente, en “Update Compensator” (véase Ilustración 26). Al hacerlo así, sin modificar las especificaciones de “Response Time” o “Transient Behaviour”, se creará un controlador con las especificaciones predeterminadas de la aplicación (en nuestro caso, el controlador tratará de llegar a la referencia en 7.26 días y se encontrará a la media entre “agresivo” -controles rápidos pero que llevan a cambios bruscos de la señal de control, tendiéndose a grandes niveles de sobreoscilación y oscilación en la salida del proceso- y “robusto” -controles lentos pero que se encargan de evitar sobreoscilaciones y oscilaciones en la señal de salida). Ilustración 25: Uso de la herramienta rltool para la creación de controladores PID Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 46 Al haber pulsado el anterior botón, nos percataremos de que hace aparición un valor a la derecha de “C”. Esa será la función de transferencia asociada a nuestro controlador, y la cual ya podremos aplicar a nuestro proceso. Para ello, solo nos bastará introducirla en Simulink® mediante un sencillo montaje realimentado basado en el que hemos ido usando hasta ahora. Concretamente, será igual que el de la Ilustración 28, pero sin el bloque llamado “Perturbación” y con bloques continuos en vez de discretos (esto es, que los “To Workspace” tengan en “Sample Time” el valor “-1” y que los bloques de funciones de transferencia –“Modelo del sistema” y “PID”- sean del tipo continuo, es decir, que sean simplemente “Transfer Function”). Es importante destacar que el escalón de “Referencia” se dará en el día 25, y que caerá de 84% a 8%, de forma que el controlador tenga que adaptar el tratamiento para que los síntomas alcancen dicho valor en 7.26 días aproximadamente. Este bloque será el mismo que usaremos en todos los montajes Simulink® donde apliquemos control PID. Además, debido a imposición por parte de Simulink®, en un bloque de función de transferencia no podremos introducir una función con más ceros que polos (esto es, con mayor orden de transformada -de Laplace o Z- en el numerador que en el denominador). Por supuesto, nuestro controlador “C”, función que necesitamos introducir en un bloque de función de transferencia, tiene un orden mayor de ceros que de polos (concretamente, tiene un cero más que el número de polos). Para evitar este problema y aprovecharlo en nuestro favor, crearemos un polo de alta frecuencia. Los polos de alta frecuencia solo actúan como filtro para eliminar componentes de ruido de alta frecuencia a la salida (en caso de que puedan existir). En un caso como el nuestro no es común que existan dichos ruidos, pero añadir este polo no va a ocasionar otra cosa sino beneficios. Para ello, nos basta con escoger una frecuencia adecuada e implementarla, cumpliendo lo siguiente: 1) En primer lugar, se definirá como “polo de alta frecuencia” a aquel que, siendo el polo: 𝑃𝑜𝑙𝑜: 1 1 𝑝∗𝑠+1 cumpla que 𝑝 ≥ 10∗ 𝜔 donde ω es, en nuestro caso, el valor del término independiente del denominador de Gs3 (es decir, ω=1). Por tanto, el polo de alta frecuencia queda como: 𝑃𝑜𝑙𝑜 𝑑𝑒 𝑎𝑙𝑡𝑎 𝑓𝑟𝑒𝑞: 1 0.1∗𝑠+1 2) Convolucionar ese Polo de alta freq con el denominador de “C”, dando lugar a “Cs”: Ilustración 26: Uso de la ventana PID Tuning para la creación de controladores según especificaciones. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 47 𝐶𝑠 =−0.0769∗𝑠2−0.1053∗𝑠 −0.02432 0.1∗𝑠2+𝑠 3) Introducirlo Cs en Simulink® mediante el bloque “Transfer Function” nombrado antes, adaptando el montaje de la Ilustración 28. Una vez llevado esto a cabo, con elegir un tiempo de simulación nos bastará para obtener resultados, que luego podremos mostrar por pantalla mediante los comandos: 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,1,1);𝑝𝑙𝑜𝑡(𝑡3,𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑠𝐹𝑀𝑅𝑒𝑓,𝑡3,𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑠𝐹𝑀3,𝑡𝑖𝑒𝑚𝑝𝑜,𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑜𝑟𝑖𝑔𝑒𝑛,′𝐿𝑖𝑛𝑒𝑊𝑖𝑑𝑡ℎ′,2);𝑔𝑟𝑖𝑑; 𝑥𝑙𝑎𝑏𝑒𝑙(′𝑡(𝑑í𝑎𝑠)′);𝑦𝑙𝑎𝑏𝑒𝑙(′𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑠 (%)′);𝑡𝑖𝑡𝑙𝑒(′𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑠 𝐹𝑀′); 𝑙𝑒𝑔𝑒𝑛𝑑(′𝑅𝑒𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎′,′𝐶𝑜𝑛𝑡𝑟𝑜𝑙 𝑐𝑜𝑛𝑡𝑖𝑛𝑢𝑜′,′𝐸𝑥𝑝𝑒𝑟𝑖𝑚𝑒𝑛𝑡𝑜′,′𝐿𝑜𝑐𝑎𝑡𝑖𝑜𝑛′,′𝐵𝑒𝑠𝑡′); 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,1,2);𝑝𝑙𝑜𝑡(𝑡3,𝑁𝑎𝑙𝑡𝑟𝑒𝑥𝑜𝑛𝑎,′𝐿𝑖𝑛𝑒𝑊𝑖𝑑𝑡ℎ′,2);𝑔𝑟𝑖𝑑;𝑥𝑙𝑎𝑏𝑒𝑙(′𝑡(𝑑í𝑎𝑠)′);𝑦𝑙𝑎𝑏𝑒𝑙(′𝑁𝑎𝑙𝑡𝑟𝑒𝑥𝑜𝑛𝑎 (𝑚𝑔)′); 𝑡𝑖𝑡𝑙𝑒(′𝐷𝑜𝑠𝑖𝑠 𝑑𝑒 𝑛𝑎𝑙𝑡𝑟𝑒𝑥𝑜𝑛𝑎′);𝑙𝑒𝑔𝑒𝑛𝑑(′𝐷𝑜𝑠𝑖𝑠′,′𝐿𝑜𝑐𝑎𝑡𝑖𝑜𝑛′,′𝐵𝑒𝑠𝑡′); Por tanto, ya podemos analizar los resultados de aplicar este control PID (véase Ilustración 27). Como podemos observar, el controlador consigue su objetivo, y permite que el sistema alcance su referencia en aproximadamente siete días. Debido a que no es del todo robusto, se da una sobreoscilación (es decir, la señal de salida atraviesa el valor de la referencia). Cabe destacar que este controlador sería también capaz de evitar los efectos negativos de las perturbaciones, así como queremos clarificar que el tratamiento no tiene ninguna restricción aún (de ahí que puedan darse dosis tan altas de forma esporádica -véase Ilustración 27). Sin embargo, como ya destacamos anteriormente, el sistema impone algunas restricciones que permiten su acercamiento con el caso real. El primero de todos era que la ingesta de la dosis era diaria y que, por tanto, el sistema debía ser discreto (como lo era el modelo de respuesta del paciente). Por tanto, será necesario que el módulo de control Ilustración 27: Control continuo ante seguimiento de referencia, comparado con datos del experimento inicial. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 48 sea, igualmente, discreto. Con este fin, llevaremos a cabo pasos similares a los aplicados para la discretización de Gs3 a Gz. Una vez hallado el controlador discreto (Cz), solo nos faltará implementarla en Simulink® (fijémonos en que en Cs ya estaba introducido el polo de alta frecuencia y que, debido a ello, ahora no necesitaremos introducirlo). Para esto, y como hicimos antes, desarrollaremos el montaje realizado para probar el modelo discreto de respuesta del paciente (véase Ilustración 24), añadiendo pues un módulo de control realimentado PID (véase Ilustración 28). Por ello, debemos cerciorarnos de que en dicho montaje los bloques “PID” y “Modelo del sistema” sean “Discrete Transfer Function” (donde hemos introducido Gz y Cz), con un “Sample Time” de valor uno. Cabe destacar que los bloques del tipo “To Workspace” pueden mantener el valor “-1” en su sample time, de forma que guarden valores continuamente y, a pesar de que el sistema reaccionará y evolucionará de manera discreta, podremos monitorizar, simplemente por representar mediante gráficas de sencilla comprensión, los tiempos entre cambios de valores (es decir, Ilustración 28: Montaje Simulink® para la implementación de un controlador PID discreta en el sistema diseñado. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 49 a pesar de que los cambios son discretos, mediremos los datos, solo para representarlos, de forma continua). Además, se ha añadido una señal de “Perturbación”. Dicha señal es una señal cuadrada de valor 10 entre los días 83 y 84, y viene a simular cambios ruidosos no contemplados por el modelo linealizado de respuesta del paciente (por ejemplo, días sueltos que el paciente sea más sensible al dolor sin motivo aparente). Se simulará este montaje con dicha señal para comprobar que, como ya comentamos antes, el control PID es capaz de anular eficazmente las perturbaciones. Así pues, representando los datos obtenidos tras simulación mediante los siguientes comandos: 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,1,1);𝑝𝑙𝑜𝑡(𝑡3,𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑠𝐹𝑀𝑅𝑒𝑓,𝑡3,𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑠𝐹𝑀3,𝑡𝑖𝑒𝑚𝑝𝑜,𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑜𝑟𝑖𝑔𝑒𝑛,′𝐿𝑖𝑛𝑒𝑊𝑖𝑑𝑡ℎ′,2); 𝑔𝑟𝑖𝑑;𝑥𝑙𝑎𝑏𝑒𝑙(′𝑡(𝑑í𝑎𝑠)′);𝑦𝑙𝑎𝑏𝑒𝑙(′𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑠 (%)′);𝑡𝑖𝑡𝑙𝑒(′𝑆𝑖𝑛𝑡𝑜𝑚𝑎𝑠 𝐹𝑀′); 𝑙𝑒𝑔𝑒𝑛𝑑(′𝑅𝑒𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎′,′𝐶𝑜𝑛𝑡𝑟𝑜𝑙 𝑑𝑖𝑠𝑐𝑟𝑒𝑡𝑜′,′𝐸𝑥𝑝𝑒𝑟𝑖𝑚𝑒𝑛𝑡𝑜′,′𝐿𝑜𝑐𝑎𝑡𝑖𝑜𝑛′,′𝐵𝑒𝑠𝑡′); 𝑠𝑢𝑏𝑝𝑙𝑜𝑡(2,1,2);𝑝𝑙𝑜𝑡(𝑡3,𝑁𝑎𝑙𝑡𝑟𝑒𝑥𝑜𝑛𝑎,′𝐿𝑖𝑛𝑒𝑊𝑖𝑑𝑡ℎ′,2);𝑔𝑟𝑖𝑑;𝑥𝑙𝑎𝑏𝑒𝑙(′𝑡(𝑑í𝑎𝑠)′);𝑦𝑙𝑎𝑏𝑒𝑙(′𝑁𝑎𝑙𝑡𝑟𝑒𝑥𝑜𝑛𝑎 (𝑚𝑔)′); 𝑡𝑖𝑡𝑙𝑒(′𝐷𝑜𝑠𝑖𝑠 𝑑𝑒 𝑛𝑎𝑙𝑡𝑟𝑒𝑥𝑜𝑛𝑎′);𝑙𝑒𝑔𝑒𝑛𝑑(′𝐷𝑜𝑠𝑖𝑠′,′𝐿𝑜𝑐𝑎𝑡𝑖𝑜𝑛′,′𝐵𝑒𝑠𝑡′); Podremos observar (véase Ilustración 29) que el sistema (aunque tardando más de los 7.23 días especificados en el controlador continuo) consigue alcanzar su objetivo de referencia en un tiempo razonable, a la vez que es capaz de solventar el problema de la perturbación de igual forma. No obstante, con un simple vistazo al tratamiento podemos percatarnos de que este sistema controlado se aleja enormemente de la realidad, puesto que propone dar dosis negativas al paciente. Sin embargo, esto se debe al desconocimiento por parte del módulo de control de la naturaleza de la señal de control (“dosis de naltrexona diaria”). Para poder brindar al controlador de este conocimiento, proponemos introducir una saturación a la salida del control, capaz de filtrar las dosis a valores razonables. Es importante destacar que, gracias a que usamos un bucle cerrado y realimentado de control, la introducción de una saturación no influirá a un mal funcionamiento del módulo de control, sino que el controlador será capaz de adaptar sus respuestas a partir de cómo se comporta el sistema condicionado por dicha saturación. Ilustración 29: Control discreto ante seguimiento de referencia por PID, comparado con datos del experimento inicial. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 50 Para esto, introduciremos en Simulink® un bloque del tipo “Saturation” donde impondremos como valor mínimo 0 mg (puesto que no puede tomarse menos dosis que “nada”) y como valor máximo 13.5 mg (debido a que el máximo valor comercial común de dosis de naltrexona es de dicha cantidad), y volveremos a representar los datos obtenidos (véase Ilustración 30 e Ilustración 31). Como podremos comprobar en los datos extraídos del experimento, veremos que, efectivamente, el sistema ya no contempla la posibilidad de tener dosis negativas de naltrexona. No obstante, en la estimación de la respuesta del paciente mediante el control discreto, podemos observar que se alcanzan niveles negativos de síntomas. Antes de poder hacer propuestas para solucionar este problema, nos faltará tener en cuenta una Ilustración 30: Montaje Simulink® para la implementación de un controlador PID discreta en el sistema diseñado, con saturación a la salida del PID Ilustración 31: Control discreto ante seguimiento de referencia por PID, comparado con datos del experimento inicial, saturado según valores comerciales. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 51 restricción más de nuestra señal de control, la naltrexona, relacionada con las dosis comerciales que pueden adquirirse en farmacias. Según ciertos artículos, las dosis de naltrexona de adquisición comercial que, por tanto, pueden recetarse a pacientes no-ingresados (como es nuestro caso de pacientes con afección fibromiálgica) son: 0 mg, 1.92 mg, 3.85 mg, 5.76 mg, 7.68 mg, 9.6 mg, 11.58 mg, 13.5mg. [4] [7]. Además, también se advierte en dichos artículos que no debe incrementarse o decrementarse la dosis más de dos valores superiores o inferiores respectivamente en días seguidos (esto es, que si el paciente está tomando 1.92 mg, las únicas dosis que podría tomar el día siguiente serían 0 mg, 1.92 mg, 3.85 mg y 5.76 mg) [4]. Por todas estas restricciones, hemos decidido introducir en nuestro sistema un módulo “dosificador”, que se encargue de convertir la salida del controlador en una salida apta, teniendo en cuenta cuáles son los valores de dosis posibles y las restricciones de máximas variaciones de dosis en días consecutivos. El código de dicho módulo puede encontrarse en el Anexo 3. Para introducirlo en el montaje de simulación, solo necesitaremos hacer uso de un bloque tipo “Interpreted MATLAB Fcn” y darle como entrada los datos que necesite el código. En nuestro caso, el control propondrá una dosis para el día actual de simulación; dicha dosis se introducirá en el módulo de dosificación y será evaluada según el valor anterior de la dosificación y el valor de entrada (así sabremos el rango en el cual puede variar), aproximando el valor de salida del controlador a un valor comercial inocuo para el paciente (puesto que, al fin y al cabo, no solo pretendemos bajar los síntomas de fibromialgia que sufre sino, por supuesto, evitar que su calidad de vida no mejore debido a efectos secundarios). Tras realizar simulaciones (véase Ilustración 32 e Ilustración 33) podremos comprobar de manera sencilla cómo las restricciones de la señal de control se cumplen a la perfección, y se consigue una salida lógica e inocua para el paciente. Ilustración 32: Montaje Simulink® para la implementación de un controlador PID discreta en el sistema diseñado, con dosificación a la salida del PID Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 52 No obstante, el sistema controlado jamás será capaz de alcanzar la referencia del 8% de síntomas. Este efecto se debe a que, para que el PID mantenga el valor de la salida del sistema en el 8%, necesita que el valor de la dosis de naltrexona sea de 4.5mg (como se puede corroborar en cualquiera de las respuestas de las simulaciones anteriores). Sin embargo, entre las dosis comerciales posibles no existe la de 4.5mg, siendo las más cercanas la de 3.85 mg y la de 5.76 mg, por lo que el sistema, que intenta constantemente dar a la salida 4.5mg, caerá también de forma constante a darnos la dosis comercial más cercana, la de 3.85mg. Este problema podría solucionarse de múltiples formas, puesto que combinaciones alternas de dosis de 3.85mg con 5.76mg podría provocar que el sistema oscilase de forma leve en torno al 8% de referencia. No obstante, esta característica no es común en el PID y debería ser forzado a ello (por ejemplo, incrementando artificialmente su error en situaciones como esta para que el sistema crea estar más alejado de la referencia de lo que realmente está e incremente la dosis en consecuencia). Por otro lado, esto podría ocasionar que surja la necesidad de estudiar múltiples situaciones de referencia, pudiéndose generar mayores niveles de error por modelado en un sistema que, de por sí, tenía como dificultad ser muy sensible (puesto que no estamos dejando de hablar de la calidad de vida de un ser humano en un ámbito tan sensible como es la salud). Una forma más sencilla de solventar este problema es consiguiendo que el sistema tenga conciencia de lo que está provocándose en la salida (con algo más que con la realimentación que ya está implementada, por supuesto), previendo cómo va a evolucionar y actuando en consecuencia según eso. Así sabría, por ejemplo, que jamás alcanzará la referencia de 8% usando dosis constantes de 3.85mg. No obstante, pretender que el sistema “vea el futuro”, analice el “pasado” y actúe según un análisis de ellos no es algo inherente al PID. Por ello, propondremos ahora el uso de un MPC, un control predictivo que estimará la evolución futura Ilustración 33: Control discreto ante seguimiento de referencia por PID, comparado con datos del experimento inicial, dosificado según valores comerciales. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 59 un número pequeño o variable según la consideración del equipo médico, para realizar un ajuste más personalizado al paciente. En nuestro caso, decidimos que esta variación tendría un valor arbitrario del 12% (como argumentamos, visualmente permite una mayor comprensión visual). Por supuesto, debemos eliminar la perturbación provocada en simulaciones anteriores para medir efectos de las mismas sobre el sistema, por el simple hecho de que no tenemos información sobre cuándo podrán producirse dichas perturbaciones, así que nuestro sistema de control contra la fibromialgia, a pesar de poder rechazarlas, no podrá estimar cuándo o de qué intensidad podrían ser futuras perturbaciones; será trabajo del equipo médico, durante las revisiones, analizar si un malestar en el periodo entre citas es una perturbación o necesita ser catalogado como “peor” respecto a lo esperado, para que se modifique el punto de trabajo (generalmente, las perturbaciones se caracterizan por ser puntuales). Con todo esto, acabaríamos de generar la aplicación final de nuestro trabajo, a falta de analizar sus resultados (más información en Anexo 3). Para comenzar, probaremos una simulación de 200 días con revisiones cada 15 días y setearemos los síntomas inicial del paciente (analizados). Como dijimos, la cita actual es la penúltima cita cuyos datos se muestren (equivalente al día 180), y más allá de la siguiente cita (el día 195) debe ser desechado, ya que la respuesta en esta última cita es arbitraria y solo sirve para evitar que el sistema no tenga un buen funcionamiento para algunos tiempos de simulación. Por tanto, nos pondremos en la piel del equipo médico que, en el día 180, decide usar de nuevo la aplicación. Para todos los futuros casos, habremos definido la referencia como 8% (por el simple hecho de tratar de mantener la referencia anterior; lo ideal sería darle de valor el 0%, para que se palien todos los síntomas del paciente frente a la fibromialgia padecida). Y también tomaremos que, durante la primera cita, habíamos observado un histórico de síntomas entorno al 84%, lo que nos daría el valor inicial de la salida. Supongamos que, en un primer caso hipotético, hemos comprobado que los síntomas de nuestro paciente se ajustan perfectamente a las estimaciones de la aplicación tanto a día de hoy como en los días entre una cita y la anterior. Por ello, en cada una de las revisiones habremos marcado “igual” como el análisis del paciente durante la misma, y por ello, las revisiones tendrán un valor constante de “50” en las gráficas que la aplicación nos mostrará por pantalla. Correremos pues el sistema y comprobaremos el tratamiento que nos propone. Si, como equipo médico, no estuviéramos de acuerdo con el mismo (porque, por ejemplo, tras 180 días con unos síntomas del 8%, queremos ir reduciendo la dosis de naltrexona que esté tomando el paciente), solo necesitaríamos modificar la resolución de la cita actual (en el caso planteado, sería marcar un “mejor”, que dará un valor de “0” y reducirá la dosis administrada al paciente, sin dejar de tratar que lo síntomas sigan encontrándose entorno al 8%). Sin embargo, si estuviéramos de acuerdo, solo tendremos que indicarle al paciente que siga con el tratamiento que ya tenía impuesto (véase Ilustración 36). Desde nuestro estudio, queremos remarcar un hecho ya comentado y que ahora se corrobora, y es que el MPC se encargará de que el paciente tenga un tiempo de transición mínimo entre el valor actual de los síntomas y la referencia puntual requerida sin que por ello se dejen de respetar las restricciones de seguridad de la naltrexona (de ahí que, en la Ilustración 36 se observe que se pasa del 84% de síntomas al 8% con completa estabilidad en tan solo 8 días, a diferencia del PID con dosificación, que tardaba aproximadamente 28 días en estabilizarse sin llegar a la referencia nunca). Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 60 Otros dos ejemplos sencillos que expondremos a continuación se basan en qué ocurriría si, durante las revisiones, hemos observado repetidamente que el punto de trabajo no se ajusta al paciente (ya sea porque se siente continuamente “mejor” de lo estimado por la aplicación o “peor” que lo estimado por la aplicación). En el caso de que el paciente se sienta constantemente mejor de lo esperado, el punto de trabajo irá reduciendo su valor hasta llegarse al caso en el que se estima que el paciente no necesita más medicamento para no sufrir ningún síntoma (por supuesto, en el futuro podría encontrarse “peor” durante una revisión y volver a necesitarlo). (Véase Ilustración 37). Ilustración 36: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluidas. Ejemplo con revisiones con valor cualitativo “igual que la estimación del sistema”, marcado con un valor cuantificado de 50. Ilustración 37: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluidas. Ejemplo con revisiones con valor cualitativo “mejor que la estimación del sistema”, marcado con un valor cuantificado de 0. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 61 Por otra parte, en caso de que se sienta constantemente peor de lo esperado, el punto de trabajo irá aumentando su valor hasta llegar a un punto donde se puede comprobar que ni siquiera la mayor dosis de naltrexona es efectiva en el paciente. (Véase Ilustración 38). Cabe destacar que siempre que se dé un “mejor” o “peor” en una revisión, el sistema nos dejará entrever un pico mínimo o uno máximo, respectivamente, en el día siguiente a la revisión, debido a que el sistema ha recalculado el punto de trabajo. Por supuesto, estos casos anteriores no reflejan el funcionamiento real del sistema, debido a que hemos forzado a las revisiones a tener valores constantes para mostrar evoluciones. A continuación, realizaremos varios experimentos donde se podrá comprobar el correcto funcionamiento de nuestra aplicación con diversos pacientes hipotéticos a los cuáles se les ha hecho un seguimiento por revisión cada quince días (véase Ilustración 39, Ilustración 40 e Ilustración 41). También existirá la posibilidad, como ya dijimos, de usar otras referencias (véase Ilustración 42) o de cambiar la periodicidad de las citas (Ilustración 43 e Ilustración 44). Con esto, se dan por cumplidos todos los objetivos de este estudio, y se da por cerrado el mismo, tras haber demostrado la viabilidad de una aplicación capaz de estimar tratamientos eficaces contra la fibromialgia capaces de mejorar, como ayuda para los especialistas, la calidad de vida de los enfermos de este desagrable desorden crónico. Ilustración 38: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluidas. Ejemplo con revisiones con valor cualitativo “mejor que la estimación del sistema”, marcado con un valor cuantificado de 100 Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 62 Ilustración 40: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluidas. Ejemplo segundo Ilustración 39: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluidas. Ejemplo primero. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 63 Ilustración 41: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluidas. Ejemplo tercero Ilustración 42: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluidas. Referencia al 0% de síntomas Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 64 Ilustración 43: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluidas. Tiempo de periodicidad de citas de 7 días. Ilustración 44: Sistema de control completo sobre un paciente con fibromialgia, con revisiones médicas y personalización incluidas. Tiempo de periodicidad de citas de 30 días. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 5. Referencias [1] Younger, J. et. al., «Fibromyalgia Symptoms Are Reduced by Low-Dose Naltrexone: A Pilot Study,» Pain Medicine, vol. 10, nº 4, pp. 663-672, 2009. [2] H. PK, «Nonarticular rheumatism, 22nd rheumatism review: review of the American and English literature for the years 1973 and 1974,» Arthritis Rheum, vol. 19, nº (suppl), pp. 1081- 1089, 1976. [3] I. Fatma y Y. Muhammad B, «History of Fibromyalgia: Past to Present,» Current Pain and Headache Reports, vol. 8, pp. 369-378, 2004. [4] D. Sunil, N. N. Nandola, D. E. Rivera y J. Younger, «A Control Engieneering Approach for Designing an Optimized Treatment Plan for Fibromyalgia,» de Proc Am Control Conf., 2011 June 29. [5] A. Bemporad y M. Morari, «Toward an integrated understandig of fibromialgia syndrome,» Pain, vol. I Medical and pathophysiological aspects, nº 45, pp. 227-238, 1991. [6] A. Bemporad y M. Morari, «Toward an integrated understandig of fibromialgia syndrome,» Pain, vol. II Psychological and phenomenological aspects, nº 45, pp. 239-248, 1991. [7] D. Sunil, N. N. Nandola, D. E. Rivera y J. Younger, «Optimized treatment of fibromyalgia using system identification and hybrid model predictive control,» Control Engineering Practice, nº 33, pp. 161-173, 2014. [8] W. Riley, D. E. Rivera, A. Atienza, W. Nilsen, S. Allison y R. Mermelstein, «Health behavior models in the age of mobile interventions: Are our theories up to the task?,» Translational Behavioral Medicine, nº 1, pp. 53-71, 2011. [9] D. E. Rivera, M. D. Pew y L. M. Collins, «Using engineering control principles to inform the design of adaptive interventions: A conceptual introduction.,» Drug and Alcohol Dependence., Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 66 nº 88, p. S31–S40, 2007. [10] A. Zafra-Cabeza, D. Rivera, L. Collins, M. Ridao y E. Camacho, «A risk-based model predictive control approach to adaptive interventions in behavioral health.,» IEEE Transactions on Control Systems Technology., nº 19, p. 891–901, 2011. [11] Wikipedia, «MATLAB - Wikipedia, la enciclopedia libre.,» Wikipedia Foundation., 2 Abril 2018. [En línea]. Available: https://es.wikipedia.org/wiki/MATLAB. [Último acceso: 16 Mayo 2019]. [12] The MathWorks, Inc., «MATLAB,» MathWorks, [En línea]. Available: https://es.mathworks.com/products/matlab.html. [Último acceso: 16 Mayo 2019]. [13] T. M. Mattiloi, B. Milne y C. Cahill, «Ultra-low dose naltrexone attenuates chronic morphineinduced gliosis in rats.,» Molecular Pain, nº 6, pp. 1-11, 2010. [14] Wikipedia, «Función de transferencia - Wikipedia, la enciclopedia libre,» Wikipedia Foundation, 2014. [En línea]. Available: https://es.wikipedia.org/wiki/Funci%C3%B3n_de_transferencia. [Último acceso: 5 Mayo 2019]. [15] The MathWorks, Inc., «System Identification Toolbox,» [En línea]. Available: https://www.mathworks.com/products/sysid.html. [Último acceso: 5 Mayo 2019]. [16] Wikipedia, «Mínimos cuadrados - Wikipedia, la enciclopedia libre,» Wikipedia Foundation, [En línea]. Available: https://es.m.wikipedia.org/wiki/M%C3%ADnimos_cuadrados. [Último acceso: 25 Mayo 2019]. [17] M. Gil Aguilares, «Sistema de primer orden, constante de tiempo,» de Análisis de la respues temporal, Asignatura de Fundamentos de Control. [18] N. N. Nandola y D. E. Rivera, «An improved formulation of hybrid model predictive control with application to production-inventory systems.,» IEEE Transactions on Control Systems Technology, nº 21, pp. 121-135, 2013. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 6. Anexos Anexo 1: Entrevista a un especialista médico y a a un enfermo de fibromialgia. Entrevistador: Dígame, usted lleva sufriendo esta enfermedad, la fibromialgia, desde hace mucho tiempo, ¿no es así? Paciente: Realmente no puedo decir cuándo empezó la enfermedad; fue algo muy gradual. Al principio solo fue cansancio, luego además empecé a notar hormigueos y, con el tiempo, se volvió algo insoportable. E: Pero, ¿esa sensación de que sea insoportable ocurre todos los días? P: No, por suerte, no; aunque, tristemente, la mayoría de los días sí. E: ¿Y cómo son esos días donde se encuentra mejor? P: ¿Aparte de escasos, quieres decir? Realmente he probado muchas cosas contra la fibromialgia, pero, aunque con algunas he conseguido algún día bueno esporádico, no han hecho mucho efecto en mí. Hay pocos días donde pueda decir que me siento “realmente bien”; aunque es verdad que los síntomas y, sobre todo, el dolor, no molesta en ocasiones. Pero, ¿sabes lo peor? Incluso los días donde los síntomas no son tan graves, los síntomas más leves te hacen sentirse aprisionada, como unos grilletes; hay veces que solo tienes un pequeñísimo hormigueo, como un calambre, y no te atreves ni a quedar para cenar con unos amigos porque igual hoy que te encuentras medio bien, pero… ¿mañana podrás con tu cuerpo? ¿Podrás levantarte de la cama?” E: ¿Se tiene en cuenta este componente psicológico entre los síntomas de la fibromialgia, doctor? Médico: Ciertamente, muchos artículos lo tienen en cuenta; la psique humana es muy importante en cuestiones de salud, y más aún en desórdenes crónicos como la fibromialgia. Además, hay que partir de la base de que, sobre la fibromialgia, aún hay mucho que investigar, tristemente, para algunos especialistas, la “fibromialgia” es un simple apelativo con el que ponerle nombre a cualquier conjunto de fenómenos de dolor físico con origen posiblemente neurológico que un equipo médico no sepa diagnosticar, con el fin de evadir la responsabilidad de ahondar más en el caso. E: ¿Y por qué cree que pueda ser esto? M: Aunque el dolor se produzca en un punto determinado del cuerpo, no hay lesiones ni daños visibles o palpables en la zona, debido a que la enfermedad se basa en un fallo neurológico y no en uno muscular o esquelético; esto llevó, tradicionalmente (y hablo de tiempos donde la neurología no estaba Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 68 tan avanzada como ahora) a que, como no había signos físicos aparentes por los cuáles tuvieran explicación esas molestias, se tuviera a la fibromialgia como un mito y se introdujese cualquier síntoma parecido bajo dicho nombre, aunque no se corresponda realmente a la fibromialgia. a primera vista por los cuáles los síntomas tuvieran “sentido”, así que se mitificó la fibromialgia y se decidió popularmente que muchas enfermedades E: ¿Eso podría ser considerado como una negligencia por parte de los especialistas? M: Ese es un término muy grave, y más en un caso como este. No trato de decir que no lo sea, simplemente hay que entender que los artículos y estudios más actuales sobre la fibromialgia, que despejan estas dudas y clarifican en mayor medida qué es esta enfermedad y cómo identificarla, así como proponen tratamientos más eficaces, aún no se han extendido a todos los especialistas. Por ello, no creo que sea justo hablar de una negligencia por parte de los especialistas, sino que deberíamos tratarlo como un argumento de suma importancia por el cual deberían extenderse más estos estudios por hospitales y demás sectores médicos (con formaciones, por ejemplo). P: El problema es que los que más sufrimos esto somos los enfermos. M: Sí, sin duda; tristemente, todos conocemos lo difícil que es desmitificar un hecho, sea del tipo que sea, sobre el cuál se han extendido cientos de rumores falsos. Y, por supuesto, es completamente injusto que por unos cuentos sean los pacientes los que sufran, cuando ya tienen suficiente con sufrir un desorden crónico como este. E: Ya les hemos hablado anteriormente de lo que trata de conseguir nuestro estudio, y de cómo planea ayudar a los especialistas a calcular un tratamiento altamente eficaz contra la fibromialgia que pueda adaptarse a cada paciente concreto. ¿Cuáles son sus opiniones al respecto? P: Conozco historias de otros enfermos de fibromialgia que han mejorado haciendo deporte (como el yoga o estiramientos), dejando de tomar gluten o perdiendo peso, o incluso imponiéndose unas horas para dormir y despertarse bien; pero a mí esto nunca me ha terminado de funcionar; así que cualquier avance que pueda ayudar a otro enfermos como yo, o que lleve a que otros estudios puedan aparecer y avanzar, siempre será de agradecer. M: Sí, sin duda, cualquier avance en un tema como este será de agradecer, no solo por los pacientes, sino también por los equipos médicos, que tendrán más capacidad de mejorar el nivel de vida de los enfermos de esta enfermedad crónica. Anexo 2: Bibliografía recomendada sobre ingeniería de control. Bolzern, Paolo et al. Fundamentos de control automático. 3a ed. Madrid: McGraw Hill, 2009. Print. Weyrick, Robert C. Introducción al control automático. Barcelona: Gustavo Gili, 1977. Print. Pinto Bermúdez, Enrique, and Matía Espada, Fernando. Fundamentos de control con MATLAB. Madrid: Pearson Education, 2010. Print. Crowe, J. et al. PID Control New Identification and Design Methods . London: Springer London, 2005. Web. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 75 % Modelo del sistema % -1.055 z^-1 - 0.6633 z^-2 % Gz= ---------------------------- % 1 - 1.144 z^-1 + 0.2457 z^-2 B=[0 -1.055 -0.6633]; %Numerador del modelo A=[1 -1.144 0.2457]; %Denominador del modelo d=0; %Retardo de la planta %% Parametros de sintonia del GPC %Ventana de prediccion N=11; %Valor de la ventana N1=d+1; %Horizonte Inicial N2=d+N; %Horizonte Final de salida Nu=N; %Horizonte de entrada (o de control) lambda=1; %Parametro de ponderacion, no se pondera nada si son 1 delta=1; %Hallamos ahora las matrices de la función de costo, son diagonales Ql=eye(Nu)*lambda; Qd=eye(N)*delta; %% Calculo de la ecuacion Diofantina [En,F] = diophantine(A,N2,0); %Calculo de la funcion Diofantina E=En(end,:); %El polinomio E seria la ultima fila de En arrojada por la funcion diophantine F=F(N1:N1+N-1,1:end); %El polinomio F es la respuesta libre, y cogemos de él %la parte correspondiente a nuestro horizonte en el primer sector, y toda %la información en el resto de F %% Determina los coeficientes de control pasados %Elimino el cero de la primera posicion de B en caso de tenerlo, como %tenemos nosotros, antes de comenzar los cálculos. if B(1)==0 B=B(2:end); end uG=zeros(N1,N)'; %Vector de controles pasados (Pertenece a la respuesta libre) j=2; for i=N1:N2 aux=conv(En(i,1:end),B); if length(aux) < N1+j-1 %Si la longitud del auxiliar es menor que j aux=[aux zeros(1,(N1+j-1)-length(aux))]; %Completar con ceros end uG(j-1,1:N1)=aux(j:N1+j-1); j=j+1; end g=conv(E,B); %Calcula polinomio g, producto de E y B, es por tanto los %coeficientes de la planta frente al escalón. Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 76 G=zeros(N,Nu); % Inicializa la matriz G, matriz de respuesta de los %coeficientes del escalón for k=1:Nu G(k:end,k)=g(1:N-k+1); % Forma la matriz G a partir del polinomio g end Mn=inv(G'*Qd*G+Ql)*G'*Qd; %Calculo de la Funcion de Costo sin Restriccion %Calculo del controlador K1 (Primera fila de Mn) K1=Mn(1,:); %% Bucle de control %Inicializamos los parámetros de simulación drs=100; %, duracion de la simulación= NIT-1 nit=drs+1; %Número de interacciones inc_u=0; %Incremento de control predictivo Y=10; %COMIENZO DEL CONTROL u_ant(1:Y) = 0; %Inicializamos valores de salida de controles anteriores u(1:Y+d) = 0; ym(1:Y+d) = 0; r(1:Y+d) = 0; %Inicializamos la señal de control, la salida y la referencia, que durante %un tiempo serán 0 para mejor visualización en la simulación. Cabe destacar %que, realmente ym=84, pero al ser esto un offset constante, lo añadiremos %más adelante, tratando los cálculos como si fuera de valor 0 durante el %resto. Lo mismo ocurre con la referencia; inicialmente debería valer igual %que la salida ym. Además, como veremos más adelante, no empezaremos a %controlar hasta el día N. %Offsets de referencia y salida pi=84; %Referencia del usuario (referida respecto del offset) ref=8; %Transformación de la referencia con offset a sin offset %REFERENCIA COMPLEJA DE TEST r(26:30)=-(pi-ref)+40; r(31:32)=-(pi-ref)+20; r(33:37)=-(pi-ref)+15;r(38:42)=-(pi-ref)+10;r(43:47)=-(pi-ref)+5; r(48:nit) = -(pi-ref);%El indice 26 indica un t=25, cuando comienza el test % %REFERENCIA SIMPLE % r((Y+1):nit)=-(pi-ref); % %REFERENCIA SIMPLE DE TEST % r((25+1):nit)=-(pi-ref); %Perturbación do(1:82)= 0;do(83:84)=10; do(85:nit) = 0; %Como antes, el índice 86 indica t=85 lduf=size(F); %Averiguo la longitud del polinomio F lduf=lduf(1,2); %Será el incremento de control de la respuesta libre luG=size(uG); %Averiguo la longitud de uG Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 77 luG=luG(1,2); duf=zeros(1,luG); %Vector de incrementos de control pasados de la respuesta libre %% Comenzamos a controlar for k=(Y+1)+d:nit % Salida del proceso ym(k)=B(1)*u(k-1-d)+B(2)*u(k-2-d)-A(2)*(ym(k-1))-A(3)*(ym(k- 2))+do(k); %Cálculo de la respuesta libre teniendo en cuenta el incremento %de control de la respuesta libre free=0; for i=1:lduf free=free+ym(k-i+1)*F(:,i); end if luG==1 %Si uG es un vector columna free=free+duf*uG; %Invierto el producto, para que sea realizable else %Si uG es una matriz free=free+uG*duf'; end %Cálculo de la variable de control por incrementos inc_u=K1*(r(k)-free); %En nuestro caso, k!=1 siempre, pero habría que tener en cuenta este %detalle, que la acción de control se basa en un sumatorio. if k==1 u(k)=inc_u; else u(k)=u(k-1)+ inc_u; end %Actualizamos el vector de valores de control pasados aux_u=u_ant(1:length(B)-1); u_ant=[u(k) aux_u]; %Y actualizaremos los incrementos de control pasados, que se usan en la %respuesta libre. aux_2=duf(1:end-1); duf=[inc_u aux_2]; end %% Para representar, solo debemos usar la funcion "graficas" %% FUNCION DIOFANTINA %-------------------------------------- function[E,F] = diophantine(A,N,d) delta = [1 -1]; AD = conv(A,delta); nAD = size(AD); nAD = nAD(2); Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 78 N1 = d +1; N2 = d + N; f(1,:)= [1 zeros(1,nAD-2)]; for j = 1: N2 for i = 1:nAD-2 f(j+1,i) = f(j,i+1)-f(j,1)*AD(i+1); end f(j+1,nAD-1) = -f(j,1)*AD(nAD); end F = f(1+N1:1+N2,:); % Computes E(z^-1) E = zeros(N2); e(1) = 1; % for the special case 1/~A E(1,1) = e(1); for i = 2: N2 e(i) = f(i,1); E(i,1:i)=e; end E = E(N1:N2,:); end Predictivo_ConDosi.m Código de simulación del sistema, controlado por MPC, con restricciones de dosis y sin interacción médica. % SISTEMA BASADO EN UN CONTROL PREDICTIVO DISCRETO CON DOSIFICACIÓN % ANDRES PASTOR ALFARO % Extracción del programa apoyada en el libro: % Control of Dead-time Processes, Springer-Verlag, 2007 % Y apoyada en el trabajo de Julio Normey-Rico, Eduardo F. Camacho y Sergio Andres Castaño G. % %---------------------------------------------------------- % % Solution of the Diophantine equation % %---------------------------------------------------------- % %[E,F] = diophantine(A,N,d) % A = Denominator % N = Prediction Horizon % d = Transport delay %% %---------------------------------------------------------- % % CONTROL GPC % %---------------------------------------------------------- % clearvars -except t3 Sintomas_FM3 Sintomas_FM_Ref Naltrexona close all %% Parametros del sistema T=1; %Tiempo de muestreo en días Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 79 % Modelo del sistema % -1.055 z^-1 - 0.6633 z^-2 % Gz= ---------------------------- % 1 - 1.144 z^-1 + 0.2457 z^-2 B=[0 -1.055 -0.6633]; %Numerador del modelo A=[1 -1.144 0.2457]; %Denominador del modelo d=0; %Retardo de la planta %% Parametros de sintonia del GPC %Ventana de prediccion N=11; %Valor de la ventana N1=d+1; %Horizonte Inicial N2=d+N; %Horizonte Final de salida Nu=N; %Horizonte de entrada (o de control) lambda=1; %Parametro de ponderacion, no se pondera nada si son 1 delta=1; %Hallamos ahora las matrices de la función de costo, son diagonales Ql=eye(Nu)*lambda; Qd=eye(N)*delta; %% Calculo de la ecuacion Diofantina [En,F] = diophantine(A,N2,0); %Calculo de la funcion Diofantina E=En(end,:); %El polinomio E seria la ultima fila de En arrojada por la funcion diophantine F=F(N1:N1+N-1,1:end); %El polinomio F es la respuesta libre, y cogemos de él %la parte correspondiente a nuestro horizonte en el primer sector, y toda %la información en el resto de F %% Determina los coeficientes de control pasados %Elimino el cero de la primera posicion de B en caso de tenerlo, como %tenemos nosotros, antes de comenzar los cálculos. if B(1)==0 B=B(2:end); end uG=zeros(N1,N)'; %Vector de controles pasados (Pertenece a la respuesta libre) j=2; for i=N1:N2 aux=conv(En(i,1:end),B); if length(aux) < N1+j-1 %Si la longitud del auxiliar es menor que j aux=[aux zeros(1,(N1+j-1)-length(aux))]; %Completar con ceros end uG(j-1,1:N1)=aux(j:N1+j-1); j=j+1; end Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 80 g=conv(E,B); %Calcula polinomio g, producto de E y B, es por tanto los %coeficientes de la planta frente al escalón. G=zeros(N,Nu); % Inicializa la matriz G, matriz de respuesta de los %coeficientes del escalón for k=1:Nu G(k:end,k)=g(1:N-k+1); % Forma la matriz G a partir del polinomio g end Mn=inv(G'*Qd*G+Ql)*G'*Qd; %Calculo de la Funcion de Costo sin Restriccion %Calculo del controlador K1 (Primera fila de Mn) K1=Mn(1,:); %% Bucle de control %Inicializamos los parámetros de simulación drs=100; %, duracion de la simulación= NIT-1 nit=drs+1; %Número de interacciones inc_u=0; %Incremento de control predictivo Y=10; %COMIENZO DEL CONTROL u_ant(1:Y) = 0; %Inicializamos valores de salida de controles anteriores u(1:Y+d) = 0; ym(1:Y+d) = 0; r(1:Y+d) = 0; %Inicializamos la señal de control, la salida y la referencia, que durante %un tiempo serán 0 para mejor visualización en la simulación. Cabe destacar %que, realmente ym=84, pero al ser esto un offset constante, lo añadiremos %más adelante, tratando los cálculos como si fuera de valor 0 durante el %resto. Lo mismo ocurre con la referencia; inicialmente debería valer igual %que la salida ym. Además, como veremos más adelante, no empezaremos a %controlar hasta el día N. %Offsets de referencia y salida pi=84; %Referencia del usuario (referida respecto del offset) ref=8; %Transformación de la referencia con offset a sin offset %REFERENCIA COMPLEJA DE TEST r(26:30)=-(pi-ref)+40; r(31:32)=-(pi-ref)+20; r(33:37)=-(pi-ref)+15;r(38:42)=-(pi-ref)+10;r(43:47)=-(pi-ref)+5; r(48:nit) = -(pi-ref);%El indice 26 indica un t=25, cuando comienza el test %REFERENCIA SIMPLE % r((Y+1):nit)=-(pi-ref); %REFERENCIA SIMPLE DE TEST % r((25+1):nit)=-(pi-ref); %Perturbación do(1:82)= 0;do(83:84)=10; do(85:nit) = 0; %Como antes, el índice 86 indica t=85 Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 81 lduf=size(F); %Averiguo la longitud del polinomio F lduf=lduf(1,2); %Será el incremento de control de la respuesta libre luG=size(uG); %Averiguo la longitud de uG luG=luG(1,2); duf=zeros(1,luG); %Vector de incrementos de control pasados de la respuesta libre %% Comenzamos a controlar for k=(Y+1)+d:nit % Salida del proceso ym(k)=B(1)*u(k-1-d)+B(2)*u(k-2-d)-A(2)*(ym(k-1))-A(3)*(ym(k- 2))+do(k); %Cálculo de la respuesta libre teniendo en cuenta el incremento %de control de la respuesta libre free=0; for i=1:lduf free=free+ym(k-i+1)*F(:,i); end if luG==1 %Si uG es un vector columna free=free+duf*uG; %Invierto el producto, para que sea realizable else %Si uG es una matriz free=free+uG*duf'; end %Cálculo de la variable de control por incrementos inc_u=K1*(r(k)-free); %En nuestro caso, k!=1 siempre, pero habría que tener en cuenta este %detalle, que la acción de control se basa en un sumatorio. if k==1 u(k)=inc_u; else u(k)=u(k-1)+ inc_u; end dosis_a=u(k-1); %Realizamos una pequeña satuación de la variable de control if u(k)>13.5 dosis_continua=13.5; elseif u(k)<0 dosis_continua=0; else dosis_continua=u(k); end %Discretizamos las dosis if(dosis_continua > 12.54 && dosis_continua <= 13.5) dosis_n=13.5; elseif(dosis_continua > 11.58 && dosis_continua <= 12.54) dosis_n=11.58; elseif(dosis_continua > 10.59 && dosis_continua <= 11.58) dosis_n=11.58; elseif(dosis_continua > 9.6 && dosis_continua <= 10.59) dosis_n=9.6; Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 82 elseif(dosis_continua > 8.64 && dosis_continua <= 9.6) dosis_n=9.6; elseif(dosis_continua > 7.68 && dosis_continua <= 8.64) dosis_n=7.68; elseif(dosis_continua > 6.72 && dosis_continua <= 7.68) dosis_n=7.68; elseif(dosis_continua > 5.76 && dosis_continua <= 6.72) dosis_n=5.76; elseif(dosis_continua > 4.805 && dosis_continua <= 5.76) dosis_n=5.76; elseif(dosis_continua > 3.85 && dosis_continua <= 4.805) dosis_n=3.85; elseif(dosis_continua > 2.885 && dosis_continua <= 3.85) dosis_n=3.85; elseif(dosis_continua > 1.92 && dosis_continua <= 2.885) dosis_n=1.92; elseif(dosis_continua > 0.96 && dosis_continua <= 1.92) dosis_n=1.92; elseif(dosis_continua >= 0 && dosis_continua <= 0.96) dosis_n=0; end %Programamos un cambio de dosis controlado switch dosis_n case 13.5 if(dosis_a>=9.6) dosis_nueva=13.5; elseif(dosis_a==7.68) dosis_nueva=11.58; elseif(dosis_a==5.76) dosis_nueva=9.6; elseif(dosis_a==3.85) dosis_nueva=7.68; elseif(dosis_a==1.92) dosis_nueva=5.76; else dosis_nueva=3.85; end case 11.58 if(dosis_a>=7.68) dosis_nueva=11.58; elseif(dosis_a==5.76) dosis_nueva=9.6; elseif(dosis_a==3.85) dosis_nueva=7.68; elseif(dosis_a==1.92) dosis_nueva=5.76; else dosis_nueva=3.85; end case 9.6 if(dosis_a>=5.76) dosis_nueva=9.6; elseif(dosis_a==3.85) dosis_nueva=7.68; elseif(dosis_a==1.92) dosis_nueva=5.76; else Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 83 dosis_nueva=3.85; end case 7.68 if(dosis_a==13.5) dosis_nueva=9.6; elseif(dosis_a>=3.85 && dosis_a<=11.58) dosis_nueva=7.68; elseif(dosis_a==1.92) dosis_nueva=5.76; else dosis_nueva=3.85; end case 5.76 if(dosis_a==13.5) dosis_nueva=9.6; elseif(dosis_a==11.58) dosis_nueva=7.68; elseif(dosis_a>=1.92 && dosis_a<=9.6) dosis_nueva=5.76; else dosis_nueva=3.85; end case 3.85 if(dosis_a==13.5) dosis_nueva=9.6; elseif(dosis_a==11.58) dosis_nueva=7.68; elseif(dosis_a==9.6) dosis_nueva=5.76; elseif(dosis_a<=7.68) dosis_nueva=3.85; end case 1.92 if(dosis_a==13.5) dosis_nueva=9.6; elseif(dosis_a==11.58) dosis_nueva=7.68; elseif(dosis_a==9.6) dosis_nueva=5.76; elseif(dosis_a==7.68) dosis_nueva=3.85; elseif(dosis_a<=5.76) dosis_nueva=1.92; end case 0 if(dosis_a==13.5) dosis_nueva=9.6; elseif(dosis_a==11.58) dosis_nueva=7.68; elseif(dosis_a==9.6) dosis_nueva=5.76; elseif(dosis_a==7.68) dosis_nueva=3.85; elseif(dosis_a==5.76) dosis_nueva=1.92; elseif(dosis_a<=3.85) Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 84 dosis_nueva=0; end end u(k)= dosis_nueva; %Actualizamos el vector de valores de control pasados aux_u=u_ant(1:length(B)-1); u_ant=[u(k) aux_u]; %Y actualizaremos los incrementos de control pasados, que se usan en la %respuesta libre. aux_2=duf(1:end-1); duf=[inc_u aux_2]; end %% Para representar, solo debemos usar la funcion "graficas" %% FUNCION DIOFANTINA %-------------------------------------- function[E,F] = diophantine(A,N,d) delta = [1 -1]; AD = conv(A,delta); nAD = size(AD); nAD = nAD(2); N1 = d +1; N2 = d + N; f(1,:)= [1 zeros(1,nAD-2)]; for j = 1: N2 for i = 1:nAD-2 f(j+1,i) = f(j,i+1)-f(j,1)*AD(i+1); end f(j+1,nAD-1) = -f(j,1)*AD(nAD); end F = f(1+N1:1+N2,:); % Computes E(z^-1) E = zeros(N2); e(1) = 1; % for the special case 1/~A E(1,1) = e(1); for i = 2: N2 e(i) = f(i,1); E(i,1:i)=e; end E = E(N1:N2,:); Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 91 end case 0 if(dosis_a==13.5) dosis_nueva=9.6; elseif(dosis_a==11.58) dosis_nueva=7.68; elseif(dosis_a==9.6) dosis_nueva=5.76; elseif(dosis_a==7.68) dosis_nueva=3.85; elseif(dosis_a==5.76) dosis_nueva=1.92; elseif(dosis_a<=3.85) dosis_nueva=0; end end u(k)= dosis_nueva; %Actualizamos el vector de valores de control pasados aux_u=u_ant(1:length(B)-1); u_ant=[u(k) aux_u]; %Y actualizaremos los incrementos de control pasados, que se usan en la %respuesta libre. aux_2=duf(1:end-1); duf=[inc_u aux_2]; end %% Para representar, solo debemos usar la funcion "graficas" %Esta sección solo muestra los resultados a solas nm=nit; if((drs/round(drs/der)>=der)) rreal=rpa(1:round(drs/der)); else rreal=rpa(1:(round(drs/der)-1)); end tiem=der:der:drs; t = 0:T:(nm-1)*T; sal=ym+pi; for U=0:T:(nm-1)*T if(sal(U+1)<0) sal(U+1)=0; end end %figure subplot(2,1,1),plot(t,(r+pi),'--k',t,sal,'r', tiem,rreal,'*g','Linewidth',2) xlabel('t(dias)');ylabel('Sintomas (%)');title('Sintomas FM'); legend('ref','Predictivo','Revision','Location','Best'); grid on; hold on; subplot(2,1,2),plot(t,u,'r','Linewidth',2) xlabel('t(dias)');ylabel('Naltrexona (mg)'); title('Dosis Naltrexona'); legend('Predictivo'); grid on; hold on; Estudio de la Enfermedad de la Fibromialgia como Sistema de Control 2019 92 %% FUNCION DIOFANTINA %-------------------------------------- function[E,F] = diophantine(A,N,d) delta = [1 -1]; AD = conv(A,delta); nAD = size(AD); nAD = nAD(2); N1 = d +1; N2 = d + N; f(1,:)= [1 zeros(1,nAD-2)]; for j = 1: N2 for i = 1:nAD-2 f(j+1,i) = f(j,i+1)-f(j,1)*AD(i+1); end f(j+1,nAD-1) = -f(j,1)*AD(nAD); end F = f(1+N1:1+N2,:); % Computes E(z^-1) E = zeros(N2); e(1) = 1; % for the special case 1/~A E(1,1) = e(1); for i = 2: N2 e(i) = f(i,1); E(i,1:i)=e; end E = E(N1:N2,:); end