DISEÑO ÓPTIMO DE MECANISMOS DE CUATRO BARRAS PARA GENERACIÓN DE MOVIMIENTO CON RESTRICCIONES DE MONTAJE Y ÁNGULO DE TRANSMISIÓN. HERIBERTO AUGUSTO PINTO LINARES UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE INGENIERÍA y ARQUITECTURA DEPARTAMENTO DE INGENIERIA ELÉCTRICA, ELECTRÓNICA y COMPUTACIÓN SEDE MANIZALES Octubre de 2007 DISEÑO ÓPTIMO DE MECANISMOS DE CUATRO BARRAS PARA GENERACIÓN DE MOVIMIENTO CON RESTRICCIONES DE MONTAJE Y ÁNGULO DE TRANSMISIÓN. HERIBERTO AUGUSTO PINTO LINARES Memoria del trabajo de tesis presentado como requisito parcial para optar por el grado de MAGÍSTER EN INGENIERÍA: AUTOMATIZACIÓN INDUSTRIAL FABIOLA ANGULO GARCIA Ph.D. – Directora de la tesis ANDRÉS TOVAR PÉREZ, Ph.D. – Co-director de la tesis UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE INGENIERÍA y ARQUITECTURA DEPARTAMENTO DE INGENIERIA ELÉCTRICA, ELECTRÓNICA y COMPUTACIÓN SEDE MANIZALES Octubre de 2007 a Judi Isabel. Mi esposa María Eugenia. Mi madre Laura Catalina & Sofía Alejandra. Mis hijas RESUMEN Este trabajo parte del estudio de la forma de díada estándar y de cómo podría usarse para encontrar soluciones óptimas para la tarea de generación de movimiento cuando se cuenta con restricciones de montaje asociadas con la ubicación de los pares fijos del mecanismo. Debido a su incidencia en la forma como se transfiere el movimiento desde el eslabón de entrada hacia el de salida, así como a su afectación sobre otras características del mecanismo, el ángulo de transmisión es el índice de mérito a optimizar. Dado que era necesario optimizar el ángulo de transmisión para múltiples posiciones prescritas y que cada posición estaba descrita mediante una expresión diferente, fue necesario usar una estrategia para optimización multiobjetivo. La estrategia empleada fue la “suma ponderada de funciones”. La formulación del problema de optimización se hizo considerando 2, 3, 4 y 5 posiciones prescritas. Las expresiones obtenidas para describir el modelo son de naturaleza no lineal y por lo tanto para resolver el problema de diseño óptimo se usó una técnica de programación no lineal. Basado en la técnica “programación cuadrática secuencial” (SQP) se desarrolló un algoritmo usando MATLAB. Para introducir los datos prescritos, proporcionar la condición inicial de manera fácil e intuitiva, correr el algoritmo y visualizar sus resultados, se desarrolló un GUI. AGRADECIMIENTOS Para el desarrollo de este trabajo de tesis fueron invaluables la directrices proporcionadas por la Doctora Fabiola Angulo García Docente de la Facultad de Ingeniería y Arquitectura, Departamento de Ingeniería Eléctrica, Electrónica y Computación de la Universidad Nacional Sede Manizales, y el Doctor Andrés Tovar Pérez Director Académico de la Universidad Nacional Sede Bogotá, a quienes además agradezco enormemente su apoyo y colaboración. CONTENIDO INTRODUCCIÓN y MOTIVACIÓN 12 1. MARCO TEÓRICO 14 1.1. TEORÍA SOBRE MECANISMOS 14 1.1.1. Síntesis cinemática 15 1.1.2. Categorías de la síntesis cinemática 15 1.1.3. Métodos y técnicas de síntesis cinemática 16 1.1.4. Diseño óptimo de mecanismos 17 1.1.5. Descripción del ángulo de transmisión μ 18 1.1.6. Expresión del ángulo de transmisión μ 18 1.1.7. ¿Porque optimizar μ ? 19 1.2. TEORÍA SOBRE OPTIMIZACIÓN 21 1.2.1. Variables de diseño 21 1.2.2. Función de costo u objetivo 21 1.2.3. Método de la suma ponderada de funciones 23 1.2.4. Maximización 23 1.2.5. Restricciones del sistema 24 1.2.6. Forma estándar del modelo 24 1.2.7. Restricciones activas, inactivas y violadas 25 1.2.8. Solución del problema de optimización 25 2. MODELAMIENTO 27 2.1. EL OPERADOR DE ROTACIÓN PURA 27 2.2. FORMA DE LA DIADA ESTANDAR 29 2.3. VARIABLES DE DISEÑO y FUNCION DE COSTO 31 2.4. RESTRICCIONES 36 2.4.1. Primera restricción 36 2.4.2. Segunda restricción 37 2.4.3. Tercera restricción 40 2.4.4. Otras restricciones 41 3. FORMULACIÓN DEL PROBLEMA SEGÚN LA FORMA ESTANDAR 43 3.1. VARIABLES DE DISEÑO 44 3.2. VECTOR DE FUNCIONES OBJETIVO 45 3.2.1. Optimización multiobjetivo 48 3.2.2. Método de la suma ponderada 49 RESTRICCIONES DE DISEÑO 49 3.3. 3.3.1. Tipo desigualdad 49 3.3.2. Tipo igualdad 51 ENUNCIADOS DEL PROBLEMA DE OPTIMIZACIÓN 53 3.4.1. Enunciado del problema para 2 posiciones prescritas 53 3.4.2. Enunciado del problema para 3 posiciones prescritas 54 3.4.3. Enunciado del problema para 4 posiciones prescritas 56 3.4.4. Enunciado del problema para 5 posiciones prescritas 57 3.4. 3.5. SOLUCIÓN DEL PROBLEMA DE OPTIMIZACIÓN USANDO MATLAB 59 4. RESULTADOS 61 4.1. EJEMPLOS DE APLICACIÓN PARA 2 POSICIONES PRESCRITAS 61 4.1.1. Descripción del dibujo ilustrado en la ventana de datos (Figura 21) 63 4.1.2. Descripción del dibujo ilustrado en la ventana de resultados (Figura 22) 63 4.2. EJEMPLO DE APLICACIÓN PARA 3 POSICIONES PRESCRITAS 67 4.3. EJEMPLO DE APLICACIÓN PARA 4 POSICIONES PRESCRITAS 69 5. CONCLUSIONES 70 6. TRABAJO FUTURO 72 REFERENCIAS 73 ANEXO A - DESCRIPCIÓN DE LA INTERFAZ GRÁFICA 75 ANEXO B - MANUAL DE USUARIO 77 ANEXO C - CÓDIGO DEL ALGORITMO 83 LISTA DE FIGURAS Figura 1. Representación de un mecanismo de 4 barras 14 Figura 2. Mecanismo generador de movimiento: Tren de aterrizaje de un avión miniatura 16 Figura 3. Angulo de transmisión μ 18 Figura 4. Enfoque geométrico del ángulo de transmisión μ 19 Figura 5. Relación geométrica entre la ventaja mecánica y el ángulo μ 20 Figura 6. Gráfica de una función objetivo. 22 Figura 7. Maximización de una función objetivo. 23 Figura 8. Representación vectorial de un mecanismo generador de movimiento 27 Figura 9. Mecanismo en varias posiciones sucesivas. 28 Figura 10. Ángulos y vectores para el modelamiento del mecanismo. 29 Figura 11. Díada del motriz X2 y del acoplador X5 30 Figura 12. Vector de posición R0 38 Figura 13. Descripción de la tercera restricción 40 Figura 14. Espacio factible para los pares fijos 41 Figura 15. Datos y variables para 2 posiciones prescritas. 43 Figura 16. Datos y variables para 3 posiciones prescritas. 43 Figura 17. Datos y variables para 4 posiciones prescritas. 44 Figura 18. Datos y variables para 5 posiciones prescritas. 44 Figura 19. Estructura general del algoritmo 60 Figura 20. Datos del problema 1. Síntesis de 2 posiciones 62 Figura 21. Ventana de datos del problema 1. Síntesis de 2 posiciones 62 Figura 22. Ventana de resultados del problema 1. Síntesis de 2 posiciones 63 Figura 23. Dibujo del mecanismo del problema 1 en su entorno operativo. 64 Figura 24. Ventanas de datos y resultados del problema 2. Síntesis de 2 posiciones 65 Figura 25. Ventana de datos y resultados del problema 3. Síntesis de 2 posiciones 66 Figura 26. Ventana de datos y resultados del problema. Síntesis de 3 posiciones 67 Figura 27. Solución alternativa para el problema de síntesis de 3 posiciones 68 Figura 28. Ventana de datos y resultados del problema. Síntesis de 4 posiciones 69 Figura 29. Ventana de datos prescritos 75 Figura 30. Ventana de Resultados 76 Figura 31. Orientación de cada posición prescrita. 78 Figura 32. Posición relativa de cada posición prescrita. 78 Figura 33. Posición relativa de la zona del bastidor. 79 Figura 34. Condición inicial 81 LISTA DE TABLAS Tabla 1. Estado de una restricción. 25 Tabla 2. Factores de peso del vector de objetivos 49 Tabla 3. Archivo de datos. Dos_posic_DAT.m 84 Tabla 4. Archivo principal. Dos_posic_EXE.m 84 Tabla 5. Archivo de funciones objetivo. Dos_posic_fun.m 86 Tabla 6. Archivo de restricciones. Dos_posic_Res.m 87 INTRODUCCIÓN y MOTIVACIÓN Esta tesis incluye un trabajo en el campo de la síntesis dimensional de mecanismos que se enmarca dentro del área de la dinámica de cuerpos rígidos, particularmente en la rama de la cinemática que trata del estudio de la geometría del movimiento sin hacer referencia a la causa que lo produce. Cuando se requiere un artefacto que sea capaz de guiar un cuerpo a través de una secuencia de movimientos prescrita, generalmente se piensa que la solución es un sistema automatizado de actuadores mecánicos que coordinados electrónicamente cumplen con la tarea de movimiento, sin embargo la solución será costosa y estará sobredimensionada a menos que la tarea deba “ajustarse” en función del ambiente operativo. Las tareas de conducción de cuerpo rígido que no requieran “ajustarse”, pueden satisfacerse mediante mecanismos de barras generadores de movimiento, que son un recurso económico, práctico, confiable y fácil de implementar; sin embargo no siempre es fácil obtener un diseño que satisfaga las restricciones de montaje presentes en una necesidad de movimiento real y que además tenga índices de mérito adecuados. Un índice de mérito ayuda a identificar dentro de un conjunto de soluciones, cual es la que con mayor efectividad transmite el movimiento. Se eligió el ángulo de transmisión como el índice a optimizar debido a su afectación directa sobre importantes parámetros de funcionamiento del mecanismo, tales como la ventaja mecánica, la razón de velocidades angulares y el ángulo de presión. Para la formulación del problema de optimización se eligió el conjunto de variables de diseño apropiado de manera que puedan representarse los eslabones de un mecanismo generador de movimiento que debe pasar a través de 2, 3, 4 o 5 posiciones prescritas y cuyos pares fijos deben confinarse dentro de un área específica. La tarea de generación de movimiento (posición y orientación del eslabón acoplador) se satisface mediante las restricciones de diseño. Para simplificar la formulación del problema se aplicó el concepto del operador de rotación pura. El ángulo de transmisión para cada posición prescrita se describe mediante una expresión diferente por lo tanto fue necesario obtener un vector de objetivos. Como era de importancia que tal ángulo tuviese valores óptimos particularmente en las posiciones inicial y final, se aplicó la estrategia de la “suma ponderada de funciones” de forma que se destacaron las funciones objetivo correspondientes. Dado que las expresiones obtenidas para describir el modelo son de naturaleza no lineal, se usó la técnica “programación cuadrática secuencial” (SQP), que representa el estado del 12 arte en las técnicas de programación no lineal (NLP) basadas en la filosofía de la dirección de descenso. Cuando se emplea SQP (y la gran mayoría de métodos de optimización) la solución depende en gran medida de la condición inicial. Así que es probable que sea necesario probar diversos conjuntos de datos hasta encontrar una solución, pero para el caso que atañe este trabajo, preparar e introducir los datos correspondientes en forma manual era una tarea larga y tediosa, y en la mayoría de las veces no se sabía si se avanza en la dirección correcta. Por lo tanto se desarrolló una interfaz gráfica (GUI) que permite señalar mediante el Mouse de forma rápida e intuitiva dicha condición inicial, además ayuda a “seguirle la pista” a una mejor solución. El algoritmo y el GUI desarrollados le ofrecen al diseñador una buena herramienta para encontrar mecanismos de barras, que de manera eficientes solucionen los problemas asociados con la conducción de un cuerpo rígido a través de una serie de posiciones prescritas. 13 1. MARCO TEÓRICO 1.1. TEORÍA SOBRE MECANISMOS Reuleaux 1 , define mecanismo como una "combinación de cuerpos resistentes conectados por medio de articulaciones para formar una cadena cinemática cerrada con un eslabón fijo y cuyo propósito es transformar el movimiento". En un mecanismo las articulaciones se denominan pares; los cuerpos resistentes eslabones; y el eslabón fijo bastidor o marco. El eslabón que no está unido directamente al bastidor se designa como acoplador. El mecanismo formado por cuatro eslabones (de tipo barra) y cuatro pares de revoluta (pasador) es el más simple que existe, no obstante en el ámbito industrial es el más utilizado a todo nivel, desde juguetes y electrodomésticos hasta máquinas herramientas de alta precisión. Su versatilidad y extendido uso se debe fundamentalmente a su simplicidad y a la posibilidad de enlazarse con otros eslabonamientos para formar mecanismos de 5 o más eslabones. En la Figura 1 se ilustra los eslabones y pares de un mecanismo de 4 barras, tanto en representación detallada 1(a) como en forma vectorial 1(b). Figura 1. Representación de un mecanismo de 4 barras B 3 X3 A X4 4 X2 2 O2 1 O4 X1 (b) (a) El eslabón 1 o X1 es el bastidor o marco, el eslabón 2 o X2 es el de entrada o motriz, el eslabón 3 es el flotante o acoplador X3, el eslabón 4 o X4 es el de salida o seguidor. 1 F. Reuleaux (1829 - 1905). Especialista Alemán en cinemática cuyo trabajo marcó el principio de un estudio sistemático de la cinemática. 14 El estudio de los mecanismos se puede dividir en 2 partes; análisis y síntesis. En el análisis se evalúa si un mecanismo existente es adecuado para desarrollar cierto trabajo o tarea, mientras que en la síntesis se establecen tamaños, formas, composición y disposición de los eslabones para que desempeñen una tarea de movimiento prescrita. Concretamente, la síntesis cinemática busca encontrar el mecanismo adecuado que reproduzca un movimiento particular 1.1.1. Síntesis cinemática Dependiendo del punto de partida en un problema de diseño de mecanismos, la síntesis cinemática puede ser [Erdman, 1997]: • Síntesis de Tipo: busca definir cual es la combinación topológica (barras, ruedas dentadas, leva-seguidor etc.) de eslabones y el tipo de articulaciones (pares de revoluta, prismático, helicoidal, de rodadura etc.) más apropiada para resolver una tarea de movimiento. • Síntesis Dimensional: se parte del conocimiento de la topología del mecanismo (número y tipo de eslabones y pares) y busca establecer las dimensiones y posición inicial de una potencial solución para una tarea de movimiento. La síntesis dimensional se utiliza preferiblemente en la creación de mecanismos cuya topología es un eslabonamiento de barras. Dependiendo de la tarea que un mecanismo desempeñe, se puede clasificar dentro de algunas de las siguientes categorías. 1.1.2. Categorías de la síntesis cinemática Erdman y Sandor [Erdman, 1997] clasifican los mecanismos que realizan una determinada tarea, de la siguiente forma: • Generador de movimiento: aquí es muy importante el movimiento total del acoplador (Posición y orientación angular). Ver la Figura 2. • Generador de función: aquí resulta de interés las fuerzas o el movimiento relativo entre los eslabones conectados a tierra. • Generador de trayectoria: aquí es de interés la trayectoria que sigue un punto ubicado sobre el acoplador (curva de acoplador) y no la rotación misma de este. 15 Figura 2. Mecanismo generador de movimiento: Tren de aterrizaje de un avión miniatura Acoplador Fuselaje 65.6° 90.0° A 148.0° B Tren de aterrizaje de un avión miniatura A = 0,0 B = 13.4,-15.8 C = 27.7,-18.8 C Fuente: Basado en el problema 8.20 de [Erdman, 1997] El diseño de cualquiera de estos mecanismos se puede hacer de muchas formas posibles. 1.1.3. Métodos y técnicas de síntesis cinemática Para diseñar un mecanismo siempre se parte de ciertos datos y restricciones, como por ejemplo; un número de posiciones, un movimiento específico del eslabón de seguidor o de salida o una trayectoria particular, una ubicación de los pares fijos, etc. De tales datos se obtiene la geometría de unos puntos a través de los cuales se debe mover la solución encontrada. Los métodos para encontrar dicha solución se pueden agrupar de la siguiente forma [Norton, 2005]: • Métodos basados en puntos de precisión: Se usan para síntesis dimensional. El mecanismo obtenido pasa exactamente a través de los puntos pero es probable que pueda desviarse entre ellos. Estos métodos acoplan un máximo de 9 puntos (hasta 5 puntos en la generación de movimiento, 7 en la generación de función y 9 en la generación de trayectoria). Se pueden usar para sintetizar cualquiera de los generadores descritos anteriormente, además son relativamente rápidos, fáciles de comprender y de llevar a las aulas de clase, son computacionalmente viables, pueden resolver problemas con pares fijos o encontrar muchas soluciones, desafortunadamente no puede entregar soluciones óptimas o al menos eliminar las defectuosas. Su mayor limitación está en los pocos puntos que pueden manejar, sobre todo para tareas críticas como generación de función 16 y trayectoria donde son deseables más de 7 ó 9 puntos, sin embargo en el ámbito industrial un generador de movimiento puede trabajar muy bien con solo 3 ó 4 puntos. Allí lo que importa no es el número de puntos sino que la solución sea simple, eficiente, funcional y libre de defectos. • Métodos basados en ecuaciones de la curva del eslabón acoplador: Se usan para síntesis dimensional. El mecanismo obtenido debe seguir una curva de acoplador que se aproxime a la forma descrita por una ecuación algebraica (de orden 6 y hasta de 15 términos). Pueden manejar entre 10 y 15 puntos y solo se pueden usan en generadores de trayectoria. • Métodos de optimización: Se usan para síntesis de tipo y dimensional. Tienen muy poco en común excepto la necesidad de ser programadas en un computador y de una función objetivo. La función se construye a partir de los datos y condiciones del problema. A esta se le aplica una técnica de optimización de la que resultan los puntos que describen una trayectoria particular, los puntos de esta trayectoria no pasan exactamente por la trayectoria deseada pero se aproximan lo suficiente como para ser aceptados en la mayoría de trabajos de ingeniería. Manejan grandes cantidades de puntos (Implica una carga computacional mas alta) y aunque pueden usarse en cualquier tarea de generación se usan preferiblemente en las de trayectoria y función. Cuando hay numerosas condiciones de diseño, encontrar la función objetivo puede ser una tarea más titánica que encontrar la solución misma (aun para la popular técnica de los mínimos cuadrados). El advenimiento de computadores poderosos ha contribuido en gran medida a que estas técnicas tengan tantos adeptos, sin embargo la mayoría de los métodos son complejos y matemáticamente complicados. 1.1.4. Diseño óptimo de mecanismos La solución obtenida al diseñar un mecanismo de barras generador de movimiento, además de satisfacer las restricciones geométricas y de montaje presentes en una necesidad de movimiento real, debe tener índices de mérito adecuados. Los índices de mérito [Uicker, 2003] revelan si un mecanismo es eficiente o no y pueden determinarse exclusivamente mediante la geometría del mismo. Existen numerosos índices, tales como la ventaja mecánica, la razón de las velocidades de salida a la de entrada, el ángulo de presión, etc. Sin embargo es el ángulo de transmisión μ, el índice que ayuda a identificar dentro de un conjunto de soluciones, cual es la que con mayor efectividad transmite el movimiento, además está relacionado en forma directa con otros índices, de manera que su afectación incide en ellos. Se puede afirmar que un buen ángulo de transmisión es la solución a muchos de los problemas en mecanismos [Balli, 2002]. 17 1.1.5. Descripción del ángulo de transmisión μ El ángulo de transmisión μ es un índice de mérito, que se define como el menor ángulo entre la dirección del vector de diferencia de velocidad VB/A del eslabón flotante (acoplador) y la dirección de la velocidad absoluta VB del eslabón de salida (seguidor), ambas direcciones tomadas en el último par móvil del mecanismo [Hartenberg, 1964] (ver la Figura 3a). Es importante señalar que μ depende de cuales eslabones se han elegido como acoplador y seguidor; por ejemplo si se transpone la función de los eslabones unidos a tierra, convirtiéndose al motriz en seguidor y viceversa, μ debe medirse en el par A, no en B. Cuando los vectores X3 y X4 forman un ángulo agudo, los ángulos μ y γ de la Figura 3 son congruentes y por lo tanto μ = γ. Si el ángulo incluido entre dichos vectores, no es agudo entonces μ = 180 - γ. El ángulo μ cambia a medida que el mecanismo se mueve. En un mecanismo de 4 barras, μ está comprendido entre 0 y 90º. Figura 3. Angulo de transmisión μ μ B B X3 γ A μ VB X3 γ VB/A X4 X4 μ = π2 B X2 X3 γ X4 X1 (a) (b) 1.1.6. Expresión del ángulo de transmisión μ Como en el diseño cinemático de mecanismos no se conocen las longitudes de los eslabones ni sus masas, la expresión del ángulo de transmisión debe obtenerse cinemáticamente. Aplicando el enfoque geométrico sugerido por [Balli, 2002] a los módulos de los vectores mostrados en la Figura 4 se puede deducir una expresión para el ángulo μ. Al aplicar el teorema del coseno a los triángulos O2AO4 y BAO4 se infiere que H 2 = X 12 + X 22 − 2 X 1 X 2 cos θ y H 2 = X 32 + X 42 − 2 X 3 X 4 cos γ . Si se iguala H y se despeja γ , se obtiene: 18 ⎡ − X 12 − X 22 + 2 X 1 X 2 cos θ + X 32 + X 43 ⎤ γ = cos ⎢ ⎥ 2X3 X4 ⎣ ⎦ ⎧ γ μ = min ⎨ ⎩π − γ −1 (1) Figura 4. Enfoque geométrico del ángulo de transmisión μ B X3 B X3 γ A γ A A X4 X4 H X2 X2 θ θ O4 O4 O2 O4 X1 O2 X1 1.1.7. ¿Porque optimizar μ ? El ángulo μ guarda una importante relación con la ventaja mecánica. Esta última es una medida de la capacidad con que un mecanismo transmite un movimiento. Para el caso de un mecanismo de 4 barras es la relación instantánea entre el momento de carga resistiva τ4 en el eslabón de salida y el momento de entrada τ2 aplicado al eslabón de entrada, es decir: VM= τ4 τ2 Si se supone que el mecanismo de la Figura 5, carece de fuerzas de inercia o de fricción durante su operación, o que estas son despreciables comparadas con τ2 y τ4 , se puede afirmar que la potencia de entrada aplicada al eslabón de entrada es el negativo de la potencia aplicada al eslabón de salida debido a la acción de la carga, es decir: τ 2 ω2 = − τ 4 ω4 → τ4 ω =− 2 τ2 ω4 (cualquiera de estas 2 razones puede usarse como indice de mérito) Del teorema de la razón de velocidades “la razón de las velocidades angulares de 2 cuerpos cualesquiera en movimiento plano, en relación con un tercer cuerpo, es inversamente 19 proporcional a los segmentos en los que el centro instantáneo común corta la línea de los centros” y de la Figura 5 se puede inferir que: ω2 CO 4 τ ω CO4 y por lo tanto 4 = − 2 = − = ω4 CO 2 τ2 ω4 CO2 Figura 5. Relación geométrica entre la ventaja mecánica y el ángulo μ B' B μ A A' Centro instantáneo de los eslabones 2 y 4 4 ρ 2 Linea de centros C O2 τ2 τ4 ω2 ω4 O4 Por triángulos semejantes se puede observar que: O 4 B sin ( μ ) CO 4 O 4 B sin ( μ ) τ ω = y por lo tanto la ventaja mecánica es: VM = 4 = − 2 = − CO 2 O 2 A sin ( ρ ) τ2 O 2 A sin ( ρ ) ω4 Como se evidencia la ventaja mecánica es directamente proporcional al sin (μ), entonces valores pequeños del ángulo, la empequeñecen y por lo tanto reducen la efectividad con que se transmite el movimiento desde el acoplador hacia el seguidor, incluso una cantidad muy pequeña de fricción hará que el mecanismo se trabe [Uicker, 2003]. El mínimo valor de μ sugerido por Tao esta entre 35 y 45º [D. C. Tao, 1964], Von H. Alt propone 40º [Von H. Alt, 1932], en concordancia con una regla empírica general, Edman y Sandor sugiere rechazar cualquier mecanismo de justas de revoluta (pasador), que tenga ángulos de transmisión menores a 30º [Erdman,1997]. Cuanto menos se desvíe μ de 90º, mejor será el funcionamiento del mecanismo, por lo tanto el valor óptimo de μ es 90º [Balli, 2003]. En el enunciado del problema de diseño de un generador de movimiento, las posiciones a través de las cuales el mecanismo debe moverse son conocidas. Es de suma importancia que μ tenga valores óptimos en tales posiciones, sobre todo en la inicial y la final. 20 Otro índice de mérito que está directamente relacionado con el ángulo μ es el ángulo de presión λ. El ángulo λ es también un buen indicador de la calidad con que se transmite el movimiento, pero es principalmente un factor que establece el grado de sensitividad del mecanismo a pequeños errores en la fabricación de sus eslabones. Un valor alto de este ángulo sumado a errores de diseño o construcción (por ejemplo, debido a tolerancias geométricas inadecuadas) hará que el mecanismo tienda a bloquearse con facilidad [Sutherland, 1974]. Pequeños ángulos de presión son consistentes con mínimos errores mecánicos [Hartenberg, 1964]. El ángulo λ es el complemento del ángulo μ, es decir λ = 90 - μ . Los argumentos enunciados en esta sección son suficiente evidencia para demostrar por qué debe optimizarse el ángulo μ. 1.2. TEORÍA SOBRE OPTIMIZACIÓN Uno de los mayores desafíos para cualquier diseñador es encontrar un sistema eficiente y económico que sin comprometer su integridad, pueda resolver un problema particular. Las técnicas de optimización ofrecen al diseñador un camino para alcanzar este objetivo, y se basan en conceptos matemáticos como el algebra vectorial y el cálculo con múltiples variables. El riguroso proceso para encontrar soluciones mediante optimización implica identificar un conjunto de variables de diseño, definir la función de costo u objetivo y las funciones que restringen el sistema. A este proceso se le conoce como formulación matemática del problema de diseño. Es generalmente aceptado que la correcta formulación toma alrededor del 50% del esfuerzo total necesario para resolverlo. 1.2.1. Variables de diseño El primer paso en la formulación del problema, consiste en identificar el conjunto de variables x = ( x1 , x2 ,..., xn ) que describen al sistema, cuando a estas se le asigna un valor numérico se obtiene una solución al problema. Si la solución no satisface todas las restricciones, se considera que no es factible. Es deseable que las variables sean independientes unas de otras, tanto como sea posible o de lo contrario habría que añadir más restricciones al sistema para que no haya inconsistencias, lo que podría complicar innecesariamente la formulación del problema. Obteniendo las variables dependientes en términos de las independientes o asignándoles valores numéricos es posible eliminarlas. 1.2.2. Función de costo u objetivo Un problema particular puede tener muchas soluciones posibles, algunas de las cuales son mejores que otras. Para establecer cuales son las mejores se debe tener unos criterios que 21 permitan hacerlo. Un criterio usado es el de la función objetivo f ( x ) , que es una función escalar cuyo valor numérico se obtiene al darle valores a las variables de diseño. La mejor solución del problema será la configuración de variables de diseño que minimice tal función. Por ejemplo, dada la función objetivo de cierto sistema f ( x ) = 200 − 170 x + 54 x 2 es necesario encontrar el valor de x que minimice a f ( x ) . Cada valor dado a x arroja otro valor para f ( x ) ; por ejemplo para el punto A de la grafica de la función mostrada en la Figura 6, x = 0 → f ( x ) = 200 ; en el punto B , x = 0.5 → f ( x ) = 128.5 , para este caso solo hay un punto que hace que la función adquiera el mínimo valor y es el punto C, donde x = 1.574 → f ( x ) = 66.204 . Figura 6. Gráfica de una función objetivo. Concluyendo; en un problema de optimización es la función objetivo quien valora el funcionamiento de un sistema. En algunos problemas es posible que sea necesario optimizar en forma simultánea 2 o más funciones objetivo (por ejemplo minimizar el peso y la deflexión del armazón de una máquina), a los cuales se les denomina problemas de optimización multiobjetivo. Aquí lo que se busca es minimizar un vector de objetivos F ( x ) . Como cada una de las funciones que compone dicho vector compite con las demás, al encontrarse una solución el logro de una función implicará la degradación de las otras [Pareto, 1971]. Aunque existen 22 numerosas técnicas para obtener el vector de objetivos, solo se describe la técnica de la “Suma ponderada” que se usa en este trabajo. 1.2.3. Método de la suma ponderada de funciones La técnica emplea unos coeficientes de peso que por lo general establecen el grado de importancia de las funciones objetivo dentro del vector F ( x ) . El vector se expresa de la siguiente manera: n F ( x ) = ω1 f1 ( x ) + ω2 f 2 ( x ) + ... + ωn f n ( x ) es decir F ( x ) = ∑ ωn f n ( x ) i =1 en donde ω es no negativo; ω1 + ω2 + ... + ωn = 1; n > 1 ; n ∈ * 1.2.4. Maximización El problema de maximización se aborda transformando la función objetivo de manera que f ( x ) = −ℑ ( x ) . Al transformar la función de la sección 1.2.2, resulta ℑ ( x ) = −(200 − 170 x + 54 x 2 ) = −200 + 170 x − 54 x 2 , cuya gráfica se observa en la siguiente figura. El valor de x que maximiza la función se da cuando x = 1.574 → ℑ ( x ) = −66.204 Figura 7. Maximización de una función objetivo. Se evidencia que f ( x ) es una reflexión de ℑ ( x ) con relación al eje x , y que el mínimo valor de f ( x ) ocurre en el mismo punto donde ℑ ( x ) es máximo. Por lo tanto la minimización de f ( x ) es equivalente a la maximización de ℑ ( x ) . 23 1.2.5. Restricciones del sistema El sistema a diseñar puede tener condiciones que limitan su operación. Para la formulación matemática del problema de diseño tales condiciones son denominadas restricciones, que son funciones del tipo igualdad h ( x ) o del tipo desigualdad g ( x ) y se obtienen en términos de las variables de diseño. Las restricciones pueden ser tan simples como el mínimo (o máximo) valor de dichas variables o pueden tan complejas como una expresión no lineal. Las restricciones h ( x ) definen de manera precisa la condición que debe ser satisfecha por la solución (por ejemplo x = 3 ) lo que puede limitar significativamente el espacio o región de soluciones factibles, mientras que las restricciones g ( x ) lo hacen de una forma laxa. La colección de todas las soluciones factibles se conoce como región factible y se denota Ω . Una formulación con muchas restricciones hace que Ω se encoja. Cuando los valores encontrados para las variables de diseño satisfacen las restricciones, se dice que es un punto de diseño y se denota como x* . Dependiendo de cómo se satisfacen estas, se pueden considerar como activas, inactivas o violadas. 1.2.6. Forma estándar del modelo La forma estándar del modelo es un esfuerzo por unificar el lenguaje para formular matemáticamente un problema de optimización sin importar el campo del saber al cual pertenezca. El enunciado del problema debe transcribirse de la siguiente manera: Encontrar un vector-n función objetivo. x = ( x1 , x2 , . . . , xn ) de variables de diseño para minimizar la f ( x ) = f ( x1 , x2 , . . . , xn ) Sujeto a p restricciones de tipo igualdad. h j ( x ) ≡ h j ( x1 , x2 , . . . , xn ) = 0; j = 1 hasta p Sujeto a m restricciones de tipo desigualdad. gi ( x ) ≡ gi ( x1 , x2 , . . . , xn ) ≤ 0; i = 1 hasta m En donde p es el número total de restricciones tipo igualdad y m es el número total de restricciones tipo desigualdad. El número de restricciones h j ( x ) debe ser menor o cuando menos igual al número de variables de diseño. Lo contrario evidenciaría que hay algunas restricciones que no son independientes o que la formulación del problema es inconsistente. 24 Si f ( x ) , h j ( x ) y g i ( x ) son lineales en sus variables de diseño, entonces el problema es denominado, problema de programación lineal. Si una de estas funciones no es lineal el problema es llamado problema de programación no lineal. 1.2.7. Restricciones activas, inactivas y violadas Empleando la notación de la forma estándar del modelo, la siguiente tabla resume la condiciones que debe cumplirse para que una restricción sea activa, inactiva o violada. Tabla 1. Estado de una restricción. condición Restricciones de tipo igualdad activa h ( x* ) = 0 inactiva h ( x* ) ≠ 0 violada ------- Restricciones de tipo desigualdad g ( x* ) = 0 g ( x* ) < 0 g ( x* ) > 0 1.2.8. Solución del problema de optimización Cuando el número de variables de diseño y restricciones es grande, o las funciones del problema de diseño son altamente no lineales, o no es posible obtener las funciones objetivo y restricciones de forma explicita y funcional en términos de variables de diseño independientes, resolver el problema mediante métodos analíticos puede ser muy difícil o no aplicable en todos los casos. Debido a esto es necesario usar una aproximación sistemática al óptimo mediante un algoritmo basado métodos numéricos. Usando un estimado inicial para las variables de diseño, el algoritmo va modificándolas iterativamente y a la vez verifica que se satisfagan las condiciones de optimalidad (establecen si un punto de diseño es candidato a óptimo). El objetivo es alcanzar un valor menor para la función de costo en cada iteración. El proceso iterativo se puede describir mediante la siguiente ecuación vectorial: ( ) ( ) ( ) X k+1 = X k +α k d k ( ) Donde k representa el número de iteración y α k d k un pequeño movimiento en el espacio ( ) de diseño hacia un punto que represente un mínimo local. El vector d k es la dirección en que se hace el movimiento (dirección de búsqueda) y α k es un escalar positivo que define el tamaño del movimiento (tamaño de paso). La idea básica del algoritmo es partir de un razonable punto de diseño (condición inicial ( ) X 0 ) que al ser evaluado en las derivadas y funciones de diseño (costo y restricciones) del 25 ( ) problema, permita estimar la dirección de búsqueda d k y el tamaño de paso α k que permitiría moverse a un nuevo punto de diseño en caso que el algoritmo no haya convergido. Encontrar un punto que haga mas pequeña la función objetivo se puede expresar matemáticamente como: ( ( ) f x k+1 ) ( ) ( ) < f xk ( ( ) ( ) es decir f x k+1 + α k d k ) ( ) ( ) < f xk ( ) En la vecindad del punto X k es posible aproximar la función mediante la expansión de Taylor y por lo tanto: ( ) ( ) ( ( ) id ) ( ) (k) f x k + α k ∇f x k ( ) ( ) < f xk ( ) ( ) En donde ∇f x k es el gradiente de f ( x ) en el punto X k . Geométricamente ∇f x k ( ) es el vector normal al plano tangente en el punto X k de la gráfica de la función, también puede asociarse con la dirección de máximo incremento de la función. Para que se satisfaga la anterior desigualdad debe cumplirse que: ( ) ( ) ( ( ) id ) ( ) (k) α k ∇f x k ( ) < 0 A su vez, para que se satisfaga la anterior desigualdad (denominada condición de descenso) y en concordancia con la definición del producto punto, el ángulo entre los vectores ( ) ( ) ( ) ∇f x k y d k debe estar entre 90º y 270º. En otras palabras cualquier vector d k que satisfaga dicha desigualdad hará que el movimiento en esa dirección haga disminuir la función de costo. ( ) Existen técnicas bastante conocidas que se basan en el hecho que el negativo del gradiente representa la dirección de búsqueda (métodos del gradiente). Aunque los métodos del gradiente son simples (solo usan la información del gradiente) y robustos (convergen) tiene ratas de convergencia bajas (se requiere un gran número de iteraciones), y además son ineficientes (cada iteración es independiente de las otras). Otros métodos que incluyen la información de segundo orden (el Hessiano) como el de Newton, tienen buena propiedades de convergencia, sin embargo son ineficientes y en muchos casos puede ser muy tedioso o imposible calcular el Hessiano. Los métodos conocidos como quasi-Newton o de actualización del Hessiano, que se basan en un procedimiento que usa la última iteración y el gradiente para obtener en forma aproximada el Hessiano, tienen las características deseadas de los métodos descritos anteriormente. La técnica “Programación cuadrática secuencia SQP” usada en este trabajo, es quien representa el estado del arte en las técnicas de NLP basadas en la filosofía de la dirección de descenso. 26 2. MODELAMIENTO Los conceptos del operador de rotación pura y la ecuación de cierre de circuito, necesarios para simplificar el modelo matemático de un mecanismo que pasa a través de múltiples posiciones sucesivas son revisados en este capitulo. Una vez expuestos se continúa con la descripción de la técnica de la forma de díada estándar y las dificultades que ofrece al tratar de usarse directamente en la obtención de una función objetivo. Además se describen los datos y variables que intervienen en el problema de diseño de mecanismos asociados con el trabajo de tesis, las variables de diseño, la función objetivo y las restricciones necesarias para lograr que el algoritmo entregue soluciones óptimas. 2.1. EL OPERADOR DE ROTACIÓN PURA En la Figura 8 se ilustra los eslabones y pares de un mecanismo generador de movimiento, tanto en representación detallada 8(a) como en forma vectorial 8(b). Figura 8. Representación vectorial de un mecanismo generador de movimiento m B 3 X6 X5 X3 A X4 4 X2 2 1 O4 O2 X1 (b) (a) El eslabón 3 (descrito mediante los vectores X3, X5 Y X6) es el flotante o acoplador. Cabe destacar que en un mecanismo generador de movimiento es muy importante el movimiento total del eslabón acoplador [Erdman, 1997] (su orientación angular y las coordenadas del punto m). 27 Para representar un mecanismo que se mueve a lo largo de varias posiciones sucesivas se usa un conjunto de vectores diferente para cada posición. Como se puede evidenciar en la Figura 9, para la primera posición los vectores son X2, X3, X4, X5, X6; para la segunda X2*, X3*, X4*, X5*, X6*; para la “j-ésima” X2j, X3j, X4j, X5j, X6j (X1 no cambia por ser el bastidor). Obtener cualquier expresión matemática que involucre más de una posición sería complejo de no ser por el operador de rotación pura. Figura 9. Mecanismo en varias posiciones sucesivas. X5 X6 X6 * X5 * X3 * X3 X6j X4 X5j X2 X3j X1 El operador de rotación pura permite representar la segunda, tercera y “j-ésima” posición de un cuerpo rígido en términos de la primera. Por ejemplo para representar el eslabón motriz en la segunda posición X2*, basta multiplicar el vector X2 por el vector ei β1 ( ei β1 ≡ cos β1 + i sin β1 identidad de Euler ) . e i β1 es el operador de rotación pura y β1 es el ángulo que rota el eslabón desde la primera posición. A continuación se ilustran las expresiones de los eslabones del mecanismo en la segunda y en la “j-ésima” posición: X 2 * = X 2 ei β1 ; X3 * = X3 ei α1 ; X4 * = X4 ei φ1 ; X5 * = X5 ei α1 ; X6 * = X6 ei α1 iβ X2j = X 2 e j ; X 3j = X 3 e iαj iφ ; X4j = X4 e j ; X5j = X5 e iα j ; X6j = X6 e iαj Al usar el operador de rotación los vectores y ángulos que deberían introducirse en el modelamiento matemático del mecanismo en varias posiciones sucesivas son: (en la Figura 10 se ilustran) 28 X1 , X2 , X3 , X4 , X5 , X6 , α1 , ... , α j , β1 , ... , β j , φ1 , ... , φ j Figura 10. Ángulos y vectores para el modelamiento del mecanismo. X5 X6 α1 X3 φ1 φj β1 αj X4 βj X2 X1 2.2. FORMA DE LA DIADA ESTANDAR En síntesis dimensional, todos los métodos basados en puntos de precisión y algunos de otras categorías, se fundamentan en la forma de la díada estándar. La combinación de dos vectores se llama díada. Dos díadas definen plenamente la geometría de un mecanismo de cuatro barras. En la Figura 11 se ilustra una de ellas; los vectores X2 , X5 representan los eslabones motriz y acoplador en la primera posición, y X2 ei βj , X5 ei αj a los mismos eslabones en otra posición diferente denominada j-ésima. Las posiciones ( P1 , P2 , . . . , Pj ) junto con α1 , α 2 , . . . , α j son dadas por el enunciado del problema y se denominan posiciones prescritas. Sumando los vectores en una trayectoria cerrada en sentido horario (ecuación de cierre de circuito) que parte de O2 y vuelve a este, se obtiene: X 2 e i βj + X 5 e i α j − R j + R 1 − X 5 − X 2 = 0 Si δ j = R j − R1 entonces: para la díada X 2 y X4 se tiene: X 2 ( ei βj − 1) + X5 ( ei αj − 1) = δ j en donde j = 2,3,..., n 29 Si se conocen el vector δ j y el ángulo α j , la ecuación anterior se denomina forma de la díada estándar. De manera equivalente se obtiene otra ecuación para los vectores X4 , X6 : para la díada X 4 y X 6 se tiene: X 4 ( ei φj − 1) + X 6 ( ei αj − 1) = δ j en donde j = 2 ,3,..., n Figura 11. Díada del motriz X2 y del acoplador X5 0,0 Rj R1 P1 Pj δj X5 e i αj αj X6 X5 X3 X4 X2 X2 e i βj βj X1 O2 O4 Las ecuaciones de cada díada se resuelven separadamente asumiendo valores para algunas incógnitas; por ejemplo para 3 posiciones prescritas resultan 4 ecuaciones con 12 incógnitas de las cuales es necesario asumir valores para 4 de ellas (las incógnitas son las componentes escalares de los vectores X2 , X5 , X4 , X6 , y los ángulos β1 ,β2 ,φ1 ,φ2 ). A continuación se muestran las ecuaciones de las díadas. X 2 ( ei β1 − 1) + X 5 ( ei α1 − 1) = δ1 ⎫⎪ ⎬ díada X 2 y X 5 X 2 ( ei β2 − 1) + X 5 ( ei α 2 − 1) = δ 2 ⎪⎭ X 4 ( ei φ1 − 1) + X 6 ( ei α1 − 1) = δ1 ⎫⎪ ⎬ díada X 4 y X 6 X 4 ( ei φ 2 − 1) + X 6 ( ei α 2 − 1) = δ 2 ⎪⎭ Para el caso de 2 y 3 posiciones prescritas es posible obtener una solución lineal, solo si se asumen los ángulos. De otra forma se obtiene un sistema de ecuaciones con expresiones transcendentales cuya solución se obtiene mediante técnicas de resolución de ecuaciones no lineales. 30 Cuando en este trabajo se habla de restricciones de montaje, se hace referencia a que se conoce la posición de los pares fijos (es decir el vector X1 ) o al menos un área dentro de la cual es posible ubicar los pares fijos del mecanismo. Como se puede evidenciar las ecuaciones de la forma de la díada estándar no incluye a X1 , sino que se obtiene una vez encontrados X2 , X5 , X4 y X6 , . Para el caso del generador de movimiento, Loerch y otros desarrollaron un procedimiento para incluir a X1 directamente en la forma de la díada estándar pero solo aplica para 2 y 3 posiciones prescritas [Loerch, 1975]. Posteriormente presentaron una técnica para 3 posiciones prescritas, que permitía encontrar los lugares geométricos de los pares fijos (ciertamente a X1 ) a partir de una variación sistemática de los ángulos β1 ,β2 ,φ1 ,φ2 [Loerch, 1979]. Peterson y otros presentaron una mejora del software LINCAGES que permite entrar la posición del bastidor de antemano y de forma interactiva probar diversos conjuntos de valores para las incógnitas pudiéndose encontrar soluciones para 3 y 4 posiciones [Peterson, 1988]. Estos trabajos no obtienen soluciones con ángulos de transmisión μ óptimos. La forma de díada de manera explicita no involucra al ángulo de transmisión μ, por lo tanto se procederá a obtener una expresión que represente tal ángulo y que pueda usarse para 2, 3, 4 o 5 posiciones prescritas y cuyos pares fijos estén confinados a un área prescrita. 2.3. VARIABLES DE DISEÑO y FUNCION DE COSTO La expresión del ángulo μ, ilustrada en la ecuación (1) de la sección 1.1.6 es la función de costo. Por conveniencia se ilustra de nuevo a continuación: ⎡ − X 2 − X 22 + 2 X 1 X 2 cos θ + X 32 + X 43 ⎤ γ = cos −1 ⎢ 1 ⎥ 2X3 X4 ⎣ ⎦ ⎧ γ μ = min ⎨ ⎩π − γ Podría pensarse que las variables de diseño son X1 ,X 2 ,X 3 ,X 4 y θ ya que a partir de ellas, es posible obtener 2 mecanismos (un mecanismo cruzado y otro abierto). Sin embargo, como se desea representar el mecanismo en múltiples posiciones sucesivas es necesario usar el operador de rotación pura, por lo tanto tales variables deben expresarse en términos de las componentes escalares de los vectores correspondientes, además para simplificar la formulación del problema de optimización es deseable que las variables de diseño sean lo más independientes unas de otras [Belegundu, 1999] y [Arora, 2004] cosa que no es cierta ya que es factible obtener por lo menos una de ellas en términos de las otras. 31 Las variables más significativas para el trabajo son: • X1 ya que representa al bastidor y debido a las restricciones de montaje esta confinado a un área cuyos límites son conocidos. Además está relacionado con θ. • X2 ya que es el eslabón motriz y está relacionado con θ. • X3 representa al eslabón acoplador y es clave para definir un generador de movimiento. A partir de lo afirmado anteriormente se concluye que es necesario obtener a X4 y θ en términos de X1, X2, X3. Para hallar X4, se puede deducir el modulo del vector X4 en términos de las componentes escalares de los vectores X1, X2 y X3, planteando una ecuación vectorial a partir del polígono ilustrado en la Figura 10. Ecuación de cierre X2 +X3 − X4 − X1 = 0 ⇒ X4 = − X1 + X2 + X3 Separando parte real e imaginaria, el vector X4 se puede expresar como número complejo en forma cartesiana así: X4 = − X 1x + X 2 x + X 3 x + i ( − X 1 y + X 2 y + X 3 y ) componente escalar X 4 x componente escalar X 4 y Al aplicar el teorema de Pitágoras a las componentes escalares, resulta: X 42 = X 42x + X 42x ∴ = ( − X 1x + X 2 x + X 3 x ) + ( − X 1 y + X 2 y + X 3 y ) 2 X 4 = X 42x + X 42y ∴ = ( − X 1x + X 2 x + X 3 x ) 2 2 + ( − X1 y + X 2 y + X 3 y ) 2 El ángulo θ esta comprendido entre los vectores X1 y X2. Se puede deducir una expresión para este, mediante la diferencia de los argumentos de los vectores, a su vez tales argumentos se definen en términos de sus componentes escalares. θ = θ2 − θ1 ; ⎛ X2y θ2 = tan −1 ⎜ ⎝ X 2x ⎞ ⎟; ⎠ ⎛ X1y θ1 = tan −1 ⎜ ⎝ X 1x ⎞ ⎟; ⎠ ∴ ⎛ X2y θ = tan −1 ⎜ ⎝ X 2x X1y ⎞ ⎞ −1 ⎛ ⎟ − tan ⎜ ⎟ ⎠ ⎝ X 1x ⎠ Ahora es necesario representar a X1, X2 y X3 en términos de las componentes escalares de X1, X2 y X3. Aplicando el teorema de Pitágoras a las componentes cartesianas de los vectores: 32 X1 = X 1 x + i X 1 y ⇒ X 12 = X 12x + X 12y ; X 1 = X 12x + X 12y X2 = X 2 x + i X 2 y ⇒ X 22 = X 22x + X 22y ; X 2 = X 22x + X 22y X 3 = X 3 x + i X 23 ⇒ X 32 = X 32x + X 32y ; X 3 = X 32x + X 32y Es conveniente representar las componentes escalares del bastidor X 1x y X 1 y en términos de la posición absoluta de los pares fijos O2 y O4 de manera que se manejar en forma independiente. Por lo tanto: X 1x = xO4 − xO2 y X 1 y = yO4 − yO2 Mientras que ( xO2 , yO2 ) representan las coordenadas absolutas del par O2 ; ( xO4 , yO4 ) son las del para O4. Finalmente la expresión del ángulo de transmisión para la posición inicial es: ( ) ⎡ − ( x − x )2 + ( y − y )2 − ( X 2 + X 2 ) + ... O4 O2 O4 O2 2x 2y ⎢ 2 2 ⎢ ... + 2 ( xO4 − xO2 ) + ( yO4 − yO2 ) ( X 22x + X 22y ) × ... ⎢ ⎢ ⎛ ⎛ ( y O 4 − yO 2 ) ⎞ ⎞ ⎛X ⎞ ⎢ ... × cos ⎜ tan −1 ⎜ 2 y ⎟ − tan −1 ⎜ ⎟ ⎟ + ( X 32x + X 32y ) + ... ⎢ ⎜ ( xO − xO ) ⎟ ⎟ ⎜ ⎝ X 2x ⎠ 4 2 ⎝ ⎠⎠ ⎝ ⎢ 2 ⎢ ... + − ( xO4 − xO2 ) + X 2 x + X 3 x + − ( yO4 − yO2 ) + X 2 y + X 3 y −1 ⎢ γ = cos ⎢ 2 2 ⎢ 2 ( X 32x + X 32y ) − ( xO − xO ) + X 2 x + X 3 x + − ( yO − yO ) + X 2 y + X 3 y 4 2 4 2 ⎣⎢ ( (( ) (( ) ( ) ( ⎧ γ μ = min ⎨ ⎩π − γ )) )) 2 ⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦⎥ (2) Las variables de diseño para describir el mecanismo en la posición inicial, son: xO2 yO 2 xO4 yO 4 X 2x X2y X 3x X3y → → → → → → → → Coordenada horizontal absoluta del par O 2 Coordenada vertical absoluta del par O 2 Coordenada horizontal absoluta del par O 4 Coordenada vertical absoluta del par O 4 Componente escalar horizontal del motriz Componente escalar vertical del motriz Componente escalar horizontal del acoplador Componente escalar vertical del acoplador 33 Para obtener una expresión general que represente al ángulo de transmisión en cualquier posición, se aplicó el operador de rotación pura a los vectores correspondientes y se dedujeron de nuevo los módulos y ángulos respectivos. Con el objeto de diferenciarlos de los de la ecuación (2) se usó el subíndice “j” que denota la j-ésima posición. : X2j = X2 ei βj Por el operador de rotación pura se tiene Las componentes cartesianas del vector X2 son : X 2 = X 22x + X 22y ( cos θ2 + i sin θ 2 ) : X 2 = X 22x + X 22y ei θ2 Al usar la identidad de Euler se tiene Por lo tanto : X 2j = X 22x + X 22y ei θ2 ei βj X 2j = X 22x + X 22y ei ( θ2 + βj ) ⎛X ⎞ : θ2 = tan −1 ⎜ 2 y ⎟ ⎝ X 2x ⎠ Al aplicar de nuevo la identidad, se obtienen las componentes cartesianas y escalares del vector X 2j : Donde ⎛ ⎛ X2y X 2j = cos ⎜ tan −1 ⎜ ⎜ ⎝ X 2x ⎝ ⎞ ⎛ −1 ⎛ X 2 y ⎞ 2 2 ⎟ + β j ⎟⎟ X 2 x + X 2 y + i sin ⎜⎜ tan ⎜ ⎠ ⎝ X 2x ⎠ ⎝ componente escalar X 2 x ⎞ ⎞ 2 2 ⎟ + β j ⎟⎟ X 2 x + X 2 y ⎠ ⎠ componente escalar X 2 y j (3) j Al aplicar Pitágoras a las componentes escalares, factorizar y usar la identidad trigonométrica cos 2 a + sin 2 a = 1, resulta: X 22 = ( X 22x + X 22y ) j X 2 j = X 2 = X 22x + X 22y ⇒ Como era de esperarse X 2 j y X 2 representan la longitud de un cuerpo rígido. Mediante un procedimiento similar se obtienen las componentes cartesianas y escalares del vector X 3j ⎛ ⎛ X3y X 3j = cos ⎜ tan −1 ⎜ ⎜ ⎝ X 3x ⎝ ⎞ ⎛ −1 ⎛ X 3 y ⎞ 2 2 ⎟ + α j ⎟⎟ X 3 x + X 3 y + i sin ⎜⎜ tan ⎜ ⎠ ⎝ X 3x ⎠ ⎝ componente escalar X 3 x ⎞ ⎞ 2 2 ⎟ + α j ⎟⎟ X 3 x + X 3 y ⎠ ⎠ componente escalar X 3 y j 34 j (4) Y se demuestra que: X 32j = ( X 32x + X 32y ) ⇒ X 3 j = X 3 = X 32x + X 32y Para una posición j-ésima se puede ver qué (Figura 10): Ecuación de cierre X 2j +X 3 j − X 4j − X1 = 0 ⇒ X 4 j = − X1 + X 2 + X 3j j Por lo tanto: ⎛ ⎛ ⎞ ⎛ ⎞ ⎛X ⎞ ⎜ − ( xO4 − xO2 ) + ⎜ cos ⎜ tan −1 ⎜ 2 y ⎟ + β j ⎟ X 22x + X 22y ⎟ + ... ⎜ ⎟ ⎜ ⎟ ⎜ ⎝ X 2x ⎠ ⎝ ⎠ ⎝ ⎠ X4j = ⎜ ⎛ ⎛ −1 ⎛ X 3 y ⎞ ⎞ ⎜ ... cos tan + + α X 32x + X 32y ⎜ ⎜ ⎟ ⎜ ⎟ j ⎜ ⎜ ⎟ ⎜ ⎝ X 3x ⎠ ⎝ ⎠ ⎝ ⎝ componente escalar X 4 x ⎞ ⎟ ⎟ ⎟ + ... ⎞⎟ ⎟ ⎟⎟ ⎠⎠ j ⎛ ⎛ ⎛ ⎞ ⎛X ⎞ ⎜ − ( yO4 − yO2 ) + ⎜ sin ⎜ tan −1 ⎜ 2 y ⎟ + β j ⎟ X 22x + X 22y ⎟ ⎜ ⎜ ⎜ ⎝ X 2x ⎠ ⎠ ⎝ ⎝ ... + i ⎜ ⎛ ⎛ −1 ⎛ X 3 y ⎞ ⎞ ⎜ ... sin ⎜ tan ⎜ + + α ⎜ ⎟ ⎟ j ⎜ ⎟ ⎜ ⎜ ⎝ X 3x ⎠ ⎠ ⎝ ⎝ ⎝ componente escalar X 4 y ⎞ ⎟ + ... ⎟ ⎠ X 32x + X 32y ⎞ ⎟ ⎟ ⎟ ⎞⎟ ⎟ ⎟⎟ ⎠⎠ (5) j Es decir: ( X 42j = X 42x + X 42y j j ) X 4 j = X 4 = X 42x j + X 42y j ⇒ El ángulo comprendido entre los vectores X1 y X2j, no es el mismo θ de la ecuación (2), por esto se identificó como θ j : ⎛ yO4 − yO2 ⎞ ⎛ X2y ⎞ −1 θj = [θ2 − θ1 ] +β j donde θ2 = tan −1 ⎜ ⎟⎟ ⎟ y θ1 = tan ⎜⎜ x x − O O ⎝ X 2x ⎠ ⎝ 4 2 ⎠ ⎡ ⎛ yO4 − yO2 ⎞ ⎤ ⎛ X2y ⎞ −1 tan θj − = ⎢tan −1 ⎜ ⎥ +β ⎜ ⎟ ⎜ xO − xO ⎟⎟ ⎥ j ⎢⎣ ⎝ X 2x ⎠ ⎝ 4 2 ⎠⎦ Finalmente la expresión general del ángulo de transmisión para la posición j-ésima es: 35 ( ) ⎡ − ( x − x )2 + ( y − y )2 − ( X 2 + X 2 ) + ... O4 O2 O4 O2 2x 2y ⎢ 2 2 ⎢ ... + 2 ( xO4 − xO2 ) + ( yO4 − yO2 ) ( X 22x + X 22y ) × ... ⎢ ⎢ ⎛⎡ ⎞ ⎛ yO − yO2 ⎞ ⎤ ⎛X ⎞ ⎢ ... × cos ⎜ ⎢tan −1 ⎜ 2 y ⎟ − tan −1 ⎜ 4 +β j ⎟ + ( X 32x + X 32y ) + ... ⎥ ⎟ ⎢ ⎜ xO − xO ⎟ ⎥ ⎜⎢ ⎟ ⎝ X 2x ⎠ ⎝ 4 2 ⎠⎦ ⎝⎣ ⎠ ⎢ 2 ⎢ ... + − ( xO4 − xO2 ) + X 2 x j + X 3 x j + − ( yO4 − yO2 ) + X 2 y j + X 3 y j −1 ⎢ γ = cos ⎢ 2 2 ⎢ 2 ( X 32x + X 32y ) − ( xO − xO ) + X 2 x + X 3 x + − ( yO − yO ) + X 2 y + X 3 y 4 2 4 2 j j j j ⎢⎣ ( (( ) (( ) ( ) ( )) 2 )) ⎧ γ μ = min ⎨ ⎩π − γ (6) En la ecuación (6) no se han remplazado X 2 x j , X 2 y j , X 3 x j , X 3 y j por razones de espacio. Nótese que las variables de diseño para describir el mecanismo en la posición j-ésima, son las mismas 8 de la posición inicial mas una adicional: βj → Ángulo de rotación del eslabón motriz respecto a su posición inicial α j es el ángulo de rotación del acoplador respecto a su posición inicial y en vista que es un dato conocido no puede ser entendido como una variable de diseño. 2.4. RESTRICCIONES 2.4.1. Primera restricción Partiendo de las variables de diseño descritas en la sección anterior es posible encontrar soluciones. Sin embargo estas tienen una seria inconsistencia relacionada con la longitud cambiante del eslabón seguidor. Es decir su longitud va variando a medida que el mecanismo alcanza las posiciones prescritas. Esta variación se debe a que tal longitud se obtuvo en términos de las componentes escalares de los vectores que representan al bastidor, el motriz y el acoplador. Como el modulo del seguidor debe ser igual en cualquier posición entonces: X 4Posición 1 = X 4Posición 2 = ... = X 4Posición j-ésima Por lo tanto: X 42x + X 42y = X 42xPosición 2 + X 42yPosición 2 = . . . = X 42xPosición j-ésima + X 42yPosición j-ésima 36 ⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥⎦ Es decir ( X 42x + X 42y ) = ( X 42x Posición 2 ( ) + X 42yPosición 2 = . . . = X 42xPosición j-ésima + X 42yPosición j-ésima ) (7) X 4 xPosición 2 , X 4 yPosición 2 , . . . , X 42xPosición j-ésima , X 42yPosición j-ésima se pueden inferir de la ecuación (5) Para 2 posiciones prescritas es necesaria una restricción. Para 3 posiciones se requieren 2 restricciones. Para 4 posiciones, 3 restricciones. Para 5 posiciones, 4 restricciones. 2.4.2. Segunda restricción Para un generador de movimiento es muy importante la orientación del acoplador así como la posición del punto “m” (Figura 8) en cada una de las posiciones prescritas. Es evidente que tal orientación se ha tendido en cuenta en la ecuación (6) mediante el ángulo α j de X 3 x j , X 3 y j , pero no así, la posición de “m”. Para satisfacer la posición de “m” se usó como referente el enfoque descrito por Loerch [Loerch, 1975] relacionado con la inclusión un vector de posición en la representación vectorial del mecanismo. Para la posición inicial del mecanismo las componentes escalares del vector R0 (Figura 12) representan las coordenadas de “m” respecto al par O4. Al igual que X4, el vector X6 que presenta el inconveniente de cambiar su módulo a medida que el mecanismo se mueve. Para resolver este problema se añadió la siguiente restricción. X 6Posición 1 = X 6Posición 2 = ... = X 6Posición j-ésima (8) Para 2 posiciones prescritas es necesaria una restricción. Para 3 posiciones se requieren 2 restricciones. Para 4 posiciones, 3 restricciones. Para 5 posiciones, 4 restricciones. Es conveniente expresar a X6 en términos de las componentes escalares de los vectores R0, X1, X2, y X3 , por lo tanto a partir de la Figura 12 se puede deducir la siguiente ecuación de cierre: R 0 +X1 − X2 − X3 − X6 = 0 ⇒ X6 = R 0 + X1 − X2 − X3 37 Figura 12. Vector de posición R0 m X6 X5 X3 R0 X4 X2 X1 De donde: X6 = R0 x + X 1x − X 2 x − X 3 x + i ( R0 y + X 1 y − X 2 y − X 3 y ) componente escalar X 6 x componente escalar X 6 y Es decir: X 62 = X 62x + X 62y ∴ = ( R0 x + X 1x − X 2 x − X 3 x ) + ( R0 y + X 1 y − X 2 y − X 3 y ) 2 X 6 = X 62x + X 62y ∴ = ( R0 x + X1x − X 2 x − X 3 x ) 2 2 + ( R0 y + X 1 y − X 2 y − X 3 y ) 2 Si se supone que las componentes escalares de Rj representan las coordenadas de “m” respecto al par O4 para la posición j-ésima, se puede inferir la siguiente ecuación de cierre: R j +X1 − X2j − X3j − X6j = 0 ⇒ X6j = R j + X1 − X2j − X3j De donde: X 6j = Rx j + X 1x − X 2 x j − X 3 x j + i ( Ry j + X 1 y − X 2 y j − X 3 y j ) componente escalar X 6 x componente escalar X 6 y j 38 j Es decir: ( ) + (R + X − X − X ) + (R + X − X X 62j = X 62x j + X 62y j ∴ = Rx j + X 1x − X 2 x j − X 3 x j (R X 6 j = X 62x j + X 62y j ∴ = xj + X 1x − X 2 x j 2 1y yj 2yj − X3yj 2 3x j 1y yj 2yj ) 2 − X3yj ) 2 Las coordenadas del punto “m” para cada una de las posiciones prescritas es un dato conocido (ver la Figura 2). Como tales coordenadas se toman con relación a la primera posición prescrita es de suponer que el origen de coordenadas del sistema esté en la cabeza del vector de posición R0, y por lo tanto las componentes escalares de todos los vectores de posición se pueden expresar en términos de las variables de diseño xO2 , yO2 , xO4 , yO4 . De forma que: R0 x = − xO4 R0 y = − yO4 ; R1x = xposición 2 − xO4 R1 y = yposición 2 − yO4 R2 x = xposición 3 − xO4 R2 y = yposición 3 − yO4 Rx j = xposición j − xO4 Ry j = yposición j − yO4 Donde xposición 2 , yposición 2 , ... ,xposición j , yposición j representan las coordenadas x, y de las posiciones 2, …, j-ésima medidas respecto a la primera posición prescrita. Finalmente: X6j = ( xposición j − xO4 ) + ( xO4 − xO2 ) − X 2 x j − X 3 x j + i (( y posición j − yO4 ) + ( yO4 − yO2 ) − X 2 y j − X 3 y j ( X6j = xposición j − xO2 − X 2 x j − X 3 x j + i yposición j − yO2 − X 2 y j − X 3 y j componente escalar X 6 x j ) (9) componente escalar X 6 y j Es decir: ( ) +(y − X ) +(y X 62j = X 62x j + X 62y j ∴ = xposición j − xO2 − X 2 x j − X 3 x j X 6 j = X 62x j + X 62y j ∴ = (x posición j − xO2 − X 2 x j 2 posición j 2 3x j ) 2 posición j − yO2 − X 2 y j − X 3 y j X 2 x j , X 2 y j , X 3 x j , X 3 y j se pueden inferir de las ecuaciones (3) y (4). 39 − yO2 − X 2 y j − X 3 y j ) 2 ) 2.4.3. Tercera restricción Aunque el algoritmo entrega resultados en los que la parte del acoplador representada por el vector X3 satisface el ángulo α j , no sucede lo mismo con la parte del acoplador representada por el vector X6. La siguiente restricción evita que se presente esta inconsistencia en las soluciones encontradas mediante el algoritmo. Del operador de rotación pura se puede inferir que: θ6Posición 1 + α1 = θ6Posición 2 θ6Posición 1 + α 2 = θ6Posición 3 θ6Posición 1 + α j = θ6Posición j-ésima Donde θ6 es el argumento del vector X6 medido respecto al eje horizontal positivo. En la Figura 13 se ilustra este concepto. Figura 13. Descripción de la tercera restricción θ6 Posición j-ésima X6 j αj X3 j X6 X3 R + X1 y − X 2 y − X 3 y ⎞ ⎛ X6y ⎞ −1 ⎛ 0 y θ6Posición 1 = tan -1 ⎜ ⎟ ⎟ = tan ⎜ ⎝ X 6x ⎠ ⎝ R0 x + X1x − X 2 x − X 3 x ⎠ ⎛ yposición 1 − yO2 − X 2 y − X 3 y ⎞ θ6Posición 1 = tan −1 ⎜ ⎜ xposición 1 − xO − X 2 x − X 3 x ⎟⎟ ⎝ ⎠ 2 40 θ6 Posición 1 ⎛ X6yj ⎞ ⎛ Ry j + X1 y − X 2 y j − X 3 y j θ6Posición j-ésima = tan -1 ⎜ ⎟ = tan −1 ⎜ ⎜ X 6x ⎟ ⎜ Rx + X1x − X 2 x − X 3 x j ⎠ j j ⎝ ⎝ j y X X − − ⎛ posición j − yO2 2yj 3y j ⎞ θ6Posición j-ésima = tan −1 ⎜ ⎟ ⎜ xposición j − xO − X 2 x − X 3 x ⎟ j j ⎠ 2 ⎝ ⎞ ⎟ ⎟ ⎠ Entonces: ⎛ yposición 1 − yO2 − X 2 y − X 3 y tan −1 ⎜ ⎜ xposición 1 − xO − X 2 x − X 3 x ⎝ 2 ⎛ yposición j − yO2 − X 2 y j − X 3 y j ⎞ −1 ⎟⎟ + α j = tan ⎜ ⎜ xposición j − xO − X 2 x − X 3 x j j ⎠ 2 ⎝ ⎞ ⎟ ⎟ ⎠ (10) X 2 x j , X 2 y j , X 3 x j , X 3 y j se pueden inferir de las ecuaciones (3) y (4). Al igual que en las anterior restricciones, se tienen que para 2 posiciones prescritas es necesaria una restricción. Para 3 posiciones se requieren 2 restricciones…etc. 2.4.4. Otras restricciones Dado que los pares fijos deben confinarse a un área prescrita, son necesarias 8 restricciones para satisfacer este requerimiento. Suponiendo que el área es rectangular, las coordenadas absolutas de los extremos de una de las diagonales la definen. Figura 14. Espacio factible para los pares fijos (x SD, y SD) (x O4, y O4) X1 FACTIBLE (x O2, y O2) (x II, y II) NO FACTIBLE Usando la nomenclatura de la Figura 14 se establecen las correspondientes restricciones. 41 xII ≤ xO2 yII ≤ yO2 xII ≤ xO4 yII ≤ yO4 ≤ xSD ≤ ySD ≤ xSD ≤ ySD (11) En vista que la magnitud del vector X1 debe ser mayor a cierto valor “n” (puede ser entrado por el usuario) se debe usar la siguiente restricción: ≥ n X 1 = X 12x + X 12y (x ⇒ O4 − xO2 ) + ( yO4 − yO2 ) 2 2 ≥ n (12) Para garantizar que el algoritmo entregue soluciones en las que el eslabón motriz tenga una rotación continua debe cumplirse que: βj > ... > β2 > β1 > 0 (13) Aunque es ideal que las soluciones tengan ángulos de transmisión de 90º, debe imponerse un límite inferior para este índice de mérito. Erdman y Sandor sugiere rechazar cualquier mecanismo de justas de revoluta (pasador), que tenga ángulos de transmisión menores a 30º [Erdman,1997] por lo tanto: μ1 , μ 2 , ... , μ j ≥ 30 (14) Con el propósito que se pueda tener control sobre las longitudes de los eslabones motriz y acoplador en relación a la del bastidor, se han añadido 2 restricciones más: X2 ≤ mX 1 ⇒ X 22x + X 22y X3 ≤ X +X pX 1 ⇒ 2 3x 2 3y ≤ m (x O4 − xO2 ) + ( yO4 − yO2 ) ≤ (x O4 − xO2 ) + ( yO4 − yO2 ) p 2 2 2 2 (15) Con lo que se logra que el tamaño del eslabón correspondiente sea menor o igual a m, o p veces la longitud del bastidor. 42 3. FORMULACIÓN DEL PROBLEMA SEGÚN LA FORMA ESTANDAR Las figuras siguientes ilustran los datos conocidos (línea de trazo gruesa) y las variables de diseño (Encerradas en círculos y/o línea continua gruesa) para cada una de posiciones prescritas. La formulación del problema debe hacerse en términos de estos datos. Figura 15. Datos y variables para 2 posiciones prescritas. Posición 2 y Posición 2 α1 X 3y X 3x β1 X 2y xO 4 xO X 2x 2 yO yO 4 2 Figura 16. Datos y variables para 3 posiciones prescritas. Posición 2 y Posición 2 xPosición 3 X 3y β1 X 3x X 2y X 2x x O2 yO xO 4 yO 2 43 4 β2 y Posición 3 α1 α2 Figura 17. Datos y variables para 4 posiciones prescritas. α3 α1 α2 X 3y β1 X 3x β2 β3 X 2y xO yO 4 yO xO X 2x 2 Las coordenadas de posición no se dibujaron 4 2 Figura 18. Datos y variables para 5 posiciones prescritas. α3 α1 α4 α2 X 3y β1 X 3x β2 β3 β4 X 2y xO 4 X 2x xO 2 yO yO Las coordenadas de posición no se dibujaron 4 2 3.1. VARIABLES DE DISEÑO En concordancia con la Figura 15, los datos para 2 posiciones prescritas son xposición 2 , yposición 2 ,α1 y las variables de diseño X 2 x , X 2 y , X 3 x , X 3 y ,β1 , xO2 , yO2 , xO4 , yO4 , transcribiéndolas a la forma estándar del modelo, resultan: 44 x 2 posiciones = ( x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 ) ≡ ... ... ≡ ( X 2 x , X 2 y , X 3 x , X 3 y , β1 , xO2 , yO2 , xO4 , yO4 ) Según la Figura 16, para 3 posiciones prescritas los datos son xposición 2 , yposición 2 , xposición 3 , yposición 3 ,α1 ,α 2 X 2 x , X 2 y , X 3 x , X 3 y ,β1 , y las variables de diseño β2 , xO2 , yO2 , xO4 , yO4 Transcribiéndolas a la forma estándar del modelo, resultan: x3 posiciones = ( x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 , x10 ) ≡ ... ... ≡ ( X 2 x , X 2 y , X 3 x , X 3 y , β1 , β1 , xO2 , yO2 , xO4 , yO4 ) Según la Figura 17, para 4 posiciones prescritas los datos son xposición 2 , yposición 2 , xposición 3 , yposición 3 ,xposición 4 , yposición 4 ,α1 ,α 2 ,α3 y las variables de diseño X 2 x , X 2 y , X 3 x , X 3 y ,β1 , β2 ,β3 , xO2 , yO2 , xO4 , yO4 transcribiéndolas a la forma estándar del modelo, resultan: x 4 posiciones = ( x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 , x10 , x11 ) ≡ ... ... ≡ ( X 2 x , X 2 y , X 3 x , X 3 y , β1 , β2 , β3 , xO2 , yO2 , xO4 , yO4 ) Según la Figura 18, para 5 posiciones prescritas los datos son xposición 2 , yposición 2 , xposición 3 , yposición 3 ,xposición 4 , yposición 4 ,xposición 5 , yposición 5 ,α1 ,α 2 ,α3 ,α 4 y las variables de diseño X 2 x , X 2 y , X 3 x , X 3 y ,β1 , β2 ,β3 ,β4 , xO2 , yO2 , xO4 , yO4 transcribiéndolas a la forma estándar del modelo, resultan: x5 posiciones = ( x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 , x10 , x11 , x12 ) ≡ ... ... ≡ ( X 2 x , X 2 y , X 3 x , X 3 y , β1 , β2 , β3 , β 4 , xO2 , yO2 , xO4 , yO4 ) 3.2. VECTOR DE FUNCIONES OBJETIVO Para cada una de las posiciones prescritas es necesaria una función objetivo. Para la primera posición o inicial se transcribe la ecuación (2) en términos de las variables de diseño (El subíndice “P1” representa la posición inicial del mecanismo): 45 ( ) ⎡ − ( x − x )2 + ( x − x )2 − ( x 2 + x 2 ) + ... ⎤ 7 5 8 6 1 2 ⎢ ⎥ 2 2 2 2 ⎢ ⎥ ... + 2 ( x7 − x5 ) + ( x8 − x6 ) ( x1 + x2 ) × ... ⎢ ⎥ ⎢ ⎥ ⎛ ⎛ (x − x ) ⎞⎞ ⎛x ⎞ ⎢ ... × cos ⎜ tan −1 ⎜ 2 ⎟ − tan −1 ⎜ 8 6 ⎟ ⎟ + ( x32 + x42 ) + ...⎥ ⎜ ⎟ ⎢ ⎥ ⎝ x1 ⎠ ⎝ ( x7 − x5 ) ⎠ ⎠ ⎝ ⎢ ⎥ 2 2 ... + ( x1 + x3 + x5 − x7 ) + ( x2 + x4 + x6 − x8 ) ⎥ −1 ⎢ γ P1 = cos ⎢ ⎥ 2 2 2 ( x32 + x42 ) ( x1 + x3 + x5 − x7 ) + ( x2 + x4 + x6 − x8 ) ⎢⎣ ⎥⎦ ⎧ γ f1 ( x ) = min ⎨ P1 ≡ μ P1 ⎩ π − γ P1 ( ) ( ) ( ) (16) Para la segunda posición se transcribe la ecuación (6) en términos de las variables de diseño (El subíndice “P2” representa la segunda posición del mecanismo): ( γ P2 ) ⎡ − ( x − x )2 + ( x − x )2 − ( x 2 + x 2 ) + ... 7 5 8 6 1 2 ⎢ 2 2 ⎢ ... + 2 ( x7 − x5 ) + ( x8 − x6 ) ( x12 + x22 ) × ... ⎢ ⎢ ⎛⎡ ⎞ ⎛ ( x − x6 ) ⎞ ⎤ ⎛x ⎞ ⎢ ... × cos ⎜ ⎢tan −1 ⎜ 2 ⎟ − tan −1 ⎜ 8 ⎥ + x9 ⎟ + ( x32 + x42 ) + ... ⎟ ⎜ ⎟ ⎢ ⎝ x1 ⎠ ⎝ ( x7 − x5 ) ⎠ ⎦⎥ ⎝ ⎣⎢ ⎠ ⎢ 2 2 ⎢ ... + X 2 xP2 + X 3 xP2 + x5 − x7 + X 2 yP2 + X 3 yP2 + x6 − x8 = cos −1 ⎢ 2 2 ⎢ 2 2 2 + + − + + + − x x X X x x X X x x ( ) + 2 3 5 7 2 3 6 8 x x y y 3 4 P2 P2 P2 P2 ⎣⎢ ( (( ) (( ) ( ) ( )) )) ⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦⎥ ⎧ γ f 2 ( x ) = min ⎨ P2 ≡ μ P2 ⎩ π − γ P2 (17) De las ecuaciones (3) y (4) se obtienen X 2 xP2 , X 2 yP2 ,X 3 xP2 ,X 3 yP2 , que en términos de las variables de diseño son: ⎛ ⎞ ⎛x ⎞ X 2 xP2 = cos ⎜⎜ tan −1 ⎜ 2 ⎟ + x9 ⎟⎟ x12 + x22 ; ⎝ x1 ⎠ ⎝ ⎠ ⎛ ⎞ ⎛x ⎞ X 3 xP2 = cos ⎜⎜ tan −1 ⎜ 4 ⎟ + α1 ⎟⎟ x32 + x42 ; ⎝ x3 ⎠ ⎝ ⎠ ⎛ ⎞ ⎛x ⎞ X 2 yP2 = sin ⎜⎜ tan −1 ⎜ 2 ⎟ + x9 ⎟⎟ x12 + x22 ⎝ x1 ⎠ ⎝ ⎠ ⎛ ⎞ ⎛x ⎞ X 3 yP2 = sin ⎜⎜ tan −1 ⎜ 4 ⎟ + α1 ⎟⎟ x32 + x42 ⎝ x3 ⎠ ⎝ ⎠ 46 Para la tercera posición (El subíndice “P3” representa la tercera posición del mecanismo): ( ) ⎡ − ( x − x )2 + ( x − x )2 − ( x 2 + x 2 ) + ... ⎤ 7 5 8 6 1 2 ⎢ ⎥ 2 2 2 2 ⎢ ⎥ ... + 2 ( x7 − x5 ) + ( x8 − x6 ) ( x1 + x2 ) × ... ⎢ ⎥ ⎢ ⎥ ⎛ ⎡ −1 ⎛ x ⎞ ⎞ ⎛ ( x − x ) ⎞⎤ ⎢ ...× cos ⎜ ⎢tan ⎜ 2 ⎟ − tan −1 ⎜ 8 6 ⎟ ⎥ + x10 ⎟ + ( x32 + x42 ) + ... ⎥ ⎜⎢ ⎟ ⎢ ⎥ ⎝ x1 ⎠ ⎝ ( x7 − x5 ) ⎠ ⎥⎦ ⎝⎣ ⎠ ⎢ ⎥ 2 2 ⎢ ... + X 2 xP3 + X 3 xP3 + x5 − x7 + X 2 yP2 + X 3 yP2 + x6 − x8 ⎥ ⎥ γ P3 = cos −1 ⎢ 2 2 ⎢ ⎥ 2 2 ⎢⎣ 2 ( x3 + x4 ) X 2 xP3 + X 3 xP3 + x5 − x7 + X 2 yP2 + X 3 yP2 + x6 − x8 ⎥⎦ ⎧ γ f3 ( x ) = min ⎨ P3 ≡ μ P3 ⎩ π − γ P3 ( (( ) (( ) ( ) ( ⎛ ⎞ ⎛x ⎞ Donde: X 2 xP3 = cos ⎜⎜ tan −1 ⎜ 2 ⎟ + x10 ⎟⎟ x12 + x22 ; ⎝ x1 ⎠ ⎝ ⎠ ⎛ ⎞ ⎛x ⎞ X 3 xP3 = cos ⎜ tan −1 ⎜ 4 ⎟ + α 2 ⎟ x32 + x42 ; ⎜ ⎟ ⎝ x3 ⎠ ⎝ ⎠ )) )) (18) ⎛ ⎞ ⎛x ⎞ X 2 yP3 = sin ⎜⎜ tan −1 ⎜ 2 ⎟ + x10 ⎟⎟ x12 + x22 ⎝ x1 ⎠ ⎝ ⎠ ⎛ ⎞ ⎛x ⎞ X 3 yP3 = sin ⎜ tan −1 ⎜ 4 ⎟ + α 2 ⎟ x32 + x42 ⎜ ⎟ ⎝ x3 ⎠ ⎝ ⎠ Para la cuarta posición: ( ) ⎡ − ( x − x )2 + ( x − x )2 − ( x 2 + x 2 ) + ... 7 5 8 6 1 2 ⎢ 2 2 ⎢ ... + 2 ( x7 − x5 ) + ( x8 − x6 ) ( x12 + x22 ) × ... ⎢ ⎢ ⎛⎡ ⎞ ⎛ ( x − x6 ) ⎞ ⎤ ⎛x ⎞ 2 2 ⎢ ... × cos ⎜ ⎢tan −1 ⎜ 2 ⎟ − tan −1 ⎜ 8 x + ⎟ ⎥ 11 ⎟⎟ + ( x3 + x4 ) + ... ⎜ ⎢ ⎝ x1 ⎠ ⎝ ( x7 − x5 ) ⎠ ⎥⎦ ⎝ ⎢⎣ ⎠ ⎢ 2 2 ⎢ ... + X 2 xP4 + X 3 xP4 + x5 − x7 + X 2 yP4 + X 3 yP4 + x6 − x8 −1 γ P4 = cos ⎢ 2 2 ⎢ 2 2 ⎢⎣ 2 ( x3 + x4 ) X 2 xP4 + X 3 xP4 + x5 − x7 + X 2 yP4 + X 3 yP4 + x6 − x8 ⎧ γ f 4 ( x ) = min ⎨ P4 ≡ μ P4 ⎩ π − γ P4 ( (( ) (( ) ( ) ( 47 )) )) ⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥⎦ (19) ⎛ ⎞ ⎛x ⎞ Donde: X 2 xP4 = cos ⎜⎜ tan −1 ⎜ 2 ⎟ + x11 ⎟⎟ x12 + x22 ; ⎝ x1 ⎠ ⎝ ⎠ ⎛ ⎞ ⎛x ⎞ X 3 xP4 = cos ⎜ tan −1 ⎜ 4 ⎟ + α 3 ⎟ x32 + x42 ; ⎜ ⎟ ⎝ x3 ⎠ ⎝ ⎠ ⎛ ⎞ ⎛x ⎞ X 2 yP4 = sin ⎜⎜ tan −1 ⎜ 2 ⎟ + x11 ⎟⎟ x12 + x22 ⎝ x1 ⎠ ⎝ ⎠ ⎛ ⎞ ⎛x ⎞ X 3 yP4 = sin ⎜ tan −1 ⎜ 4 ⎟ + α 3 ⎟ x32 + x42 ⎜ ⎟ ⎝ x3 ⎠ ⎝ ⎠ Para la quinta posición: ( ) ⎡ − ( x − x )2 + ( x − x )2 − ( x 2 + x 2 ) + ... ⎤ 7 5 8 6 1 2 ⎢ ⎥ 2 2 2 2 ⎢ ⎥ ... + 2 ( x7 − x5 ) + ( x8 − x6 ) ( x1 + x2 ) × ... ⎢ ⎥ ⎢ ⎥ ⎛ ⎡ −1 ⎛ x ⎞ ⎞ ⎛ ( x − x ) ⎞⎤ ⎢ ...× cos ⎜ ⎢tan ⎜ 2 ⎟ − tan −1 ⎜ 8 6 ⎟ ⎥ + x12 ⎟ + ( x32 + x42 ) + ... ⎥ ⎜⎢ ⎟ ⎢ ⎥ ⎝ x1 ⎠ ⎝ ( x7 − x5 ) ⎠ ⎥⎦ ⎝⎣ ⎠ ⎢ ⎥ 2 2 ⎢ ... + X 2 xP5 + X 3 xP5 + x5 − x7 + X 2 yP5 + X 3 yP5 + x6 − x8 ⎥ ⎥ γ P5 = cos −1 ⎢ 2 2 ⎢ ⎥ 2 2 ⎢⎣ 2 ( x3 + x4 ) X 2 xP5 + X 3 xP5 + x5 − x7 + X 2 yP5 + X 3 yP5 + x6 − x8 ⎥⎦ ⎧ γ f5 ( x ) = min ⎨ P5 ≡ μ P5 ⎩ π − γ P5 ( (( ) (( ) ( ) ( ⎛ ⎞ ⎛x ⎞ Donde: X 2 xP5 = cos ⎜⎜ tan −1 ⎜ 2 ⎟ + x12 ⎟⎟ x12 + x22 ; ⎝ x1 ⎠ ⎝ ⎠ ⎛ ⎞ ⎛x ⎞ X 3 xP5 = cos ⎜ tan −1 ⎜ 4 ⎟ + α 4 ⎟ x32 + x42 ; ⎜ ⎟ ⎝ x3 ⎠ ⎝ ⎠ )) )) (20) ⎛ ⎞ ⎛x ⎞ X 2 yP5 = sin ⎜⎜ tan −1 ⎜ 2 ⎟ + x12 ⎟⎟ x12 + x22 ⎝ x1 ⎠ ⎝ ⎠ ⎛ ⎞ ⎛x ⎞ X 3 yP5 = sin ⎜ tan −1 ⎜ 4 ⎟ + α 4 ⎟ x32 + x42 ⎜ ⎟ ⎝ x3 ⎠ ⎝ ⎠ Como se puede evidenciar, las expresiones para la segunda, tercera, cuarta y quinta posición solo difieren en los ángulos α1 ,α 2 ,α3 ,α4 y en las variables x9 ,x10 ,x11 ,x12 que representan los ángulos β1 , β2 ,β3 , β4 . En la formulación del problema para 2 posiciones prescritas, es necesario usar las funciones objetivo de la primera y segunda posición es decir f1 ( x ) y f 2 ( x ) . Para la formulación del problema de 3 posiciones las funciones f1 ( x ) , f 2 ( x ) y f3 ( x ) , y así sucesivamente. 3.2.1. Optimización multiobjetivo Como es necesario optimizar en forma simultánea más de 2 funciones objetivo debe obtenerse un vector de objetivos F ( x ) . 48 Dado que las funciones que describen el ángulo μ son de la misma naturaleza dimensional (cantidad física) y que los ángulos de transmisión de la primera y última posición prescrita son los más significativos para lograr que se transmita el movimiento desde el acoplador hacia el seguidor de manera efectiva, es evidente que debe usarse un criterio que destaque algunas funciones del vector de objetivos F ( x ) . La “Suma ponderada” es la técnica más apropiada para alcanzar propósito. 3.2.2. Método de la suma ponderada De la sección 1.2.3 se tiene: n F ( x ) = ω1 f1 ( x ) + ω2 f 2 ( x ) + ... + ωn f n ( x ) es decir F ( x ) = ∑ ωn f n ( x ) en donde ω es no negativo; ω1 + ω2 i =1 + ... + ωn = 1; n > 1 ; n ∈ * Para lograr que se transmita el movimiento desde el acoplador hacia el seguidor de manera efectiva, los ángulos de transmisión de las posiciones prescritas extremas (primera y última) son muy importantes y por lo tanto los coeficientes de peso serán asignados de manera que tales posiciones tendrán valores más altos que en las posiciones intermedias. La siguiente tabla contiene el vector de objetivos y los coeficientes de peso para las posiciones prescritas consideradas en este trabajo. Los valores de los coeficientes se asignaron de manera uniforme. Tabla 2. Factores de peso del vector de objetivos F ( x) Coeficientes de peso 2 ω1 f1 ( x ) + ω2 f 2 ( x ) ω1 = ω2 = 0.5 3 ω1 f1 ( x ) + ω2 f 2 ( x ) + ω3 f3 ( x ) ω1 = ω3 = 0.4; ω2 = 0.2 4 ω1 f1 ( x ) + ω2 f 2 ( x ) + ω3 f3 ( x ) + ω4 f 4 ( x ) ω1 = ω4 = 0.35; ω2 = ω3 = 0.15 5 ω1 f1 ( x ) + ω2 f 2 ( x ) + ω3 f3 ( x ) + ω4 f 4 ( x ) + ω5 f5 ( x ) ω1 = ω5 = 0.3; ω2 = ω3 = ω4 = 0.13 Posiciones prescritas 3.3. RESTRICCIONES DE DISEÑO 3.3.1. Tipo desigualdad Las ecuaciones de la sección 2.4 que representan las restricciones de tipo desigualdad, son transcritas en términos de las variables de diseño descritas en la sección 3.1. 49 De la ecuación (11): xII yII xII yII ≤ xO2 ≤ yO2 ≤ xO4 ≤ yO4 ≤ xSD ≤ ySD ≤ xSD ≤ ySD ⇒ ⇒ ⇒ ⇒ xII − x5 ≤ 0; yII − x6 ≤ 0; xII − x7 ≤ 0; yII − x8 ≤ 0; x5 − xSD ≤ 0 x6 − ySD ≤ 0 x7 − xSD ≤ 0 x8 − ySD ≤ 0 De la ecuación (12): (x O4 − xO2 ) + ( yO4 − yO2 ) 2 2 ≥ n ⇒ n− ( x7 − x5 ) 2 + ( x8 − x6 ) 2 ≤ 0 De la ecuación (13): βj > ... > β2 > β1 > 0 ⇒ ⎧ ⎪ ⎪⎪ ⎨ ⎪ ⎪ ⎪⎩ − x8 < 0 − x8 + x9 < 0 − x9 + x10 < 0 − x10 + x11 < 0 − x11 + x12 < 0 De la ecuación (14): μ1 , μ 2 , ... , μ j ≥ 30 es decir μ P1 , μ P2 , ... , μ P5 ≥ 30 ⇒ ⎧ ⎪ ⎪ ⎪ ⎨ ⎪ ⎪ ⎪ ⎩ 30 − f1 ( x ) ≤ 0 30 − f 2 ( x ) ≤ 0 30 − f3 ( x ) ≤ 0 30 − f 4 ( x ) ≤ 0 30 − f5 ( x ) ≤ 0 Donde f1 ( x ) , f 2 ( x ) , ... , f5 ( x ) provienen de las ecuaciones (16), (17), (18) , (19) y (20) De la ecuación (15): 50 X 22x + X 22y ≤ m (x O4 − xO2 ) + ( yO4 − yO2 ) X 32x + X 32y ≤ p (x O4 − xO2 ) + ( yO4 − yO2 ) 2 ⇒ x12 + x22 − m ( x7 − x5 ) 2 ⇒ x32 + x42 − p ( x7 − x5 ) 2 2 2 2 + ( x8 − x6 ) ≤ 0 2 + ( x8 − x6 ) ≤ 0 2 3.3.2. Tipo igualdad Las ecuaciones de la sección 2.4 que representan las restricciones de tipo igualdad, son transcritas en términos de las variables de diseño descritas en la sección 3.1. De las ecuaciones (7), (8), (10) se deben derivar un total de 15 restricciones, debido a que para 2 posiciones prescritas son necesarias 3 restricciones, para 3 posiciones se requieren 6 restricciones. Para 4 posiciones, 9 restricciones. Para 5 posiciones, 12 restricciones. De la ecuación (7) se infiere que: (X (X (X (X ) ( )=(X )=(X )=(X 2 4 xPosición 1 + X 42yPosición 1 = X 42xPosición 2 + X 42yPosición 2 2 4 xPosición 2 + X 42yPosición 2 2 4 xPosición 3 + X 42yPosición 3 2 4 xPosición 4 + X 42yPosición 4 2 4 xPosición 3 + X 42yPosición 3 2 4 xPosición 4 + X 42yPosición 4 2 4 xPosición 5 + X 42yPosición 5 ) ) ) ) A partir de la ecuación (5), se reemplazan a X 42x , X 42y ,..., X 42x , X 42y Posición 1 Posición 1 Posición 5 Posición 5 por la correspondiente expresión que en términos de las variables de diseño de la sección 3.1 resultan las siguientes 4 restricciones: ( x1 + x3 + x5 − x7 )2 + ( x2 + x4 + x6 − x8 )2 − ... ( X 2x P2 ( X 2x P3 ( X 2x P4 ( ) − ( X 2y + X3y 2 2 + x5 − x7 ) + ( X 2 y + X 3 y + x6 − x8 ) − ... 2 ... − ( X 2 x + X 3 x + x5 − x7 ) − ( X 2 y + X 3 y 2 2 + x5 − x7 ) + ( X 2 y + X 3 y + x6 − x8 ) − ... 2 ... − ( X 2 x + X 3 x + x5 − x7 ) − ( X 2 y + X 3 y 2 2 + x5 − x7 ) + ( X 2 y + X 3 y + x6 − x8 ) − ... 2 ... − ( X 2 x + X 3 x + x5 − x7 ) − ( X 2 y + X 3 y ... − X 2 xP2 + X 3 xP2 + x5 − x7 + X 3 xP2 P2 P3 + X 3 xP3 + X 3 xP4 P3 ) P3 P3 + x6 − x8 ) P4 + x6 − x8 ) 2 P4 ) 2 P5 + x6 − x8 P3 P4 P4 P5 + x6 − x8 P2 P2 P3 P4 P2 2 P4 P5 P5 51 2 2 =0 =0 =0 =0 De la ecuación (8) se deduce que: X 6Posición 1 = X 6Posición 2 X 6Posición 2 = X 6Posición 3 X 6Posición 3 = X 6Posición 4 X 6Posición 4 = X 6Posición 5 por la A partir de la ecuación (9), se reemplazan a X 62 , X 62 ,...,, X 62 Posición 1 Posición 2 Posición 5 correspondiente expresión que en términos de las variables de diseño de la sección 3.1 resultan las siguientes 4 restricciones: ( − x1 − x3 − x5 )2 + ( − x2 − x4 − x6 )2 − ... ... − ( xposición 2 − X 2 xP2 − X 3 xP2 − x5 ) − ( yposición 2 − X 2 yP2 − X 3 yP2 − x6 ) = 0 2 ( xposición 2 − X 2 x P2 2 − X 3 xP2 − x5 ) + ( yposición 2 − X 2 yP2 − X 3 yP2 − x6 ) − ... 2 2 ... − ( xposición 3 − X 2 xP3 − X 3 xP3 − x5 ) − ( yposición 3 − X 2 yP3 − X 3 yP3 − x6 ) = 0 2 ( xposición 3 − X 2 x − X 3 xP3 − x5 ) + ( yposición 3 − X 2 yP3 − X 3 yP3 − x6 ) − ... 2 P3 2 2 ... − ( xposición 4 − X 2 xP4 − X 3 xP4 − x5 ) − ( yposición 4 − X 2 yP4 − X 3 yP4 − x6 ) = 0 2 ( xposición 4 − X 2 x P4 2 − X 3 xP4 − x5 ) + ( yposición 4 − X 2 yP4 − X 3 yP4 − x6 ) − ... 2 2 ... − ( xposición 5 − X 2 xP5 − X 3 xP5 − x5 ) − ( yposición 5 − X 2 yP5 − X 3 yP5 − x6 ) = 0 2 De la ecuación (10) se deriva que: ⎛ − yO2 tan −1 ⎜ ⎜ − xO ⎝ 2 ⎛ − yO2 tan −1 ⎜ ⎜ − xO ⎝ 2 ⎛ − yO2 tan −1 ⎜ ⎜ − xO ⎝ 2 ⎛ − yO2 tan −1 ⎜ ⎜ − xO ⎝ 2 − X 2 y − X3y ⎞ y − yO2 − X 2 yP2 − X 3 yP2 ⎞ −1 ⎛ posición 2 ⎟⎟ + α1 = tan ⎜⎜ ⎟⎟ − X 2 x − X 3x ⎠ ⎝ xposición 2 − xO2 − X 2 xP2 − X 3 xP2 ⎠ y − X 2 y − X3y ⎞ − yO2 − X 2 yP3 − X 3 yP3 ⎞ −1 ⎛ posición 3 ⎟⎟ ⎟⎟ + α 2 = tan ⎜⎜ − X 2 x − X 3x ⎠ ⎝ xposición 3 − xO2 − X 2 xP3 − X 3 xP3 ⎠ − X 2 y − X3y ⎞ y − yO2 − X 2 yP4 − X 3 yP4 ⎞ −1 ⎛ posición 4 ⎟⎟ + α3 = tan ⎜⎜ ⎟⎟ − X 2 x − X 3x ⎠ − − x X X − x posición 4 2 3 x x O ⎝ P4 P4 ⎠ 2 y − X 2 y − X3y ⎞ − yO2 − X 2 yP5 − X 3 yP5 ⎞ −1 ⎛ posición 5 ⎟⎟ ⎟⎟ + α 4 = tan ⎜⎜ − X 2 x − X 3x ⎠ ⎝ xposición 5 − xO2 − X 2 xP5 − X 3 xP5 ⎠ 52 2 De las cuales se obtienen las siguientes 4 restricciones en términos de las variables de diseño de la sección 3.1: y − X 2 yP2 − X 3 yP2 − x6 ⎞ ⎛ − x − x4 − x6 ⎞ −1 ⎛ posición 2 tan −1 ⎜ 2 + α − tan =0 ⎜ 1 ⎟ ⎜ xposición 2 − X 2 x − X 3 x − x5 ⎟⎟ ⎝ − x1 − x3 − x5 ⎠ ⎝ ⎠ P2 P2 ⎛ yposición 3 − X 2 yP3 − X 3 yP3 − x6 ⎞ ⎛ − x − x4 − x6 ⎞ tan −1 ⎜ 2 + α 2 − tan −1 ⎜ =0 ⎟ ⎜ xposición 3 − X 2 x − X 3 x − x5 ⎟⎟ ⎝ − x1 − x3 − x5 ⎠ P3 P3 ⎝ ⎠ y − X 2 yP4 − X 3 yP4 − x6 ⎞ ⎛ − x − x4 − x6 ⎞ −1 ⎛ posición 4 tan −1 ⎜ 2 + α − tan =0 ⎜ 3 ⎟ ⎜ xposición 4 − X 2 x − X 3 x − x5 ⎟⎟ ⎝ − x1 − x3 − x5 ⎠ ⎝ ⎠ P4 P4 ⎛ yposición 5 − X 2 yP5 − X 3 yP5 − x6 ⎞ ⎛ − x − x4 − x6 ⎞ tan −1 ⎜ 2 + α 4 − tan −1 ⎜ =0 ⎟ ⎜ xposición 5 − X 2 x − X 3 x − x5 ⎟⎟ ⎝ − x1 − x3 − x5 ⎠ P5 P5 ⎝ ⎠ 3.4. ENUNCIADOS DEL PROBLEMA DE OPTIMIZACIÓN Dado que a partir del enunciado del problema de optimización se procedió a desarrollar el algoritmo en MATLAB, tal enunciado se presenta a continuación para 2, 3, 4 y 5 posiciones prescritas. 3.4.1. Enunciado del problema para 2 posiciones prescritas Encontrar el vector de variables de diseño x = ( x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 ) que minimicen el siguiente vector de objetivos ( f1 y f 2 son las funciones objetivo de la sección 3.2): F ( x ) = − ⎡⎣ω1 f1 ( x ) + ω2 f 2 ( x ) ⎤⎦ Sujeto a las siguientes restricciones: g1 ( x5 ) g3 ( x6 ) g5 ( x7 ) g7 ( x8 ) ≡ xII − x5 ≤ ≡ yII − x6 ≤ ≡ xII − x7 ≤ ≡ yII − x8 ≤ g9 ( x5 ,x6 ,x7 ,x8 ) ≡ n − g10 ( x8 ) ≡ − x8 < 0; g 2 ( x5 ) g 4 ( x6 ) g6 ( x7 ) g8 ( x8 ) 0; 0; 0; 0; ( x7 − x5 ) 2 ≡ x5 − xSD ≤ 0 ≡ x6 − ySD ≤ 0 ≡ x7 − xSD ≤ 0 ≡ x8 − ySD ≤ 0 + ( x8 − x6 ) 2 ≤ 0 g11 ( x8 ,x9 ) ≡ − x8 + x9 53 < 0 g12 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ) ≡ 30 − f1 ( x ) ≤ 0; g13 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9 ) ≡ 30 − f 2 ( x ) ≤ 0 g14 ( x1 ,x2 ,x5 ,x6 ,x7 ,x8 ) ≡ x12 + x22 − m ( x7 − x5 )2 + ( x8 − x6 )2 ≤ 0 g15 ( x3 ,x4 ,x5 ,x6 ,x7 ,x8 ) ≡ x32 + x42 − p ( x7 − x5 )2 + ( x8 − x6 )2 ≤ 0 h1 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9 ) ≡ ( ( x1 + x3 + x5 − x7 )2 + ( x2 + x4 + x6 − x8 )2 − ... ... − X 2 xP2 + X 3 xP2 + x5 − x7 h2 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x9 ) ≡ ) − ( X2y 2 P2 + X 3 yP2 + x6 − x8 ) 2 =0 ( − x1 − x3 − x5 )2 + ( − x2 − x4 − x6 )2 − ... ... − ( xposición 2 − X 2 xP2 − X 3 xP2 − x5 ) − ( yposición 2 − X 2 yP2 − X 3 yP2 − x6 ) = 0 2 2 ⎛ − x − x4 − x6 ⎞ h3 ( x1 , x2 , x3 , x4 , x5 , x6 , x9 ) ≡ tan −1 ⎜ 2 ⎟ + α1 − ... − − − x x x ⎝ 1 3 5⎠ ⎛ yposición 2 − X 2 yP2 − X 3 yP2 − x6 ⎞ =0 ... − tan −1 ⎜ ⎜ xposición 2 − X 2 x − X 3 x − x5 ⎟⎟ ⎝ ⎠ P2 P2 3.4.2. Enunciado del problema para 3 posiciones prescritas Encontrar el vector de variables de diseño x = ( x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 , x10 ) que minimicen el siguiente vector de objetivos ( f1, f 2 y f3 son las funciones objetivo de la sección 3.2): F ( x ) = − ⎡⎣ω1 f1 ( x ) + ω2 f 2 ( x ) + ω3 f3 ( x ) ⎤⎦ Sujeto a las siguientes restricciones: g1 ( x5 ) g3 ( x6 ) g5 ( x7 ) g7 ( x8 ) ≡ xII − x5 ≤ ≡ yII − x6 ≤ ≡ xII − x7 ≤ ≡ yII − x8 ≤ g9 ( x5 ,x6 ,x7 ,x8 ) ≡ n − 0; 0; 0; 0; g 2 ( x5 ) g 4 ( x6 ) g6 ( x7 ) g8 ( x8 ) ≡ x5 − xSD ≤ 0 ≡ x6 − ySD ≤ 0 ≡ x7 − xSD ≤ 0 ≡ x8 − ySD ≤ 0 ( x7 − x5 )2 + ( x8 − x6 )2 54 ≤ 0 g10 ( x8 ) ≡ − x8 g12 ( x9 ,x10 ) ≡ − x9 + x10 g11 ( x8 ,x9 ) ≡ − x8 + x9 < 0; < 0 < 0; g13 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ) ≡ 30 − f1 ( x ) ≤ 0; g14 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9 ) ≡ 30 − f 2 ( x ) ≤ 0 g15 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x10 ) ≡ 30 − f3 ( x ) ≤ 0 g16 ( x1 ,x2 ,x5 ,x6 ,x7 ,x8 ) ≡ x12 + x22 − m ( x7 − x5 )2 + ( x8 − x6 )2 ≤ 0 g17 ( x3 ,x4 ,x5 ,x6 ,x7 ,x8 ) ≡ x32 + x42 − p ( x7 − x5 )2 + ( x8 − x6 )2 ≤ 0 h1 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9 ) ≡ ... ... ≡ ( x1 + x3 + x5 − x7 )2 + ( x2 + x4 + x6 − x8 )2 − ... ( ... − X 2 xP2 + X 3 xP2 + x5 − x7 h2 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9 ,x10 ) ≡ ... ... ≡ ( X 2x P2 ( P2 + X 3 yP2 + x6 − x8 2 ) 2 =0 2 P2 P2 P3 h3 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x9 ) ≡ ... ... ≡ 2 ) + ( X 2 y + X 3 y + x6 − x8 ) − ... 2 2 + x5 − x7 ) − ( X 2 y + X 3 y + x6 − x8 ) = 0 + X 3 xP2 + x5 − x7 ... − X 2 xP3 + X 3 xP3 ) − ( X2y P3 ( − x1 − x3 − x5 )2 + ( − x2 − x4 − x6 )2 − ... ... − ( xposición 2 − X 2 xP2 − X 3 xP2 − x5 ) − ( yposición 2 − X 2 yP2 − X 3 yP2 − x6 ) = 0 2 2 h4 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x9 ,x10 ) ≡ ... ... ≡ ( xposición 2 − X 2 x − X 3x − x5 ) + ( yposición 2 − X 2 y − X 3 y − x6 ) − ... 2 2 ... − ( xposición 3 − X 2 x − X 3 x − x5 ) − ( yposición 3 − X 2 y − X 3 y − x6 ) = 0 2 2 P2 h5 ( x1 , x2 , x3 , x4 , x5 , x6 , x9 ) ≡ ... P2 P3 P2 P2 P3 P3 P3 y − X 2 yP2 − X 3 yP2 − x6 ⎞ ⎛ − x − x4 − x6 ⎞ −1 ⎛ posición 2 ... ≡ tan −1 ⎜ 2 + α − tan =0 ⎜ 1 ⎟ ⎜ xposición 2 − X 2 x − X 3 x − x5 ⎟⎟ ⎝ − x1 − x3 − x5 ⎠ ⎝ ⎠ P2 P2 h6 ( x1 , x2 , x3 , x4 , x5 , x6 , x10 ) ≡ ... y − X 2 yP3 − X 3 yP3 − x6 ⎞ ⎛ − x − x4 − x6 ⎞ −1 ⎛ posición 3 an + α − =0 ... ≡ tan −1 ⎜ 2 t ⎜ 2 ⎟ ⎜ xposición 3 − X 2 x − X 3 x − x5 ⎟⎟ ⎝ − x1 − x3 − x5 ⎠ P3 P3 ⎝ ⎠ 55 3.4.3. Enunciado del problema para 4 posiciones prescritas Encontrar el vector de variables de diseño x = ( x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 , x10 , x11 ) que minimicen el siguiente vector de objetivos: F ( x ) = − ⎡⎣ω1 f1 ( x ) + ω2 f 2 ( x ) + ω3 f3 ( x ) + ω4 f 4 ( x ) ⎤⎦ Sujeto a las siguientes restricciones: g1 ( x5 ) ≡ xII − x5 ≤ 0; g3 ( x6 ) ≡ yII − x6 ≤ 0; g5 ( x7 ) ≡ xII − x7 ≤ 0; g7 ( x8 ) ≡ yII − x8 ≤ 0; g9 ( x5 ,x6 ,x7 ,x8 ) ≡ n − g 2 ( x5 ) g 4 ( x6 ) g6 ( x7 ) g8 ( x8 ) ≡ x5 − xSD ≤ 0 ≡ x6 − ySD ≤ 0 ≡ x7 − xSD ≤ 0 ≡ x8 − ySD ≤ 0 ( x7 − x5 )2 + ( x8 − x6 )2 g10 ( x8 ) ≡ − x8 g12 ( x9 ,x10 ) ≡ − x9 + x10 ≤ 0 g11 ( x8 ,x9 ) ≡ − x8 + x9 < 0; g13 ( x10 ,x11 ) < 0; g14 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ) ≡ 30 − f1 ( x ) ≤ 0; g15 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9 ) ≡ 30 − f 2 ( x ) ≤ 0 g16 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x10 ) ≡ 30 − f3 ( x ) ≤ 0 g17 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x11 ) ≡ 30 − f 4 ( x ) ≤ 0 < 0 ≡ − x10 + x11 < 0; g18 ( x1 ,x2 ,x5 ,x6 ,x7 ,x8 ) ≡ x12 + x22 − m ( x7 − x5 )2 + ( x8 − x6 )2 ≤ 0 g19 ( x3 ,x4 ,x5 ,x6 ,x7 ,x8 ) ≡ x32 + x42 − p ( x7 − x5 )2 + ( x8 − x6 )2 ≤ 0 h1 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9 ) ≡ ... ... ≡ ( x1 + x3 + x5 − x7 )2 + ( x2 + x4 + x6 − x8 )2 − ... ( ... − X 2 xP2 + X 3 xP2 + x5 − x7 h2 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9 ,x10 ) ≡ ... ... ≡ ( X 2x P2 ( h3 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x10 ,x11 ) ≡ ... ... ≡ ( X 2x P3 ( P2 + X 3 yP2 + x6 − x8 2 ) 2 =0 2 P2 P2 P3 P3 ) + ( X 2 y + X 3 y + x6 − x8 ) − ... 2 2 + x5 − x7 ) − ( X 2 y + X 3 y + x6 − x8 ) = 0 + X 3 xP3 + x5 − x7 ... − X 2 xP4 + X 3 xP4 2 ) + ( X 2 y + X 3 y + x6 − x8 ) − ... 2 2 + x5 − x7 ) − ( X 2 y + X 3 y + x6 − x8 ) = 0 + X 3 xP2 + x5 − x7 ... − X 2 xP3 + X 3 xP3 ) − ( X2y 2 2 P3 P3 P4 56 P4 h4 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x9 ) ≡ ... ... ≡ ( − x1 − x3 − x5 )2 + ( − x2 − x4 − x6 )2 − ... ... − ( xposición 2 − X 2 xP2 − X 3 xP2 − x5 ) − ( yposición 2 − X 2 yP2 − X 3 yP2 − x6 ) = 0 2 2 h5 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x9 ,x10 ) ≡ ... ... ≡ ( xposición 2 − X 2 x − X 3x − x5 ) + ( yposición 2 − X 2 y − X 3 y − x6 ) − ... 2 2 ... − ( xposición 3 − X 2 x − X 3 x − x5 ) − ( yposición 3 − X 2 y − X 3 y − x6 ) = 0 2 P2 P2 P3 2 P2 P3 P2 P3 P3 h6 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x10 ,x11 ) ≡ ... ... ≡ ( xposición 3 − X 2 x − X 3x − x5 ) + ( yposición 3 − X 2 y − X 3 y − x6 ) − ... 2 2 ... − ( xposición 4 − X 2 x − X 3 x − x5 ) − ( yposición 4 − X 2 y − X 3 y − x6 ) = 0 2 P3 P3 P4 2 P3 P4 P3 P4 P4 h7 ( x1 , x2 , x3 , x4 , x5 , x6 , x9 ) ≡ ... ⎛ yposición 2 − X 2 yP2 − X 3 yP2 − x6 ⎞ ⎛ − x − x4 − x6 ⎞ + α1 − tan −1 ⎜ =0 ... ≡ tan −1 ⎜ 2 ⎟ ⎜ xposición 2 − X 2 x − X 3 x − x5 ⎟⎟ ⎝ − x1 − x3 − x5 ⎠ ⎝ ⎠ P2 P2 h8 ( x1 , x2 , x3 , x4 , x5 , x6 , x10 ) ≡ ... y − X 2 yP3 − X 3 yP3 − x6 ⎞ ⎛ − x − x4 − x6 ⎞ −1 ⎛ posición 3 + α − =0 ... ≡ tan −1 ⎜ 2 tan ⎜ 2 ⎟ ⎜ xposición 3 − X 2 x − X 3 x − x5 ⎟⎟ ⎝ − x1 − x3 − x5 ⎠ P3 P3 ⎝ ⎠ h9 ( x1 , x2 , x3 , x4 , x5 , x6 , x11 ) ≡ ... ⎛ yposición 4 − X 2 yP4 − X 3 yP4 − x6 ⎞ ⎛ − x − x4 − x6 ⎞ + α3 − tan −1 ⎜ ... ≡ tan −1 ⎜ 2 ⎟⎟ = 0 ⎟ ⎜ − − − − x X X − − x x x x 2 xP4 3 xP4 ⎝ 1 3 5⎠ 5 ⎠ ⎝ posición 4 3.4.4. Enunciado del problema para 5 posiciones prescritas Encontrar el vector de variables de diseño x = ( x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 , x10 , x11 , x12 ) que minimicen el siguiente vector de objetivos: F ( x ) = − ⎡⎣ω1 f1 ( x ) + ω2 f 2 ( x ) + ω3 f3 ( x ) + ω4 f 4 ( x ) + ω5 f5 ( x ) ⎤⎦ Sujeto a las siguientes restricciones: 57 g1 ( x5 ) g3 ( x6 ) g5 ( x7 ) g7 ( x8 ) ≡ xII − x5 ≤ ≡ yII − x6 ≤ ≡ xII − x7 ≤ ≡ yII − x8 ≤ g 2 ( x5 ) g 4 ( x6 ) g6 ( x7 ) g8 ( x8 ) 0; 0; 0; 0; g9 ( x5 ,x6 ,x7 ,x8 ) ≡ n − ≡ x5 − xSD ≤ 0 ≡ x6 − ySD ≤ 0 ≡ x7 − xSD ≤ 0 ≡ x8 − ySD ≤ 0 ( x7 − x5 )2 + ( x8 − x6 )2 g10 ( x8 ) ≡ − x8 g12 ( x9 ,x10 ) ≡ − x9 + x10 < 0; g14 ( x11 ,x12 ) ≡ − x11 + x12 < 0; ≤ 0 g11 ( x8 ,x9 ) ≡ − x8 + x9 < 0; g13 ( x10 ,x11 ) g15 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ) ≡ 30 − f1 ( x ) ≤ 0; g16 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9 ) ≡ 30 − f 2 ( x ) ≤ 0 g17 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x10 ) ≡ 30 − f3 ( x ) ≤ 0 g18 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x11 ) ≡ 30 − f 4 ( x ) ≤ 0 g19 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x12 ) ≡ 30 − f5 ( x ) ≤ 0 < 0 ≡ − x10 + x11 < 0; g 20 ( x1 ,x2 ,x5 ,x6 ,x7 ,x8 ) ≡ x12 + x22 − m ( x7 − x5 )2 + ( x8 − x6 )2 ≤ 0 g 21 ( x3 ,x4 ,x5 ,x6 ,x7 ,x8 ) ≡ x32 + x42 − p ( x7 − x5 )2 + ( x8 − x6 )2 ≤ 0 h1 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9 ) ≡ ... ... ≡ ( x1 + x3 + x5 − x7 )2 + ( x2 + x4 + x6 − x8 )2 − ... ( ... − X 2 xP2 + X 3 xP2 + x5 − x7 h2 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9 ,x10 ) ≡ ... ... ≡ ( X 2x P2 ( h3 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x10 ,x11 ) ≡ ... ... ≡ ( X 2x P3 ( h4 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x11 ,x12 ) ≡ ... ... ≡ ( X 2x P4 ( ) 2 =0 2 2 P2 P2 P3 ) + ( X 2 y + X 3 y + x6 − x8 ) − ... 2 2 + x5 − x7 ) − ( X 2 y + X 3 y + x6 − x8 ) = 0 2 2 P3 P3 P4 P4 ) + ( X 2 y + X 3 y + x6 − x8 ) − ... 2 2 + x5 − x7 ) − ( X 2 y + X 3 y + x6 − x8 ) = 0 + X 3 xP4 + x5 − x7 ... − X 2 xP5 + X 3 xP5 P2 + X 3 yP2 + x6 − x8 P3 + X 3 xP3 + x5 − x7 ... − X 2 xP4 + X 3 xP4 2 ) + ( X 2 y + X 3 y + x6 − x8 ) − ... 2 2 + x5 − x7 ) − ( X 2 y + X 3 y + x6 − x8 ) = 0 + X 3 xP2 + x5 − x7 ... − X 2 xP3 + X 3 xP3 ) − ( X2y 2 2 P4 P4 P5 58 P5 h5 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x9 ) ≡ ... ... ≡ ( − x1 − x3 − x5 )2 + ( − x2 − x4 − x6 )2 − ... ... − ( xposición 2 − X 2 xP2 − X 3 xP2 − x5 ) − ( yposición 2 − X 2 yP2 − X 3 yP2 − x6 ) = 0 2 2 h6 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x9 ,x10 ) ≡ ... ... ≡ ( xposición 2 − X 2 x − X 3x − x5 ) + ( yposición 2 − X 2 y − X 3 y − x6 ) − ... 2 2 ... − ( xposición 3 − X 2 x − X 3 x − x5 ) − ( yposición 3 − X 2 y − X 3 y − x6 ) = 0 2 P2 P2 P3 2 P2 P2 P3 P3 P3 h7 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x10 ,x11 ) ≡ ... ... ≡ ( xposición 3 − X 2 x − X 3x − x5 ) + ( yposición 3 − X 2 y − X 3 y − x6 ) − ... 2 2 ... − ( xposición 4 − X 2 x − X 3 x − x5 ) − ( yposición 4 − X 2 y − X 3 y − x6 ) = 0 2 P3 P3 P4 2 P3 P3 P4 P4 P4 h8 ( x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x11 ,x12 ) ≡ ... ... ≡ ( xposición 4 − X 2 x − X 3x − x5 ) + ( yposición 4 − X 2 y − X 3 y − x6 ) − ... 2 2 ... − ( xposición 5 − X 2 x − X 3 x − x5 ) − ( yposición 5 − X 2 y − X 3 y − x6 ) = 0 2 P4 P4 P5 2 P4 P5 P4 P5 P5 h9 ( x1 , x2 , x3 , x4 , x5 , x6 , x9 ) ≡ ... ⎛ yposición 2 − X 2 yP2 − X 3 yP2 − x6 ⎞ ⎛ − x − x4 − x6 ⎞ ... ≡ tan −1 ⎜ 2 =0 + α1 − tan −1 ⎜ ⎟ ⎜ xposición 2 − X 2 x − X 3 x − x5 ⎟⎟ ⎝ − x1 − x3 − x5 ⎠ ⎝ ⎠ P2 P2 h10 ( x1 , x2 , x3 , x4 , x5 , x6 , x10 ) ≡ ... y − X 2 yP3 − X 3 yP3 − x6 ⎞ ⎛ − x − x4 − x6 ⎞ −1 ⎛ posición 3 ... ≡ tan −1 ⎜ 2 tan + α − =0 ⎜ 2 ⎟ ⎜ xposición 3 − X 2 x − X 3 x − x5 ⎟⎟ ⎝ − x1 − x3 − x5 ⎠ P3 P3 ⎝ ⎠ h11 ( x1 , x2 , x3 , x4 , x5 , x6 , x11 ) ≡ ... ⎛ yposición 4 − X 2 yP4 − X 3 yP4 − x6 ⎞ ⎛ − x − x4 − x6 ⎞ ... ≡ tan −1 ⎜ 2 + α3 − tan −1 ⎜ =0 ⎟ ⎜ xposición 4 − X 2 x − X 3 x − x5 ⎟⎟ ⎝ − x1 − x3 − x5 ⎠ ⎝ ⎠ P4 P4 h12 ( x1 , x2 , x3 , x4 , x5 , x6 , x12 ) ≡ ... y − X 2 yP5 − X 3 yP5 − x6 ⎞ ⎛ − x − x4 − x6 ⎞ −1 ⎛ posición 5 ... ≡ tan −1 ⎜ 2 tan =0 + α − ⎜ 4 ⎟ ⎜ xposición 5 − X 2 x − X 3 x − x5 ⎟⎟ ⎝ − x1 − x3 − x5 ⎠ P5 P5 ⎝ ⎠ 3.5. SOLUCIÓN DEL PROBLEMA DE OPTIMIZACIÓN USANDO MATLAB Cada uno de los problemas de diseño se resuelve independientemente, por lo tanto se desarrolló un algoritmo para resolver separadamente el correspondiente problema. 59 El siguiente flujograma describe la forma como esta estructurado el algoritmo: Figura 19. Estructura general del algoritmo Archivo de datos Archivo principal Archivo de funciones objetivo Archivo de restricciones El “Archivo de datos” mantiene los valores de los datos conocidos y supuestos para el vector x de variables de diseño (condición inicial). El “Archivo de funciones objetivo” contiene el vector de objetivos F ( x ) y el “Archivo de restricciones” las respectivas restricciones h p ( x ) y g m ( x ) . Dado que el vector de objetivos F ( x ) y algunas de las restricciones h p ( x ) y g m ( x ) no son lineales, (lo que representa un problema de programación no lineal) para resolver el problema se usó la función “fmincon” de MATLAB en el “Archivo principal”, además este contiene las rutinas para dibujar el mecanismo en cada una de las posiciones prescritas y visualizar los resultados obtenidos. Como el algoritmo no siempre ofrecía soluciones (o no eran las mejores) para el conjunto de valores contenido en el “Archivo de datos”, era deseable probar otros conjuntos pero la tarea era muy tediosa y poco intuitiva ya que había que introducir manualmente los datos de la condición inicial, por lo tanto fue necesario desarrollar una interfaz que permitiera señalar gráficamente dichos vectores. En ANEXOS, se describe la interfaz gráfica así como las instrucciones para introducir los datos. 60 4. RESULTADOS Aunque los criterios de convergencia del algoritmo deberían cambiar según el nivel de complejidad del problema o dependiendo del número de posiciones prescritas, se prefirió dejarlos en unos valores fijos máximos, que fueron obtenidos al resolver problemas con diversos grados de dificultad. Tales criterios fueron: • MaxFunEvals = 2500 para 2 posiciones prescritas y 7500 para 3 o más: Define el máximo número de veces que el algoritmo puede evaluar la función objetivo. Un llamado adicional a la función objetivo implica la finalización de la búsqueda sin alcanzar una solución. • MaxIter = 200 para 2 posiciones prescritas y 600 para 3 o más: Define el máximo número de iteraciones que puede realizar el algoritmo. Una iteración adicional implica la finalización de la búsqueda sin alcanzar una solución. • TolFun = 1x10-3 para 2 posiciones prescritas y 1x10-6 para 3 o más: Esta cantidad define la tolerancia de convergencia asociada con la variación en el valor de la función objetivo. Una variación por debajo de esta cantidad lleva a una finalización exitosa de la búsqueda. • TolX = 1x10-3 para 2 posiciones prescritas y 1x10-6 para 3 o más: Esta cantidad define la tolerancia de convergencia asociada con la variación en el valor de las variables de diseño. Una variación por debajo de esta cantidad lleva a una finalización exitosa de la búsqueda. 4.1. EJEMPLOS DE APLICACIÓN PARA 2 POSICIONES PRESCRITAS Los problemas mostrados a continuación poseen diversos niveles de dificultad. Las soluciones mostradas en las ventanas de resultados validan el trabajo de formulación del problema de optimización, así como su solución mediante el algoritmo desarrollado que es el motor en el que se basa el GUI implementado. Enunciado del Problema 1: Sobre la banda transportadora inferior se mueve un conjunto de cajas. Es necesario disponer la caja que cumpla cierta condición “A”, sobre la banda transportadora superior con la orientación ilustrada en la siguiente figura. Es necesario obtener las dimensiones y posición inicial del mecanismo de 4 barras generador de movimiento que de manera efectiva cumpla con este cometido. Sus pares fijos deben quedar confinados al área de montaje ilustrada. 61 Figura 20. Datos del problema 1. Síntesis de 2 posiciones Figura 21. Ventana de datos del problema 1. Síntesis de 2 posiciones 62 4.1.1. Descripción del dibujo ilustrado en la ventana de datos (Figura 21) A partir de los datos introducidos en los campos (para mayor información al respecto, debe consultarse el manual de usuario en los ANEXOS) el GUI dibuja un rectángulo y 2 o más líneas dependiendo del número de posiciones prescritas. El rectángulo representa el área dentro del cual deben quedar los pares fijos O2 y O4 y las líneas denotan la posición y orientación de cada una de las posiciones prescritas (El rótulo “P1” identifica la primera posición prescrita). Figura 22. Ventana de resultados del problema 1. Síntesis de 2 posiciones 4.1.2. Descripción del dibujo ilustrado en la ventana de resultados (Figura 22) Sea que la solución sea factible o no (es decir se satisfagan todas las restricciones) la interfaz dibujará el mecanismo. Las líneas gruesas representan los eslabones del mecanismo dispuesto en la posición inicial (primera posición prescrita). Los otros conjuntos de líneas, al mecanismo en otra posición prescrita. El par motriz O2 (ver la Figura 1) se identifica mediante un triángulo y un punto en su centro. El par O4 mediante un triángulo. El par “A” mediante un círculo y un punto en su centro. El par “B” mediante un cuadrado. A partir de los pares debe ser fácil identificar los eslabones motriz, acoplador y seguidor. 63 Los 4 puntos identificados en la Figura 22 con el rotulo “inicio” denotan la condición inicial necesaria para que el algoritmo emprenda la búsqueda correspondiente. Dado que la solución depende en gran medida de tales puntos, es factible probar otros conjuntos de manera sistemática hasta encontrar otra alternativa mejor. Una manera para buscar tal alternativa (aun en casos donde la solución no sea factible), consiste en estudiar el dibujo del mecanismo en la ventana de resultados y cambiar un solo punto la vez. Por ejemplo probar una nueva posición para el par O2, dejando fijo a O4. Aunque esta forma gráfica e intuitiva ofrece una magnifica alternativa para diseñar mecanismos óptimos, puede que tarde en aparecer una solución que satisfaga todas las restricciones de diseño. La solución ilustrada en la Figura 22 convergió en 143 iteraciones y 2251 llamados al vector de objetivos. La Figura 23 ilustra el mecanismo en su entorno de operación. Figura 23. Dibujo del mecanismo del problema 1 en su entorno operativo. Para los siguientes problemas solo se mostrarán las ventanas de datos y resultados. A partir de las descripciones anteriores, el lector puede inferir con facilidad los datos del problema de diseño correspondiente. 64 Figura 24. Ventanas de datos y resultados del problema 2. Síntesis de 2 posiciones La solución mostrada en la Figura 24, aunque geométricamente es mucho más compleja que la del problema 1, convergió en apenas 11 iteraciones y 134 llamados al vector de objetivos. 65 Figura 25. Ventana de datos y resultados del problema 3. Síntesis de 2 posiciones La solución mostrada en la Figura 25 convergió en 88 iteraciones y 1021 llamados al vector de objetivos. 66 4.2. EJEMPLO DE APLICACIÓN PARA 3 POSICIONES PRESCRITAS Figura 26. Ventana de datos y resultados del problema. Síntesis de 3 posiciones 67 La solución mostrada en la Figura 26 convergió en 50 iteraciones y 926 llamados al vector de objetivos. La siguiente figura ilustra otra solución factible para este problema. Figura 27. Solución alternativa para el problema de síntesis de 3 posiciones La solución mostrada en la Figura 27 convergió en 48 iteraciones y 697 llamados al vector de objetivos. 68 4.3. EJEMPLO DE APLICACIÓN PARA 4 POSICIONES PRESCRITAS Figura 28. Ventana de datos y resultados del problema. Síntesis de 4 posiciones La solución mostrada en la Figura 28 convergió en 27 iteraciones y 566 llamados al vector de objetivos. 69 5. CONCLUSIONES Cuando se tienen restricciones de montaje, la forma de díada estándar no puede por sí misma ofrecer soluciones con ángulos de transmisión óptimos, de manera que fue necesario usar un método de optimización. Al lograr que los ángulos de transmisión de 2 posiciones sucesivas cercanas tengan valores altos, ciertamente se puede asegurar que el mecanismo no se trabará (condición conocida como “agarrotamiento” o defecto de “rama” que es debida a la presencia de un ángulo de transmisión de “0º” en un punto intermedio entre tales posiciones sucesivas), así como una ventaja mecánica promedio significativamente grande. Luego de probar diversos conjuntos de funciones y variables de diseño, se concluyó que las soluciones más consistentes se obtienen a partir de las siguientes ocho variables de diseño: • 4 variables que representan las coordenadas (x, y) de los pares fijos del mecanismo. • 4 variables que representan las componentes escalares (horizontal y vertical) de los eslabones motriz y acoplador. El mecanismo se puede construir a partir de estas variables, sin embargo hace falta una variable para describir cada una de las posiciones sucesivas del mecanismo. La variable elegida representa el ángulo de rotación del eslabón motriz medido desde la posición inicial del eslabonamiento. Las soluciones obtenidas a partir de estas variables de diseño cumplía parcialmente la correspondiente tarea de movimiento de manera que fue necesario añadir varias restricciones de diseño para satisfacer por completo la posición y orientación del acoplador. El algoritmo desarrollado le ofrece al diseñador una buena herramienta para encontrar mecanismos de barras, que de manera eficientes solucionen los problemas asociados con la conducción de un cuerpo rígido a través de una serie de posiciones prescritas. El algoritmo está basado en la técnica de optimización SQP, que representa el estado del arte en las técnicas de programación no lineal (NLP) basadas en la filosofía de la dirección de descenso. Desafortunadamente solo encuentra mínimos locales. Cuando se emplea SQP (y la gran mayoría de métodos de optimización) la solución depende en gran medida de la condición inicial. Así que es probable que sea necesario probar diversos conjuntos de datos hasta encontrar una solución, pero para el caso que atañe este trabajo, preparar e introducir los datos correspondientes en forma manual era una tarea larga y tediosa, y en la mayoría de las veces no se sabía si se avanza en la dirección correcta. Por lo tanto se desarrolló una interfaz (descrita en los ANEXOS) que le 70 permite al usuario señalar mediante el Mouse, la posición probable donde deben ubicarse los pares del mecanismo. La interfaz no solo facilita la introducción de la condición inicial de una manera intuitiva, sino que visualiza los resultados (factibles o no) y permite “seguirle la pista” a una mejor solución. No puede olvidarse que detrás de ella se encuentra un algoritmo robusto, estable y que tiene buenas propiedades de convergencia. Dentro de las estrategias de optimización multiobjetivo, la “Suma ponderada” es una técnica simple que permitió destacar las funciones objetivo que describen el ángulo μ de la primera y última posición prescrita, que son claves para lograr que se transmita el movimiento desde el acoplador hacia el seguidor de manera efectiva. Al definir las restricciones de diseño hay que tener cuidado de no usarse restricciones redundantes o dependientes ya que pueden producir inconsistencias en las soluciones. Un vector de variables de diseño y una función de costo bien formulada ofrece resultados inconsistentes, si el problema no está correctamente restringido. Aunque puede pensarse que las variables de diseño tienen que ver con los parámetros constructivos de un sistema, debe considerarse que en algunos casos ello no es cierto. Evidencia de esto es la variable β de este trabajo. Si la solución no aparece, se pueden variar los valores de n, m y p de las ecuaciones (12) y (15), de manera que la región factible Ω aumente de tamaño. 71 6. TRABAJO FUTURO El algoritmo y la interfaz pueden refinarse de manera que para cierta posición de los pares fijos sea posible visualizar las zonas en donde no sea factible encontrar soluciones que satisfagan las restricciones de diseño, de manera que el diseñador pueda concentrarse en aquellas áreas donde si lo sea. Además de optimizar el ángulo de transmisión, el trabajo puede continuarse en la dirección de hacer síntesis dimensional óptima (longitud mínima de los eslabones). Como SQP solo puede encontrar mínimos locales, es necesario explorar otras técnicas de optimización que puedan encontrar mínimos globales, al menos dentro del área donde deben quedar los pares fijos del mecanismo. En este trabajo los pares fijos O2 y O4 se confinaron a un área particular. En muchos casos de diseño es necesario hacer lo mismo con los pares móviles “A” y “B” por razones constructivas o de conveniencia y por lo tanto el estudio puede continuarse en la dirección de reformular el problema de diseño de manera que se tenga en cuenta este nuevo conjunto de restricciones. 72 REFERENCIAS ARORA, J.S (2004) “Introduction to optimum design” 2a Ed, Academic Pres ALT. VON H. (1932). “Der ubertragungswinkel und seine bedeutung fur dar konstruieren periodischer getribe werksstatstechnik” pág. 61-62 BALLI S.S & CHAND S. (2002) “transmission angle in mechanisms” Mechanism and Machine Theory 37, pág. 175–195 BELEGUNDU A.D. & CHANDRUPATLA T.R. (1999) “Optimization concept and applications in engineering” Pearson Education – Prentice Hall. BURMESTER L.”Lehrbuch der Kinematik” (1888) Arthur Felix Verlag, Leipzig Pág. 599–623 ERDMAN, A.G. & SANDOR G.N. (1997) “Diseño de mecanismos, análisis y síntesis” Vol 1, 3a Ed, Prentice. HARTENBERG R.S., DENAVIT. J. (1964) “Kinematic synthesis of lincages”, McGrawHill, pág. 46-47. HAYES M.J.D. & ZSOMBOR-MURRAY P.J. (2004) “Towards Integrated Type and Dimensional Synthesis of Mechanisms for Rigid Body Guidance” CSME 2004 Forum, Pág. 1-9. LOERCH R. J., ERDMAN A.G., SANDOR N. & MIDHA A. (1975) “Synthesis of fourbar linkages with specified ground pivots” 4th Applied Mechanisms Conference. Chicago. Pág 10.1 – 10.6 LOERCH R. J., ERDMAN A.G. & SANDOR N. (1979) “On the existence of circle-point and center-point for three precision point Dyad synthesis” Journal of Mechanical Design. Pág 554 – 562 NORTON R.L. (2004), “Design of Machinery”, 3a Ed, McGrawHill PARETO V. (1971), “Manual de Political Economy”, Augustus M. Kelley Publishers PETERSON R. L., LOGAN L., ERDMAN A.G. & RILEY D. (1988) “Three precision point synthesis of a four-bar linkage: An example using the LINCAGES-4 program”. Computers in Engineering. ASME, Vol. 2, pág. 91-96. 73 SUTHERLAND S. (1974), “Dimensional synthesis of linkages by multifactor optimization” Mechanism and Machine Theory, pág. 81-95 TAO. D. C. (1964) “Applied linkages synthesis”. Addinson-Wesley, pág. 7-12 UICKER J. GORDON R. SHIGLEY J. (2003) “Theory of machines and mechanims”, third edition, Oxford University Press. 74 ANEXO A - DESCRIPCIÓN DE LA INTERFAZ GRÁFICA Usando el entorno GUIDE (Graphical User Interface development environment) de MATLAB se desarrolló un GUI (interfaz gráfica de usuario) que tiene 2 propósitos. El primero de ellos es contribuir a que la introducción de los datos de la condición inicial para la optimización sea intuitiva y fácil. El segundo propósito es aportarle al diseñador de mecanismos un entorno simple y cómodo que le permita obtener soluciones con relativa facilidad. El GUI posee 2 ventanas, la primera de ellas es la ventana de datos en donde se introduce y visualiza la información prescrita o conocida del problema de diseño de mecanismos, tal como la orientación y posición de cada posición prescrita, y las coordenadas de la zona dentro de la cual quedarán los pares fijos del mecanismo. Esta ventana posee un conjunto de ayudas que hacen fácil la introducción de los datos. Ver la Figura 29 Figura 29. Ventana de datos prescritos Orientación de cada posición prescrita Posición de cada posición prescrita Posición de la zona donde quedará el bastidor En la segunda ventana se introducen los datos de la condición inicial de manera que el algoritmo de cálculo pueda empezar la búsqueda de la solución óptima. Una vez se 75 encuentra una solución se ilustra el mecanismo posicionado en cada una de las posiciones prescritas, mostrando además las longitudes y orientación de sus eslabones, así como las ayudas correspondientes para interpretar el resultado de la búsqueda. Ver la Figura 30 El GUI está diseñado de forma que deben introducirse los datos en un orden particular que depende de lo que sea necesario para resolver el problema, además solo acepta datos que estén dentro de un rango particular, pertenezcan a un sistema de unidades específico y que no arrojen incoherencias (tales como la ubicación de un par fijo fuera de la zona para el bastidor). El GUI está contenido en los archivos “Synthesis_HAPL.fig” y “Synthesis_HAPL.m” del directorio raíz del CD que acompaña este documento. El primero de ellos contiene una descripción del formato y los componentes del GUI, el segundo contiene el código que lo controla. Figura 30. Ventana de Resultados Longitud y orientación de los eslabones de la solución encontrada en la posición inicial Ángulo de transmisión μ del mecanismo en cada posición prescrita Orientación relativa del motriz para las posiciones intermedias y final En la sección siguiente se describe detalladamente cada ventana y se dan las instrucciones correspondientes para usar adecuadamente el GUI desarrollado. 76 ANEXO B - MANUAL DE USUARIO • Recomendaciones. La versión de MatLab que requiere el GUI debe ser R6 o superior y una resolución de pantalla de mínimo 800x600 píxeles. Las instrucciones dadas en este instructivo se describen de manera que sea fácil usar el GUI aunque no se este familiarizado con el uso de MatLab. • Carga del GUI. Cargue MatLab. Para acceder al GUI debe añadirse a MatLab la carpeta “D:\”, mediante la opción “Set Path…” del menú “File”. Posteriormente se digita “Synthesis_HAPL” en la línea de comando (>>), lo que hará que se visualicen la ventana de datos. • Introducción de la información en la ventana de datos. Obsérvese que los campos y botones de la ventana de datos están deshabilitados excepto los de “Ayuda” y los del “Número de posiciones de diseño”. Una vez se ha elegido el número de posiciones de diseño, los campos correspondientes se habilitan para introducir los datos conocidos del problema. Aunque el GUI esta diseñado de forma tal que solo acepta la información en un formato específico y dentro de unos rangos particulares, es necesario conocerlos de antemano para que resulte fácil introducirla. La orientación de cada una de las posiciones de diseño es una cantidad positiva en notación decimal, medida en grados que se toma desde el eje positivo X y está comprendida en el rango [0, 360]. Para 3 posiciones prescritas se ilustran en la Figura 31 estas orientaciones y lo que debe introducirse en los campos. 77 Figura 31. Orientación de cada posición prescrita. La posición inicial es la de referencia y por lo tanto un punto (arbitrario) de ella es el origen de coordenadas del problema. La posición del resto de posiciones prescritas se mide respecto a la inicial. Se puede usar cualquier cantidad física para las coordenadas y su notación es decimal. Para 3 posiciones prescritas se ilustran en la Figura 32 estas coordenadas y lo que debe introducirse en los campos. Figura 32. Posición relativa de cada posición prescrita. Las coordenadas de la zona dentro de la cual quedarán los pares fijos del bastidor se mide respecto al punto arbitrario de la posición inicial. La cantidad física para estas coordenadas debe ser la usada previamente y su notación es decimal. Para 3 posiciones 78 prescritas se ilustran en la Figura 33 estas coordenadas y lo que debe introducirse en los campos. Figura 33. Posición relativa de la zona del bastidor. • Validación y dibujo de la información introducida. Una vez introducida la información es necesario verificar que no haya inconsistencias, para ello debe pulsarse el botón “Validar”. En caso que haya inconsistencias, un cuadro de dialogo revelará el error. A continuación se ilustran los cuadros de dialogo respectivos. Si no hay inconsistencias se habilitará el botón “Dibujar”, los campos se deshabilitarán (No podrán hacerse cambios a los datos) y se mostrará el siguiente cuadro de dialogo. 79 Para representar y verificar la información introducida, debe pulsarse el botón “Dibujar”. Una vez dibujada se habilitará el botón “Diseño Interactivo” que permitirá acceder a la ventana de resultados. • Inicialización de la interfaz. Para poner en “cero” los campos de la interfaz, debe pulsarse el botón “Reset” • Introducción de los datos de la condición inicial. Una vez en la ventana de resultados, mediante el Mouse debe señalarse la posición de los pares fijos del bastidor. El procedimiento a seguir se describe en continuación: Pulse el botón “Par O2 y O4”, un cuadro de diálogo instruirá sobre lo que debe hacerse. Una vez señalados estos pares son habilitados los botones “Par A y B” y “Probar otra…”. Pulse el botón “Par A y B”, un cuadro de diálogo instruirá sobre lo que debe hacerse. Una vez señalados estos pares es habilitado el botón “Calcular”. La Figura 34 da una idea de lo que se obtiene. El par O2 se denota con un punto dentro del triángulo, el par O4 mediante un triángulo. Es factible que al señalar la posición de alguno de los pares O2 y O4, se haga por fuera de la zona dentro de la cual deben quedar, a lo cual el GUI mostrará un cuadro de diálogo y pedirá que se señale de nuevo su ubicación. Los diálogos correspondientes se muestran a continuación. 80 Figura 34. Condición inicial • Cálculo de una solución Al pulsar el botón “Calcular” se pone en marcha el algoritmo de cálculo, que entrega un resultado al cabo de minutos. El resultado es el dibujo del mecanismo en cada una de las posiciones prescritas, así como la longitud y orientación de los eslabones de la solución encontrada en la posición inicial, el ángulo de transmisión μ del mecanismo en cada posición prescrita y la orientación relativa del eslabón motriz para las posiciones intermedias y final. • Prueba de otra condición inicial Para probar otro conjunto de condiciones iniciales debe pulsarse el botón “Probar otra…”, lo que eliminará el dibujo de la solución encontrada. • Interpretación de los resultados Aunque el GUI desarrollado es una magnifica herramienta para diseñar mecanismos óptimos no significa que por si mismo pueda garantizar que toda solución es 100% funcional o valida. 81 En la ventana de resultados el botón “Interpretación de resultados” permite consultar una esta guía para este fin. • Cerrar el GUI Para cerrar el GUI, simplemente debe pulsarse el botón “⌧” hasta salir de MatLab. Si lo que se desea es cerrar la ventana de resultados para retornar a la de datos, debe usarse el botón “Volver”. 82 ANEXO C - CÓDIGO DEL ALGORITMO El código está almacenado en una serie de archivos que se organizaron de la siguiente forma: Archivos de la Interfaz: Synthesis_HAPL.m Optimizacion.m Ayuda1.m Ayuda2.m Ayuda3.m & & & & & Synthesis_HAPL.fig Optimizacion.fig Ayuda1.fig Ayuda2.fig Ayuda3.fig Estos archivos mantienen la información asociada con la programación de la interfaz de las ventanas de datos, de resultados y de ayuda. Archivo de dibujo: Dibujar.m Este archivo dibuja la información prescrita. Este archivo es usado con frecuencia por la interfaz. Archivos de Datos: Datos_Prescritos.dat Dos_posic_DATOS.dat Tres_posic_DATOS.dat Cuatro_posic_DATOS.dat Cinco_posic_DATOS.dat Se encuentran guardados en el subdirectorio “datos”. Estos archivos mantienen la información prescrita, los datos de intercambio de información entre los diversos archivos de la aplicación y los datos de los resultados. Archivos del algoritmo: Dos_posic_DAT.m Dos_posic_fun.m Tres_posic_DAT.m Tres _posic_fun.m Cuatro_posic_DAT.m Cuatro _posic_fun.m & & & & & & Dos_posic_EXE.m Dos_posic_Res.m Tres _posic_EXE.m Tres _posic_Res.m Cuatro _posic_EXE.m Cuatro _posic_Res.m Están guardados en el subdirectorio “private”. Los archivos _DAT.m contienen la condición inicial y otros datos necesarios para el algoritmo. Los archivos _EXE.m son el corazón del algoritmo, además de ser responsables de mostrar los resultados. Los archivos _fun.m contienen el vector de objetivos en términos de las variables de diseño. Los archivos _Res.m mantienen las restricciones correspondientes. 83 Solo se muestran los archivos del algoritmo correspondientes a 2 posiciones prescritas (Dos_posic_DAT.m; Dos_posic_EXE.m; Dos_posic_fun.m; Dos_posic_Res.m). Tabla 3. Archivo de datos. Dos_posic_DAT.m %ARCHIVO DE DATOS (Dos_posic_DAT.m) %necesarios para el programa principal "Dos_posic_EXE.m", para el archivo de funciones %objetivo "Dos_posic_fun.m" y para el archivo de restricciones "Dos_posic_Res.m" function [x0,A1,xP2,yP2,xSD,ySD,xII,yII]=Dos_posic_DAT;%Retorna los valores M = csvread('datos\Dos_posic_DATOS.dat');%Lee el archivo externo "Dos_posic_DATOS.dat" y asigna los datos a la matriz M. x0=M(:,1:9);% M(:,1:9) extrae los datos de las columnas 1 a 9 del vector M y los asigna a x0. x0 es la condicion inicial A1=M(:,10);% M(:,10) extrae el dato de la columna 10 del vector M y lo asigna a A1. Ángulo alfa 1 xP2=M(:,11);%Coordenada x de la segunda posición prescrita yP2=M(:,12);%Coordenada y de la segunda posición prescrita xSD=M(:,13);%Coordenada x de la esquina superior derecha del área para el bastidor ySD=M(:,14);%Coordenada y de la esquina superior derecha del área para el bastidor xII=M(:,15);%Coordenada x de la esquina inferior izquierda del área para el bastidor yII=M(:,16);%Coordenada y de la esquina inferior izquierda del área para el bastidor Tabla 4. Archivo principal. Dos_posic_EXE.m %PROGRAMA PRINCIPAL 15-Oct-2007 11:00pm (Dos_posic_EXE.m) function Dos_posic_EXE clear all %OPTIMIZACION__________________________________________________________________ warning off MATLAB:divideByZero;%suprime la advertencia cuando aparece una division por cero % options = optimset;%Opciones por defecto de la estructura de los parametros de optimizacion options = optimset('Display','iter','LargeScale','off','MaxFunEvals',0.5*5000,'MaxIter',200); % Estructura personalizada de los parametros de optimizacion. Puede revisarse usando "output" en la linea de comando [x0,A1,xP2,yP2,xSD,ySD,xII,yII]=Dos_posic_DAT;%LLamada de datos desde la funcion "Dos_posic_DAT.m". [x,fval,exitflag,output] = fmincon(@Dos_posic_fun,x0,[],[],[],[],[],[],@Dos_posic_Res,options);%Optimizacion x;%Vector solucion [c,ceq] = Dos_posic_Res(x);%Llamada de datos desde la funcion "Dos_posic_Res.m" % fval*180/pi;% Retorna el valor de la funcion objetivo para la solucion x encontrada % exitflag;% Si exitflag es > 0 entonces el vector x es una solucion (La funcion "converge" en x) % output % Muestra informacion sobre los parametros y opciones de optimizacion % Si las restricciones son <=0, significa que se han cumplido %OPTIMIZACION__________________________________________________________________ %DATOS PARA ILUSTRAR EN LA LINEA DE COMANDO LOS DATOS DE LOS ESLABONES Y EL ANGULO DE %TRANSMISION_______________________ % DATOS OBTENIDOS DE LA OPTIMIZACION x2x=x(:,1);%Motriz [%x(:,1) extrae la columna 1 del vector x] x2y=x(:,2);%Motriz x3x=x(:,3);%Acoplador x3y=x(:,4);%Acoplador xO2=x(:,5); yO2=x(:,6); xO4=x(:,7); yO4=x(:,8); B1=x(:,9);%Rotacion del motriz, en radianes x1x=x(:,7)-x(:,5);%Bastidor x1y=x(:,8)-x(:,6);%Bastidor R0x=-xO4; 84 R0y=-yO4; R1x=xP2-xO4; R1y=yP2-yO4; % DATOS DE LOS VECTORES PARA LA POSICION INICIAL x4x1=(-x1x+x2x+x3x);%Seguidor x4y1=(-x1y+x2y+x3y);%Seguidor x5x1=(x1x-x2x+R0x); x5y1=(x1y-x2y+R0y); x6x1=(R0x+x1x-x2x-x3x); x6y1=(R0y+x1y-x2y-x3y); % CALCULO DE LAS LONGITUDES DE LOS ESLABONES DEL MECANISMO & ANGULO DE TRANSMISION PARA % LA POSICION INICIAL x1=sqrt(x1x^2+x1y^2); x2=sqrt(x2x^2+x2y^2); x3=sqrt(x3x^2+x3y^2); x4=sqrt(x4x1^2+x4y1^2); x5=sqrt(x5x1^2+x5y1^2); x6=sqrt(x6x1^2+x6y1^2); % mu1=min(gamma1,pi-gamma1) mu1=min(acos((-x1^2-x2^2+x3^2+x4^2+2*x1*x2*cos(atan2(x2y,x2x)-atan2(x1y,x1x)))/(2*x3*x4)),pi-acos((-x1^2-… x2^2+x3^2+x4^2+2*x1*x2*cos(atan2(x2y,x2x)-atan2(x1y,x1x)))/(2*x3*x4))); %DATOS DE LOS VECTORES PARA LA POSICION FINAL x2x2=cos(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2);%Motriz x2y2=sin(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2);%Motriz x3x2=cos(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2);%Acoplador x3y2=sin(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2);%Acoplador x4x2=(-x1x+(cos(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2))+(cos(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)));%Seguidor x4y2=(-x1y+(sin(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2))+(sin(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)));%Seguidor x5x2=(x1x-(cos(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2))+R1x);%Acoplador x5y2=(x1y-(sin(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2))+R1y);%Acoplador x6x2=(R1x+x1x-(cos(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2))-… (cos(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)));%Acoplador x6y2=(R1y+x1y-(sin(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2))-… (sin(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)));%Acoplador % CALCULO DE LAS LONGITUDES DE LOS ESLABONES DEL MECANISMO & ANGULO DE TRANSMISION PARA % LA POSICION FINAL x12=x1; x22=sqrt(x2x2^2+x2y2^2); x32=sqrt(x3x2^2+x3y2^2); x42=sqrt(x4x2^2+x4y2^2); x52=sqrt(x5x2^2+x5y2^2); x62=sqrt(x6x2^2+x6y2^2); % mu2=min(gamma2,pi-gamma2) mu2=min(acos((-x12^2-x22^2+x32^2+x42^2+2*x12*x22*cos(atan2(x2y,x2x)-atan2(x1y,x1x)+B1))/(2*x32*x42)),pi-… acos((-x12^2-x22^2+x32^2+x42^2+2*x12*x22*cos(atan2(x2y,x2x)-atan2(x1y,x1x)+B1))/(2*x32*x42))); % CALCULO DE ANGULOS DE LOS ESLABONES DEL MECANISMO EN POSICION INICIAL Ax1=angle(x1x+i*x1y)*180/pi;Ax2=angle(x2x+i*x2y)*180/pi;Ax3=angle(x3x+i*x3y)*180/pi; Ax4=angle(x4x1+i*x4y1)*180/pi;Ax5=angle(x5x1+i*x5y1)*180/pi;Ax6=angle(x6x1+i*x6y1)*180/pi; %VISUALIZACION DE LAS LONGITUDES DE LOS VECTORES EN LAS POSICIONES CORRESPONDIENTES % disp(' LONGITUDES DE LOS ESLABONES DEL MECANISMO EN POSICION INICIAL') % disp(' ') % disp(' x1 x2 x3 x4 x5 x6') % disp([x1,x2,x3,x4,x5,x6]) % disp(' LONGITUDES DE LOS ESLABONES DEL MECANISMO EN POSICION FINAL') % disp(' ') % disp(' x1 x2 x3 x4 x5 x6') % disp([x12,x22,x32,x42,x52,x62]) % DESVIACION ESTANDAR DE LONGITUDES DE LOS ESLABONES DEL MECANISMO EN POSICION INICIAL sdd=std([x1 x12])+std([x2 x22])+std([x3 x32])+std([x4 x42])+std([x5 x52])+std([x6 x62]); 85 %DIBUJO DEL MECANISMO__________________________________________________________ %ATENCION: Para ajustar estos datos de manera que puedan dibujarse sobre la interfaz, se añadió a cada vector de LINE... % la coordenada xO2 o yO2 es decir line(xO2+X,yO2+Y) % DIBUJO DEL MECANISMO EN LA POSICION INICIAL plot(xO2,yO2,'k^','MarkerSize',12);plot(xO2,yO2,'k.','MarkerSize',15);% Dibuja el nuevo par O2 plot(xO4,yO4,'k^','MarkerSize',12);% Dibuja el nuevo par O4 line([xO2, xO2+x2x]', [yO2, yO2+x2y]','Color','b','LineWidth',2.5)%Linea motriz line([xO2+x2x, xO2+x2x+x5x1]', [yO2+x2y, yO2+x2y+x5y1]','Color','r','LineWidth',2.5)%Linea Acoplador x5 line([xO2+x1x, xO2+x1x+x4x1]', [yO2+x1y, yO2+x1y+x4y1]','Color','b','LineWidth',2.5)%Linea seguidor line([xO2+x1x+x4x1, xO2+x1x+x4x1+x6x1]', [yO2+x1y+x4y1, yO2+x1y+x4y1+x6y1]',… 'Color','r','LineWidth',2.5)%Linea Acoplador x6 line([xO2+x2x, xO2+x2x+x3x]', [yO2+x2y, yO2+x2y+x3y]','Color','r','LineWidth',2.5)%Linea Acoplador AB plot(xO2+x2x,yO2+x2y,'ko');plot(xO2+x2x,yO2+x2y,'k.');% Par A plot(xO2+x1x+x4x1,yO2+x1y+x4y1,'ks')% Par B % DIBUJO DEL MECANISMO EN LA POSICION FINAL line([xO2, xO2+x2x2]', [yO2, yO2+x2y2]','Color','b','LineStyle','--')%Linea motriz line([xO2+x2x2, xO2+x2x2+x5x2]', [yO2+x2y2, yO2+x2y2+x5y2]','Color','r','LineStyle','--')%Linea Acoplador x5 line([xO2+x1x, xO2+x1x+x4x2]', [yO2+x1y, yO2+x1y+x4y2]','Color','b','LineStyle','--')%Linea seguidor line([xO2+x1x+x4x2, xO2+x1x+x4x2+x6x2]', [yO2+x1y+x4y2, yO2+x1y+x4y2+x6y2]','Color','r','LineStyle','--')… %Linea Acoplador x6 line([xO2+x2x2, xO2+x2x2+x3x2]', [yO2+x2y2, yO2+x2y2+x3y2]','Color','r','LineStyle','--')%Linea Acoplador AB plot(xO2+x2x2,yO2+x2y2,'ko');plot(xO2+x2x2,yO2+x2y2,'k.')% Par A' plot(xO2+x1x+x4x2,yO2+x1y+x4y2,'ks')% Par B' % AJUSTES DEL GRAFICO % grid%Muestra las lineas de la cuadricula pbaspect([434.00 342.30 342.30])%Define el tamaño relativo de los ejes (x,y,z) del grafico daspect([1 1 1])%Define la escala relativa de las unidades de los datos de los ejes (x,y,z) del grafico %DIBUJO DEL MECANISMO__________________________________________________________ M=[x1,x2,x3,x4,x5,x6,Ax1,Ax2,Ax3,Ax4,Ax5,Ax6,mu1*180/pi,mu2*180/pi,B1*180/pi,sdd,xO2,yO2];%Matriz… necesaria para la funcion "csvwrite" csvwrite('datos\Resultados.dat',M)%Genera el archivo externo "Resultados.dat" que contiene los datos de la… matriz M. return Tabla 5. Archivo de funciones objetivo. Dos_posic_fun.m %ARCHIVO DE FUNCIONES OBJETIVO (Dos_posic_fun.m) %necesario para el programa principal "Dos_posic_EXE.m" function f = Dos_posic_fun(x)%Funcion de MatLab con el vector de funciones objetivo [x0,A1,xP2,yP2,xSD,ySD,xII,yII]=Dos_posic_DAT;%LLamada de datos desde la funcion "Dos_posic_DAT.m" %VARIABLES DE DISENO B1=x(9);%Rotacion del motriz yO4=x(8); %Coordenada y de O4; xO4=x(7); %Coordenada x de O4 yO2=x(6); %Coordenada y de O2 xO2=x(5); %Coordenada x de O2 x3y=x(4); %Componente x de x3 x3x=x(3); %Componente x de x3 x2y=x(2); %Componente y de x2 x2x=x(1); %Componente x de x2 %FUNCIONES OBJETIVO EN TERMINOS DE LAS COMPONENTES DE LOS VECTORES gamma1=acos((-((xO4-xO2)^2+(yO4-yO2)^2)-(x2x^2+x2y^2)+(x3x^2+x3y^2)+((-(xO4-xO2)+(cos(atan2(x2y,x2x))*... sqrt(x2x^2+x2y^2))+(cos(atan2(x3y,x3x))*sqrt(x3x^2+x3y^2)))^2+(-(yO4-yO2)+(sin(atan2(x2y,x2x))*... sqrt(x2x^2+x2y^2))+(sin(atan2(x3y,x3x))*sqrt(x3x^2+x3y^2)))^2)+2*sqrt((xO4-xO2)^2+(yO4-yO2)^2)*... sqrt(x2x^2+x2y^2)*cos(atan2(x2y,x2x)-atan2((yO4-yO2),(xO4-xO2))))/(2*sqrt(x3x^2+x3y^2)*... sqrt((-(xO4-xO2)+(cos(atan2(x2y,x2x))*sqrt(x2x^2+x2y^2))+(cos(atan2(x3y,x3x))*sqrt(x3x^2+x3y^2)))^2+... 86 (-(yO4-yO2)+(sin(atan2(x2y,x2x))*sqrt(x2x^2+x2y^2))+(sin(atan2(x3y,x3x))*sqrt(x3x^2+x3y^2)))^2))); f1= min(gamma1, pi-gamma1); % Funcion objetivo para la posicion inicial en terminos de x1, x2, x3 gamma2=acos((-((xO4-xO2)^2+(yO4-yO2)^2)-(x2x^2+x2y^2)+(x3x^2+x3y^2)+((-(xO4-xO2)+(cos(atan2(x2y,x2x)+B1)*... sqrt(x2x^2+x2y^2))+(cos(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)))^2+(-(yO4-yO2)+(sin(atan2(x2y,x2x)+B1)*... sqrt(x2x^2+x2y^2))+(sin(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)))^2)+2*sqrt((xO4-xO2)^2+(yO4-yO2)^2)*... sqrt(x2x^2+x2y^2)*cos(atan2(x2y,x2x)-atan2((yO4-yO2),(xO4-xO2))+B1))/(2*sqrt(x3x^2+x3y^2)*... sqrt((-(xO4-xO2)+(cos(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2))+(cos(atan2(x3y,x3x)+A1)*... sqrt(x3x^2+x3y^2)))^2+(-(yO4-yO2)+(sin(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2))+(sin(atan2(x3y,x3x)+A1)*... sqrt(x3x^2+x3y^2)))^2))); f2= min(gamma2, pi-gamma2); % Funcion objetivo para la posicion final en terminos de x1, x2, x3, A1, B1 %VECTOR DE OBJETIVOS % f = +(0.5*f1+0.5*f2) minimización. f = -(0.5*f1+0.5*f2); % maximización. Tabla 6. Archivo de restricciones. Dos_posic_Res.m %ARCHIVO DE RESTRICCIONES (Dos_posic_Res.m) %necesario para el programa principal "Dos_posic_EXE.m" function [c,ceq] = Dos_posic_Res(x)%Funcion de MatLab con las Restricciones [x0,A1,xP2,yP2,xSD,ySD,xII,yII]=Dos_posic_DAT;%LLamada de datos desde la funcion "Dos_posic_DAT.m" %VARIABLES DE DISENO B1=x(9);%Rotacion del motriz yO4=x(8); %Coordenada y de O4; xO4=x(7); %Coordenada x de O4 yO2=x(6); %Coordenada y de O2 xO2=x(5); %Coordenada x de O2 x3y=x(4); %Componente x de x3 x3x=x(3); %Componente x de x3 x2y=x(2); %Componente y de x2 x2x=x(1); %Componente x de x2 % c = []; %Se usa en caso que no haya restricciones de tipo desigualdad c(1) = sqrt(x2x^2+x2y^2) - 1 *sqrt((xO4-xO2)^2+(yO4-yO2)^2); %Longitud del motriz debe menor o igual a n veces la del bastidor c(2) = sqrt(x3x^2+x3y^2) - 1 *sqrt((xO4-xO2)^2+(yO4-yO2)^2); %Longitud del acoplador debe ser menor o igual a n veces la del bastidor c(3) = -sqrt(x3x^2+x3y^2) + 1 *sqrt((xO4-xO2)^2+(yO4-yO2)^2); %Longitud del acoplador debe ser mayor o igual a n veces la del bastidor c(4) = -sqrt((xO4-xO2)^2+(yO4-yO2)^2) + 0.5 *(abs(ySD-yII)+abs(xSD-xII))/2; %Longitud del bastidor debe ser mayor a la media del alto y ancho de area para el bastidor c(5) = xO2-xSD;%La coordenada x de O2 debe ser menor o igual a la coordenada xSD c(6) = -xO2+xII;%La coordenada x de O2 debe ser mayor o igual a la coordenada xII c(7) = yO2-ySD;%La coordenada y de O2 debe ser menor o igual a la coordenada ySD c(8) = -yO2+yII;%La coordenada y de O2 debe ser mayor o igual a la coordenada yII c(9) = xO4-xSD;%La coordenada x de O4 debe ser menor o igual a la coordenada xSD c(10) = -xO4+xII;%La coordenada x de O4 debe ser mayor o igual a la coordenada xII c(11) = yO4-ySD;%La coordenada y de O4 debe ser menor o igual a la coordenada ySD c(12) = -yO4+yII;%La coordenada y de O4 debe ser mayor o igual a la coordenada yII c(13) = -B1+5*pi/180;% % Se busca que B1 sea mayor que n grados c(14) = B1-90*pi/180;% Se busca que B1 sea menor que 90 grados c(15) = 30*pi/180-min(acos((-((xO4-xO2)^2+(yO4-yO2)^2)-(x2x^2+x2y^2)+(x3x^2+x3y^2)+((-(xO4-xO2)+... (cos(atan2(x2y,x2x))*sqrt(x2x^2+x2y^2))+(cos(atan2(x3y,x3x))*sqrt(x3x^2+x3y^2)))^2+(-(yO4-yO2)+... (sin(atan2(x2y,x2x))*sqrt(x2x^2+x2y^2))+(sin(atan2(x3y,x3x))*sqrt(x3x^2+x3y^2)))^2)+2*... sqrt((xO4-xO2)^2+(yO4-yO2)^2)*sqrt(x2x^2+x2y^2)*cos(atan2(x2y,x2x)-atan2((yO4-yO2),(xO4-xO2))))/... (2*sqrt(x3x^2+x3y^2)*sqrt((-(xO4-xO2)+(cos(atan2(x2y,x2x))*sqrt(x2x^2+x2y^2))+... 87 (cos(atan2(x3y,x3x))*sqrt(x3x^2+x3y^2)))^2+(-(yO4-yO2)+(sin(atan2(x2y,x2x))*sqrt(x2x^2+x2y^2))+... (sin(atan2(x3y,x3x))*sqrt(x3x^2+x3y^2)))^2))),pi-acos((-((xO4-xO2)^2+(yO4-yO2)^2)-(x2x^2+x2y^2)+... (x3x^2+x3y^2)+((-(xO4-xO2)+(cos(atan2(x2y,x2x))*sqrt(x2x^2+x2y^2))+(cos(atan2(x3y,x3x))*... sqrt(x3x^2+x3y^2)))^2+(-(yO4-yO2)+(sin(atan2(x2y,x2x))*sqrt(x2x^2+x2y^2))+(sin(atan2(x3y,x3x))*... sqrt(x3x^2+x3y^2)))^2)+2*sqrt((xO4-xO2)^2+(yO4-yO2)^2)*sqrt(x2x^2+x2y^2)*cos(atan2(x2y,x2x)-... atan2((yO4-yO2),(xO4-xO2))))/(2*sqrt(x3x^2+x3y^2)*sqrt((-(xO4-xO2)+(cos(atan2(x2y,x2x))*... sqrt(x2x^2+x2y^2))+(cos(atan2(x3y,x3x))*sqrt(x3x^2+x3y^2)))^2+(-(yO4-yO2)+(sin(atan2(x2y,x2x))*... sqrt(x2x^2+x2y^2))+(sin(atan2(x3y,x3x))*sqrt(x3x^2+x3y^2)))^2)))); % Se busca que el mu1 sea mayor o igual a 30 grados c(16) = 30*pi/180-min(acos((-((xO4-xO2)^2+(yO4-yO2)^2)-(x2x^2+x2y^2)+(x3x^2+x3y^2)+((-(xO4-xO2)+... (cos(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2))+(cos(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)))^2+... (-(yO4-yO2)+(sin(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2))+(sin(atan2(x3y,x3x)+A1)*... sqrt(x3x^2+x3y^2)))^2)+2*sqrt((xO4-xO2)^2+(yO4-yO2)^2)*sqrt(x2x^2+x2y^2)*cos(atan2(x2y,x2x)-... atan2((yO4-yO2),(xO4-xO2))+B1))/(2*sqrt(x3x^2+x3y^2)*sqrt((-(xO4-xO2)+(cos(atan2(x2y,x2x)+B1)*... sqrt(x2x^2+x2y^2))+(cos(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)))^2+(-(yO4-yO2)+... (sin(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2))+(sin(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)))^2))),... pi-acos((-((xO4-xO2)^2+(yO4-yO2)^2)-(x2x^2+x2y^2)+(x3x^2+x3y^2)+((-(xO4-xO2)+(cos(atan2(x2y,x2x)+... B1)*sqrt(x2x^2+x2y^2))+(cos(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)))^2+(-(yO4-yO2)+... (sin(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2))+(sin(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)))^2)+... 2*sqrt((xO4-xO2)^2+(yO4-yO2)^2)*sqrt(x2x^2+x2y^2)*cos(atan2(x2y,x2x)-atan2((yO4-yO2),(xO4-xO2))+... B1))/(2*sqrt(x3x^2+x3y^2)*sqrt((-(xO4-xO2)+(cos(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2))+... cos(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)))^2+(-(yO4-yO2)+(sin(atan2(x2y,x2x)+B1)*sqrt(x2x^2+... x2y^2))+(sin(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)))^2)))); % Se busca que el mu2 sea mayor o igual a 30 grados % ceq = []; % Se usa en caso que no haya restricciones de tipo igualdad ceq(1) = (-(xO4-xO2)+x2x+x3x)^2+(-(yO4-yO2)+x2y+x3y)^2-(-(xO4-xO2)+(cos(atan2(x2y,x2x)+B1)*sqrt(x2x^2+... x2y^2))+(cos(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)))^2-(-(yO4-yO2)+(sin(atan2(x2y,x2x)+B1)*... sqrt(x2x^2+x2y^2))+(sin(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)))^2; %Se busca que x4 tenga la misma longitud tanto en la posicion inicial como en la final ceq(2) = (-xO4+(xO4-xO2)-x2x-x3x)^2+(-yO4+(yO4-yO2)-x2y-x3y)^2-((xP2-xO4)+(xO4-xO2)-... cos(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2)-cos(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2))^2-((yP2-yO4)+... (yO4-yO2)-sin(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2)-sin(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2))^2; %Se busca que x6 tenga la misma longitud tanto en la posicion inicial como en la final ceq(3) = atan2((-yO4+(yO4-yO2)-x2y-x3y),(-xO4+(xO4-xO2)-x2x-x3x))+A1-atan2(((yP2-yO4)+(yO4-yO2)-... sin(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2)-sin(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2)),((xP2-xO4)+... (xO4-xO2)-cos(atan2(x2y,x2x)+B1)*sqrt(x2x^2+x2y^2)-cos(atan2(x3y,x3x)+A1)*sqrt(x3x^2+x3y^2))); %Se busca que (el angulo de x6 para 1a posicion inicial + A1) sea igual al angulo de x6 para 1a posicion final 88