Sunteți pe pagina 1din 100

2

UNIVERSIDAD DE LOS ANDES


FACULTAD DE INGENIERÍA
MAESTRÍA Y ESPECIALIZACIÓN EN MATEMÁTICA APLICADA A LA INGENIERÍA

OPTIMIZACIÓN DEL ESPACIO DE TRABAJO DIESTRO DE ROBOT


PARALELOS PLANOS UTILIZANDO ALGORITMOS EVOLUTIVOS

LICDO. ANTONIO JOSE RAMIREZ MATHEUS

REQUISITO ESPECIAL DE GRADO


PARA OPTAR AL TITULO DE
MAGÍSTER SCIENTIAE EN MATEMÁTICA APLICADA A LA INGENIERÍA
TUTOR:DR.ING. MIGUEL ANGEL DIAZ RODRIGUEZ

MERIDA-VENEZUELA
2017
2
Agradecimientos

Primero que todo quiero agradecer a mi tutor profesor Miguel Diaz por haberme dado
3 materias, además por haber tenido un amable trato y paciencia durante el proceso de
toda esta tesis. También quiero agradecer al jurado de esta tesis. Quiero agradecer también
al profesor Jose Rujano. Y también a otros profesores que aunque no son nombrados
me dieron algunas materias que me hicieron avanzar en la maestrı́a. Por último quiero
agradecer al amable trato que me dio la secretaria del postgrado.

3
4
Resumen

Los robot paralelos tienen como principal caracterı́stica su estructura que consiste en
varias cadena cinemáticas cerradas. Este tipo de estructura permite una mejor distribu-
ción de las cargas soportadas. Ası́, los robots paralelos presumen unas caracterı́sticas muy
ventajosas en cuanto a la relación entre: peso del robot y el peso de la carga ubicada en
el elemento terminal, y tienen mejor velocidad, rigidez y precisión. Como principal con-
trapartida, los robots paralelos tienen un espacio de trabajo muy reducido con respecto a
los robots serie. Una de las principales necesidades de la industria es que los robot para-
lelos tenga máxima área alcanzable (espacio de trabajo) pero que además tenga agilidad
(llamada en esta tesis dexteridad).
Muchas de las tareas de las industria pueden ser realizadas por robots planos, donde el
movimiento de cada uno de los puntos puede ser visto en un mismo plano de proyección.
En este sentido, el robot plano de 2 Grados de Libertad (GdL) y de 5 eslabones unidos por
pares de revoluta (5R) representa unos de los más estudiados. En este trabajo, se busca
diseñar este tipo de robot de forma tal que su área alcanzable sea la máxima posible y
además una optima dexteridad. Para ello, se toma ventaja de la técnica de optimización
llamada Algoritmos Genéticos que permite determinar máximos globales sin quedar la
solución atrapada en un mı́nimo local.
Para ello se inicia con una introducción de la estructura de la tesis y sus objetivos.
Luego se presenta una breve introducción del marco teórico. También se desarrollan las
ecuaciones cinemáticas a utilizar en los algoritmos evolutivos (Algoritmos Genéticos AG).
Se desarrollan dos ejemplos de aplicación donde se optimiza el área de trabajo alcanzable
y el área diestra. Como aplicación se selecciona el robot de 2 (GdL) 5R para que realice
tareas como mesa de corte en el plano x-y. Se busca que el robot tenga mayor espacio de
trabajo con cierta dexteridad.
Debido a que el método de AG depende de un conjunto de parámetros, se ha hecho
un estudio exhaustivo de ellos y como resultado se obtiene el conjunto de parámetros
que logran que el algoritmo converja a la mejor solución. Primero se aplico el Algoritmo
Genético para optimizar el espacio de área alcanzable, y luego se aplicara nuevamente el
algoritmo para optimizar el área diestra.
Finalmente, se presenta un camino a seguir para encontrar los valores del Algoritmo
Genético para su convergencia al máximo de área alcanzable y máximo de dexteridad
buscando un termino medio entre las dos, es decir que el área de dexteridad sea un área
apreciable.

5
6
Índice general

Agradecimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1. Introducción 11
1.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2. Algunas diferencias entre esta tesis y los antecedentes . . . . . . . . . . . . 15
1.3. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4. Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5. Limitaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6.1. Objetivos Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6.2. Objetivos Especı́ficos . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.7. Metodologı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.8. Estructura de la Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2. Marco Teórico 19
2.1. Algoritmos Genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2. ¿Por qué utilizar Algoritmos Genéticos en la optimización? . . . . . . . . . 20
2.3. Definición de Algoritmo Genético . . . . . . . . . . . . . . . . . . . . . . . 21
2.4. Terminologı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.1. Cromosoma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.2. Genotipo y Fenotipo . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.3. Fitness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.4. Población . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.5. Operadores genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5. Funcionamiento de una Algoritmo Genético . . . . . . . . . . . . . . . . . 27
2.5.1. Pasos de un Algoritmo Genético Simple . . . . . . . . . . . . . . . . 27
2.6. Un Ejemplo de Implementación . . . . . . . . . . . . . . . . . . . . . . . . 28
2.7. Cinemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.7.1. Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7.2. Robot Paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7.3. Grados de Libertad . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7.4. Grados de libertad en mecanismos planos . . . . . . . . . . . . . . . 30
2.7.5. Espacio de trabajo Alcanzable . . . . . . . . . . . . . . . . . . . . . 31
2.7.6. Jacobiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

7
8 ÍNDICE GENERAL

2.7.7. Espacio de trabajo Diestro . . . . . . . . . . . . . . . . . . . . . . . 32


2.7.8. Robot paralelo plano . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3. Ecuaciones Cinemáticas 33
3.1. Robot paralelo plano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2. Ecuaciones de Cinemática . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.1. Función trigonométrica de un ángulo cualquiera . . . . . . . . . . . 34
3.3. Jacobiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4. Casos de Estudio 41
4.1. Primer caso de estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2. Área Alcanzable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3. Mallado para área alcanzable . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.4. Discretización del modelo para determinar el Área Alcanzable . . . . . . . 46
4.5. Ajuste del Algoritmo Genético para área alcanzable . . . . . . . . . . . . . 48
4.5.1. Estudio de PC para área alcanzable . . . . . . . . . . . . . . . . . . 48
4.5.2. Estudio de Porcentaje de Mutación para área alcanzable . . . . . . 49
4.5.3. Estudio de Longitud de Código Binario (SL) para área alcanzable . 49
4.5.4. Estudio del Tamaño de la población y de generaciones (iter) para
área alcanzable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.6. Optimización del Área Alcanzable . . . . . . . . . . . . . . . . . . . . . . . 50
4.7. Segundo caso de estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.8. Estudio de Dexteridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.8.1. Mallado de dexteridad . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.8.2. Discretización del modelo para determinar el Área de Dexteridad . 55
4.9. Ajuste del Algoritmo Genético para Dexteridad . . . . . . . . . . . . . . . 56
4.9.1. Estudio de PC para Dexteridad . . . . . . . . . . . . . . . . . . . . 56
4.9.2. Estudio de Porcentaje de Mutación para Dexteridad . . . . . . . . . 57
4.9.3. Estudio de Longitud de Código Binario (SL) para Dexteridad . . . 57
4.9.4. Estudio tamaño de la población y de generaciones(iter) para Dex-
teridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.10. Optimización del Área de Dexteridad primer caso de estudio . . . . . . . . 60
4.11. Optimización del Área de Dexteridad del segundo caso de estudio . . . . . 61
4.12. Algunas aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.13. Robot paralelo en estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.14. Comprobación de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.15. Discusión de algunos resultados . . . . . . . . . . . . . . . . . . . . . . . . 69

5. Conclusiones 73
5.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.2. Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

A. Solución algebraica por reducción a polinomios 75


ÍNDICE GENERAL 9

B. Código de AG 77
B.1. Algoritmo Genético (AG) . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
B.2. Encoding (Codificación) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
B.3. Decoding (Descodificación) . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
B.4. Selection (Selección) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
B.5. Crossover (Cruce) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
B.6. Mutation (Mutación) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

C. Algoritmo para Ejecución de la Optimización 83


C.1. MainGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
C.2. Funname (evaluación en la función objetivo) . . . . . . . . . . . . . . . . . 85
C.3. Main workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
C.4. Workspace5R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
C.5. Jacob5R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
C.6. Result (resultado) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

Bibliografı́a 97
10 ÍNDICE GENERAL
Capı́tulo 1

Introducción

En pocos años, la robótica ha pasado de ser una mera imaginación de los seres humanos
a una realidad del mundo actual y del mercado productivo. En los primeros años era algo
incierto su futuro llegando a la era actual a una realidad imprescindible de las industrias.
Dentro de los tipos de robot están los robot paralelos que consisten en un sistema
mecánico donde dos plataformas están conectadas por al menos dos cadenas cinemáticas
abiertas. De esta forma, las cadenas cinemáticas abiertas o piernas proporcionan movi-
miento relativo entre la plataforma móvil y la plataforma base fija. Las piernas dan una
mayor rigidez al robot, a expensas de limitar su espacio de trabajo. Haciendo un sı́mil con
el cuerpo humano, un robot serial o cadena cinemática abierta puede ser vista como un
solo brazo. El brazo puede realizar diversas tareas; mas sin embargo, cuando se requiere
de mayor fuerza o de precisión el ser humano emplea los dos brazos. Cuando se utilizan
los dos brazos se está en presencia de un robot paralelo, donde la base es el torso y la pla-
taforma móvil es el elemento que esta siendo sujetado con las manos. Siguiendo este sı́mil
puede entenderse que el robot paralelo gana mayor capacidad de carga, mayor precisión
pero pierde capacidad de alcance en el movimiento de las brazos (espacio de trabajo o
workspace). Debido las ventajas que presenta (mayor rigidez, precisión), los robot parale-
los se han convertido en una alternativa indispensable para el diseño de robots tanto en
el mundo académico como en la industria (Pierrot et al., 2009).
A la par del desarrollo de la robótica y los robot paralelos, ha habido un rápido y
creciente desarrollo en la aplicación de algoritmos y procesos por computadora en los
siguientes campos de investigación: 1) la teorı́a mecanismo, 2) análisis de la movilidad,
3) sı́ntesis dimensional, 4) la cinemática y el modelo dinámico, y 5) la optimización del
diseño. La optimización cinemática del mecanismo consiste en determinar las dimensiones
que permitan obtener un mejor desempeño del robot, como por ejemplo, conseguir un
robot cuyas dimensiones conlleven a obtener un espacio de trabajo máximo. Este es el
problema abordado en este trabajo que se explica en el siguiente párrafo.
Se tiene de partida un robot plano de 2 grados de libertad de 5 barras unidas
con juntas de revoluta (5R), se requiere para una aplicación en particular
que el diseño del robot permita abarcar el mayor espacio de trabajo y que
además presente un buen desempeño cinemático. Para resolver la tarea se va
a tomar ventaja de técnicas de optimización basadas en algoritmos evolutivos

11
12 CAPÍTULO 1. INTRODUCCIÓN

(Algoritmos Genéticos, AG), ya que estas técnicas permiten localizar máximos


globales y ası́ evitar conseguir soluciones optimas locales.

Dado que el AG es un método que depende de la selección de un conjunto de paráme-


tros (parámetros del algoritmo tales como porcentaje de crossover, mutación, longitud
del código binario, por mencionar solo algunos), el aporte de este trabajo es encontrar el
conjunto de parámetros que permitan obtener el máximo espacio de trabajo de un robot
paralelo plano de 2 grados de libertad.
Antes de continuar con el desarrollo del trabajo se deben mencionar algunas investi-
gaciones previas importantes.

1.1. Antecedentes
Merlet (1997) presenta un método para el diseño optimo de un manipulador paralelo de
tipo plataforma Gough. Este tipo de manipulador es bien conocido y el primer prototipo
fue propuesto por Gough de allı́ el nombre. Las principales caracterı́stica del robot son su
alta precisión y alta carga nominal. Se utiliza muy a menudo como sistema de simulación
de vuelo. Esta arquitectura muy inusual es difı́cil lograr un diseño ”óptimo”, es decir, la
geometrı́a del Robot que resulte ser la mejor con respecto a algún criterio es una tarea
difı́cil. En la metodologı́a de diseño propuesta se propone 1) las especificaciones de diseño
incluyen un requisito el espacio de trabajo 2)Primero se determina todas las posibles
geometrı́as del robot, y 3) de entre todas estas geometrı́as se realiza un análisis numérico
con el objeto de determinar el robot que mejor cumple las especificaciones de diseño (por
lo tanto, la metodologı́a es espacio de trabajo orientado). Este trabajo ayudará a la tesis
para desarrollar la estrategia de optimizar el espacio de trabajo.
Merlet (2006), presenta algunas de las definiciones importantes que se deben tener
presente en el diseño de robot paralelos como lo son: matriz Jacobiana, manipulabilidad,
número de condición de la matriz jacobiana y precisión de robot paralelos. El autor mues-
tra como la metodologı́a de diseño optimo tiene que considerar los indices cinemáticos.
En el trabajo se revisan también como estos indices son apropiados para robot paralelos.
Esto ayudará a la tesis hacer una revisión de distintos indices de cinemática.
Liu et al. (2006) establece que el análisis y el diseño óptimo son dos cuestiones impor-
tantes en el desarrollo de un mecanismo paralelo. El análisis de la cinemática y espacio de
trabajo son dos problemas básicos para definir y evaluar la ejecución de un mecanismo.
Dos problemas involucradas en el diseño optimo de un mecanismo son: evaluación del
desempeño y la sı́ntesis dimensional. En el proceso de diseño optimo podrı́an participar
varios criterios de rendimiento para un propósito de diseño tales como espacio de trabajo,
singularidades, destreza e indice de acondicionamiento. Tales mecanismo con estructura
simétrica han atraı́do a muchos investigadores, quienes han estudiado su análisis de po-
sición, espacio de trabajo, los modos de montaje, la singularidad y diseño cinemático.
Este trabajo permite establecer los distintos criterios de rendimientos que son usados en
el diseño de robot paralelos.
Laribi et al. (2007) realiza un análisis dimensional de un robot paralelo Delta para
un prescrito espacio de trabajo donde se muestra la determinación del espacio de trabajo
1.1. ANTECEDENTES 13

y la formulación del problema de optimización se hace usando técnicas de Algoritmos


Genéticos. En esta tesis también se usaran Algoritmos Genéticos.
Wu et al. (2007) menciona que los mecanismos paralelos son capaces de ser muy rápi-
dos y precisos movimientos, además poseen caracterı́sticas de alta rigidez a lo largo del
espacio de trabajo, tiene menor inercia y pueden manipular cargas mas pesadas que su
contraparte de series. En el trabajo estudian mecanismos planos de 2 DOF existentes
son bien conocidos de 5 barras con actuadores prismáticos o actuadores de revoluta. La
metodologı́a del diseño cinemático es una de las partes de la teorı́a de diseño cinemático
para mecanismos paralelos. El diseño optimo puede basarse en criterios de evaluación
que implica rigidez, destreza e indice de acondicionamiento global. El trabajo describe
un mecanismo paralelo plano con 2-DOF traslación la cual difiere del convencional meca-
nismo de 5 barras de estructura paralelograma usada en cada cadena. Se analizan para
obtener un diseño cinemático optimo minimizando un indice de acondicionamiento global
y los resultados dan las longitudes de diseño optimo. El trabajo utiliza optimizacón para
minimizar el indice de acondicionamiento global para encontrar las longitudes de diseño
optimo que es algo parecido a lo que se quiere desarrollar en esta tesis, aunque esta tesis
se maximiza el indice de dexteridad.
Otra investigación relevante que se debe citar es la de Lou et al. (2008) donde se
expone como los manipuladores son ampliamente usados como candidatos ideales para
su uso en la industria de fabricación por su potenciales superiores sobre su homologo
de series. Sin embargo, tiene relativamente pequeño espacio de trabajo. Entre todas las
medidas de cinemática el espacio de trabajo es uno de los más importantes indices de un
manipulador. El articulo expone como maximizar una efectivo espacio de trabajo donde
se utiliza como indice la destreza para medir la eficacia del espacio de trabajo. El trabajo
muestra como se usan técnicas de búsqueda directa para la optimización, el cual es un
claro ejemplo de lo que se intenta hacer en esta tesis.
Stan et al. (2008) explica como la mayorı́a de estructuras mecánicas se basan en ci-
nemática de serie pero los mecanismos paralelos traen muchos beneficios potenciales como
maquinas de herramientas pero también causan muchos inconvenientes en el proceso de
diseño y mayores esfuerzos por el control numérico y calibración. Las maquinas cinemáti-
cas paralelas parecen capaces de responder a las necesidades de las industria en términos
de su automatización. Su estructura cinemática cerrada les permite obtener alta rigidez y
realizar movimientos de alta velocidad. Un inconveniente con sus contrapartes de serie es
su reducido espacio de trabajo. En teorı́a la cinemática paralela ofrece por ejemplo mayor
rendimiento de aceleración que las estructuras de serie. Para la optimización de maqui-
nas cinemáticas paralelas es necesario un enfoque orientado a la aplicación. El algoritmo
computacional presentado proporciona la base para una optimización multiobjectivos ge-
neral de varias estructuras cinemáticas. Se propone un Algoritmo Genético como principal
herramienta para la optimización. El indice de optimización del espacio de trabajo es de-
finido como la medida para evaluar el rendimiento de maquinas paralelas cinemáticas de
2 grados de libertad. Este trabajo presenta la optimización Algoritmos Genéticos de una
manera similar al que se presenta en esta tesis.
Martı́nez et al. (2010) trabaja en el diseño optimo de un robot paralelo con configu-
ración Delta donde se ilustra los cálculos de cinemática inversa y la obtención del espacio
14 CAPÍTULO 1. INTRODUCCIÓN

de trabajo de un robot paralelo tipo delta incluyendo un análisis de interferencia de los


eslabones. También presenta el procedimiento para el calculo de dimensiones optimas del
robot. Para la optimización usan Algoritmos Genéticos, lo cual es el método de optimi-
zación que se usará en esta tesis.
Altuzarra et al. (2010) desarrollan el análisis de indicadores de cinemática para el
diseño de manipuladores paralelos. El trabajo expone los distintos conceptos de indica-
dores cinemáticos usados hasta el momento, las diversas alternativas de cálculo, y las
caracterı́sticas, virtudes o defectos atribuidas a los mismos. También se presenta la cuali-
dad del mecanismo que indica lo adecuado de su movimiento y se le denomina destreza.
Donde se define, como la facilidad del elemento terminal para moverse y aplicar fuerzas
en cualquier dirección. Desde el punto de vista exclusivamente cinemático existen en la
literatura varios indicadores de rendimiento para medir la destreza. Este trabajo presenta
las diferentes formas en que se ha abordado en la literatura la cuantificación de la destreza
tratando de clarificar el alcance de los conceptos usados. Este articulo puede ayudar al
planteamiento del problema de como hallar el espacio diestro en esta tesis.
Peña Cortes et al. (2011) desarrolla la optimización dimensional de un robot parale-
lo delta basado en el menor consumo de energı́a. El interés mundial en las tecnologı́as
verdes crece continuamente. Una de las principales razones de este incremento es la con-
cientización de las personas sobre el buen trato del medio ambiente. La robótica y la
automatización no se han quedado atrás en el desarrollo de productos que contribuyan a
este objetivo. Utiliza como algoritmo de optimización Algoritmos Genéticos. Aunque en
esta tesis no es de interés el menor consumo de energı́a dicho trabajo permite ver como
se usan los Algoritmos Genéticos en problemas de robot paralelos.
Huang (2011) en el diseño de un robot ası́ como también en el control de la coordina-
ción, el espacio de trabajo y las singularidades son dos propiedades geométricas que deben
considerarse en el diseño de robots paralelos. El espacio de trabajo es la región en la cual
el efector final puede alcanzar con al menos una orientación, mientras las singularidades
son configuraciones geométricas especiales inherente al espacio de trabajo en el que el
manipulador puede perder-si se acciona en serie, o ganar- si se acciona en paralelo uno o
más grados de libertad. Tanto el espacio de trabajo como las singularidades y las propie-
dades relacionadas han sido individual o conjuntamente objetivos primordiales en muchos
estudios de diseño optimo de robot paralelos. El trabajo estudia sobre la optimización de
diseño sobre la clase de robots paralelos planares. La sı́ntesis de dimención se realiza a
través de optimización, a través de dos propiedades geométricas, el espacio de trabajo y
la destreza del robot que también debe ser considerada. El indice propuesto, considerado
como una representación más adecuado es en general la destreza del robot, se adopta
como una métrica para un diseño optimo en este estudio. Los resultados son mostrados
por simulaciones con ayuda de visualización gráfica. El trabajo emplea la destreza como
un indice de optimización lo cual también se usará en esta tesis.
Por último, se debe mencionar Bounab (2016) donde se trabaja en la optimización
del rendimiento Cineto-Estático basado en sı́ntesis dimensional de mecanismo de robot
paralelos Delta. Se presenta un enfoque de diseño para resolver el problema de sı́ntesis
dimensional del manipulador paralelo Delta. Se usa para la optimización Matlab, el cual
es el mismo programa que se usará en esta tesis para desarrollar los códigos necesarios
1.2. ALGUNAS DIFERENCIAS ENTRE ESTA TESIS Y LOS ANTECEDENTES 15

del algoritmo de optimización AG propuesto en esta tesis.

1.2. Algunas diferencias entre esta tesis y los antece-


dentes
1. El criterio de rendimiento será la destreza.

2. Se utilizará para la optimización Algoritmos Genéticos.

3. Se maximiza el área alcanzable y área diestra.

4. Se hace un estudio exhaustivo de los operadores y parámetros del Algoritmo Genéti-


co. Lo cual se muestra en la tesis.

5. Se maximiza el área diestra tratando de tener un área apreciable.

6. La aplicaciones puede ser para una mesa de corte.

7. Se plantearon 2 técnicas (Montecarlo y Nube de Puntos) para estimar el área alcan-


zable y el área de dexteridad, y se evaluó su precisión y tiempo de computo.

1.3. Planteamiento del problema


Se quiere diseñar un robot paralelo cuyas dimensiones geométricas hagan máximo
su espacio alcanzable y su espacio de dexteridad (espacio diestro). Para la optimización
se emplean Algoritmos Genéticos que suelen ser ventajosos para este tipo de problema
donde no se tiene una ecuación como función objetivo que permita obtener la derivada
de la función. Se quiere que el algoritmo sea rápido y para ello hacer un mallado del
espacio de trabajo que satisfaga este objetivo. Además, se deben ajustar los parámetros
del Algoritmo Genético que hagan converger mejor a la solución del máximo.

1.4. Justificación
Se realiza esta investigación porque el diseño de un robot requiere de técnicas de
optimización para determinar las dimensiones geométricas del mecanismo que cumplan
con los requisitos para la cual va ser diseñada. Uno de los criterios de diseño es optimizar
el espacio de trabajo diestro de un robot el cual se define como el conjunto de posiciones
y orientaciones en el espacio que pueden ser alcanzados por el robot con cierto nivel de
dexteridad. Este problema de optimizar es complejo ya que la función objetivo no se puede
calcular el gradiente de una manera explicita.
Lo que se busca en este trabajo es emplear algoritmos que encuentre el máximo global
y que no dependa del gradiente de la función objetivo lo cual justifica el uso de algoritmos
evolutivos que ayudan a solventar este problema.
16 CAPÍTULO 1. INTRODUCCIÓN

1.5. Limitaciones
Esta tesis se limitará al tema del diseño optimo de robot paralelos usando únicamente
como criterio el espacio diestro ya que cabe mencionar que existen otros criterios que
no serán abarcados en esta tesis. Luego la técnica a desarrollar se basan en algoritmos
evolutivos tales como Algoritmos Genéticos.

1.6. Objetivos
1.6.1. Objetivos Principal
Desarrollar una estrategia de optimización del espacio diestro de robot paralelos ba-
sados en técnicas en Algoritmos Genéticos.

1.6.2. Objetivos Especı́ficos


1. Estudiar las técnicas de optimización por Algoritmos Genéticos.
2. Desarrollar las ecuaciones de cinemáticas de robot paralelos.
3. Desarrollar la ecuación (o código) de la función aptitud del Algoritmo Genético.
4. Implementar las técnicas de optimización haciendo un estudio de los distintos paráme-
tros y métodos, tales como método de selección para los individuos a ser cruzados,
método de cruzamientos, de mutación y otros métodos, además de los distintos por-
centajes a usar para hacer mas adecuados el funcionamiento del Algoritmo Genético.
5. Desarrollar al menos 2 ejemplos de aplicaciones.

1.7. Metodologı́a
1. El proyecto se inicia estudiando en que consiste los Algoritmos Genéticos como se
soluciona un problema de optimización con restricciones lineales y no lineales.
2. A partir de los conceptos de cinemática se desarrollaran las ecuaciones que permiten
estudiar el comportamiento cinemático del robot de posición.
3. Establecer una técnica de estimar el espacio de trabajo diestro, se propone técnicas
de Montecarlo y Nube de Puntos.
4. Desarrollar el Algoritmo Genético.
5. Realizar el código de la función objetivo de manera que pueda ser usado por Algo-
ritmos Genéticos.
6. Ajustar los parámetros del Algoritmo Genético para distintos métodos de selección,
cruce, mutación y otros.
1.8. ESTRUCTURA DE LA TESIS 17

7. Problema de un robot plano.

8. Aplicaciones a 2 casos de estudio.

9. Resultados y conclusiones.

1.8. Estructura de la Tesis


En el capitulo 1 se presenta la introducción a la tesis y su finalidad. En el capitulo
2 se presenta la parte teórica de los temas que se tratan en la tesis. En el capitulo 3
se desarrollan las ecuaciones de cinemáticas utilizadas en los algoritmo computacionales.
En el capitulo 4 se presentan 2 casos de estudio de aplicaciones para máxima área al-
canzable y máxima área de dexteridad, que se trabajaran con Algoritmos Genéticos (un
programa hecho con Matlab ver apéndice). Finalmente, se presentan las conclusiones y
recomendaciones surgidas del trabajo hecho.
18 CAPÍTULO 1. INTRODUCCIÓN
Capı́tulo 2

Marco Teórico

2.1. Algoritmos Genéticos


Los primeros hechos relacionados con los Algoritmos Genéticos (en adelante AGs)
surgieron en 1932 cuando Cannon interpreta la evolución natural como un proceso de
aprendizaje muy similar al proceso mediante el cual una persona aprende por ensayo y
error. También en 1950 Turing reconoce una conexión entre la evolución y el aprendi-
zaje de una máquina, pero los primeros intentos serios de relacionar la informática y la
evolución surgieron a principios de los años sesenta cuando varios biólogos comenzaron
a experimentar con simulaciones de sistemas genéticos; esto es, modelos computacionales
que imitan la evolución biológica. El entorno en que viven los animales se representa en-
tonces en el programa por una función que asigna a cada animal su capacidad de llegar a
ser adulto y reproducirse (Iglesias Otero, 2002).
Los investigadores en computación observaron que esta clase de algoritmos podı́a uti-
lizarse también para optimizar funciones. De hecho, aunque las primeras descripciones
técnicas y definiciones de adaptación provienen de la biologı́a, ya en este contexto, adap-
tación designa cualquier proceso por el cual una estructura va modificándose de forma
progresiva para lograr el comportamiento óptimo en su entorno, es decir, los procesos
adaptativos son básicamente procesos de optimización, pero es difı́cil aglutinarlos y uni-
ficar su estudio porque las estructuras modificables son complejas y su comportamiento
es incierto.
Los AGs están inspirados en la evolución y la mayorı́a de los organismos evolucionan
a través de dos procesos primarios: la selección natural y la reproducción.
Mediante la selección se determina qué miembros de una población sobreviven para
reproducirse, y mediante la reproducción se asegura la mezcla y recombinación de los
genes de la descendencia.
Esta mezcla del material genético permite que las especies evolucionen mucho más
rápidamente de lo que lo harı́an si tuvieran sólo la copia de los genes de uno de sus
progenitores. El principio fundamental de la selección natural fue formulado por Darwin,
anteriormente al descubrimiento de los mecanismos genéticos, al observar que una diferen-
cia entre el crecimiento de una población y los recursos disponibles llevarı́a a situaciones
de competición y adaptación. Desconocedor en aquel momento de los principios básicos

19
20 CAPÍTULO 2. MARCO TEÓRICO

de la herencia mendeliana, Darwin conjeturó la fusión de las cualidades de los padres


mezclándose en los organismos de sus descendientes.
Las cuestiones, relacionadas con los mecanismos hereditarios, a las que la teorı́a de
Darwin no podı́a responder han sido contestadas con el desarrollo de la Genética: Mendel
descubrió los principios básicos de la transferencia de factores hereditarios de padres a
hijos. Se estableció que los cromosomas son los principales portadores de la información
hereditaria y que los genes, que representan los factores hereditarios, están alineados en
cromosomas. El origen de las variaciones en la herencia se explican por la existencia
de ciertos cambios (mutaciones) en el texto genético, pudiendo sufrir mutación todos
los organismos de forma aleatoria. Pero además, en aquellos individuos que se reproducen
sexualmente se puede considerar el proceso por el que las caracterı́sticas de los organismos
se mezclan al combinar su ADN (cruce). Este proceso es la fuente de inspiración de los
AGs y, en consecuencia, su idea básica es imitar lo que hace la naturaleza. Por esta razón
estos algoritmos utilizan un vocabulario tomado de la Genética. Se habla de individuos
(genotipos o estructuras) en una población y a menudo estos individuos se denominan
cadenas o cromosomas.
El comienzo del desarrollo de los Algoritmos Genéticos se ha debido realmente al
trabajo de John Holland, investigador matemático de la Universidad de Michigan, quien
estaba convencido de que era la recombinación de grupos de genes, que se realiza mediante
el cruce, la parte más importante de la evolución. A mediados de los años 60 desarrolla
una técnica de programación, el Algoritmo Genético, que se adapta a la evolución tanto
por el cruce como por la mutación. Durante la década siguiente trabajó para ampliar
el alcance de este tipo de algoritmos y fruto de ese trabajo publica en 1975 la primera
monografı́a sobre el tema, Holland (1975), en la que se sientan las bases teóricas que
fundamentan el desarrollo de los AGs desde el punto de vista computacional, abstrae
los conceptos de la genética natural, y los aplica a la economı́a y al reconocimiento de
patrones. Desde entonces el campo de aplicaciones de este tipo de algoritmos no ha dejado
de crecer: diseños de turbinas de aviones, predicciones de la evolución bursátil, estudios de
progresión de enfermedades (mediante comparación de imágenes tomadas por resonancia
magnética), análisis de la estructura del cristal lı́quido, son algunos ejemplos.

2.2. ¿Por qué utilizar Algoritmos Genéticos en la op-


timización?
La razón del creciente interés por los Algoritmos Genéticos es que éstos son un método
global y robusto de búsqueda de las soluciones de problemas. La principal ventaja de
estas caracterı́sticas es el equilibrio alcanzado entre la eficiencia y eficacia para resolver
diferentes y muy complejos problemas de grandes dimensiones.
Lo que aventaja a los AGs frente a otros algoritmos tradicionales de búsqueda es que
se diferencian de éstos en los siguientes aspectos:

1. Trabajan con una codificación de un conjunto de parámetros, no con los parámetros


mismos.
2.3. DEFINICIÓN DE ALGORITMO GENÉTICO 21

2. Trabajan con un conjunto de puntos, no con un único punto y su entorno (su


técnica de búsqueda es global). Utilizan un subconjunto del espacio total, para
obtener información sobre el universo de búsqueda, a través de las evaluaciones
de la función a optimizar. Esas evaluaciones se emplean de forma eficiente para
clasificar los subconjuntos de acuerdo con su idoneidad.

3. No necesitan conocimientos especı́ficos sobre el problema a resolver; es decir, no


están sujetos a restricciones. Por ejemplo, se pueden aplicar a funciones no continuas,
lo cual les abre un amplio campo de aplicaciones que no podrı́an ser tratadas por
los métodos tradicionales.

4. Utilizan operadores probabilı́sticos, en vez de los tı́picos operadores determinı́sticos


de los técnicas tradicionales.

5. Resulta sumamente fácil ejecutarlos en las modernas arquitecturas masivas en pa-


ralelo.

6. Cuando se usan para problemas de optimización, resultan menos afectados por los
máximos locales que las técnicas tradicionales (i.e., son métodos robustos).

2.3. Definición de Algoritmo Genético


Una definición bastante completa de un Algoritmo Genético es la propuesta por Koza
(1992)
“Es un algoritmo matemático altamente paralelo que transforma un conjunto de ob-
jetos matemáticos individuales con respecto al tiempo usando operaciones modeladas de
acuerdo al principio Darwiniano de reproducción y supervivencia del más apto, y tras
haberse presentado de forma natural una serie de operaciones genéticas de entre las que
destaca la recombinación sexual. Cada uno de estos objetos matemáticos suele ser una
cadena de caracteres (letras o números) de longitud fija que se ajusta al modelo de las
cadenas de cromosomas, y se les asocia con una cierta función matemática que refleja su
aptitud”.
También está la definición según Pajares Martinsanz and Santos (2006)
“Los Algoritmos Genéticos son un procedimiento de búsqueda y optimización heurı́sti-
ca que utiliza una función de evaluación en base a la cual se dirige la búsqueda. Esta
función heurı́stica pondera la calidad de cada estado. Su principal ventaja es que permite
explorar un amplio espacio de estados”.
22 CAPÍTULO 2. MARCO TEÓRICO

2.4. Terminologı́a
2.4.1. Cromosoma
En Algoritmos Genéticos, un cromosoma tı́pico se refiere a una solución candidata
a un problema. Un cromosoma esta subdividido en genes. La codificación suele hacerse
mediante valores binarios. Sin embargo, también existen representaciones que codifican
directamente cada parámetro con un valor entero, real o en punto flotante. La figura 2.1
muestra la representación de un cromosoma.

Figura 2.1: Representación de un cromosoma

2.4.2. Genotipo y Fenotipo


El conjunto de los parámetros (genes) representado por un cromosoma particular recibe
el nombre de genotipo. El genotipo contiene la información necesaria para la construcción
del organismo, es decir, la solución real al problema, denominada fenotipo. El fenotipo es
lo que el cromosoma representa, el individuo como solución. Cada genotipo desarrolla un
fenotipo.

2.4.3. Fitness
El fitness de un individuo en un Algoritmo Genético es el valor de la función objetivo
para su fenotipo. Para calcular el fitness, los cromosomas tienen que ser decodificados y
su función objetivo tiene que ser evaluada. El fitness no solo indica que tan buena es una
solución, también que tan cerca se encuentra esta de la solución óptima.

2.4.4. Población
Una población es una colección de individuos, consiste en una serie de individuos a
ser evaluados.

2.4.5. Operadores genéticos


Para el paso de una generación a la siguiente se aplican una serie de operadores genéti-
cos. Los más empleados son los operadores de selección, cruce, copia y mutación. A con-
tinuación se verán en mayor detalle:
2.4. TERMINOLOGÍA 23

1. Selección:
Los algoritmos de selección serán los encargados de escoger qué individuos van a
disponer de oportunidades de reproducirse y cuáles no. Puesto que se trata de imitar
lo que ocurre en la naturaleza, se ha de otorgar un mayor número de oportunidades
de reproducción a los individuos más aptos. Por lo tanto, la selección de un individuo
estará relacionada con su valor de ajuste. No se debe, sin embargo, eliminar por
completo las opciones de reproducción de los individuos menos aptos, pues en pocas
generaciones la población se volverı́a homogénea.
En cuanto a algoritmos de selección se refiere, estos pueden ser divididos en
dos grandes grupos: probabilı́sticos y determinı́sticos. Ambos tipos de algoritmos
basan su funcionamiento en el principio indicado anteriormente (permitir escoger
una mayor cantidad de veces a los más aptos). Sin embargo, como su nombre indica,
el primer tipo adjudica estas posibilidades con un importante componente basado en
el azar. Es en este grupo donde se encuentran los algoritmos de selección por ruleta
o por torneo que, dado su importancia por ser los más frecuentemente utilizados, lo
cual serán los que describiremos con detalles. El segundo grupo engloba una serie de
algoritmos que, dado el ajuste conocido de cada individuo, permite asignar a cada
uno el número de veces que será escogido para reproducirse.
Selección por ruleta
Propuesto por DeJong, es posiblemente el método más utilizado desde los orı́genes
de los Algoritmos Genéticos Gestal et al. (2010). A cada uno de los individuos de la
población se le asigna una parte proporcional a su ajuste de una ruleta, de tal forma
que la suma de todos los porcentajes sea la unidad. Los mejores individuos recibirán
una porción de la ruleta mayor que la recibida por los peores. Generalmente, la
población está ordenada en base al ajuste, por lo que las porciones más grandes se
encuentran al inicio de la ruleta. Para seleccionar un individuo basta con generar un
número aleatorio del intervalo [0, 1] y devolver el individuo situado en esa posición
de la ruleta. Esta posición se suele obtener recorriendo los individuos de la población
y acumulando sus proporciones de ruleta hasta que la suma exceda el valor obtenido.
La probabilidad de selección pi de cada individuo se calcula por la formula siguiente
Fitness del individuo
Probabilidad de selección pi = P (2.1)
Fitness (todos los individuos)
luego se calcula la probabilidad acumulativa qi para cada cromosoma vi como
i
X
qi = pj (2.2)
j=1
24 CAPÍTULO 2. MARCO TEÓRICO

Selección por torneo


La idea principal de este método de selección consiste en escoger a los individuos
genéticos en base a comparaciones directas entre sus genotipos.
Existen dos versiones de selección mediante torneo, el torneo determinı́stico y el
torneo probabilı́stico, que a continuación pasan a detallarse.
En la versión determinı́stica se selecciona al azar un número p de individuos
(generalmente se escoge p = 2). De entre los individuos seleccionados se selecciona
el más apto para pasarlo a la siguiente generación.
La versión probabilı́stica únicamente se diferencia en el paso de selección del
ganador del torneo. En vez de escoger siempre el mejor se genera un número aleato-
rio del intervalo [0, 1], si es mayor que un parámetro p (fijado para todo el proceso
evolutivo) se escoge el individuo más apto y en caso contrario el menos apto. Gene-
ralmente p toma valores en el rango 0.5 < p ≤ 1.
Otros tipos de selección
Existen muchos otros algoritmos de selección. Unos buscan mejorar la eficien-
cia computacional, otros el número de veces que los mejores o peores individuos
pueden ser seleccionados. Algunos de estos algoritmos son muestreo determinı́stico,
escalamiento sigma, selección por jerarquı́as, estado uniforme, sobrante estocástico,
brecha generacional, estocástico, estocástico general, Método Deb, Método Niching
etc.
2. Cruce
Una vez seleccionados los individuos, éstos son recombinados para producir la
descendencia que se insertará en la siguiente generación. Tal y como se ha indicado
anteriormente, el cruce es una estrategia de reproducción sexual.
Los diferentes métodos de cruce podrán operar de dos formas diferentes. Si se
opta por una estrategia destructiva los descendientes se insertarán en la población
temporal aunque sus padres tengan mejor ajuste (trabajando con una única pobla-
ción esta comparación se realizará con los individuos a reemplazar). Por el contrario,
utilizando una estrategia no destructiva la descendencia pasará la siguiente genera-
ción únicamente si supera la bondad del ajuste de los padres (o de los individuos a
reemplazar).
La idea principal del cruce se basa en que, si se toman dos individuos correc-
tamente adaptados al medio y se obtiene una descendencia que comparta genes
de ambos, existe la posibilidad de que los genes heredados sean precisamente los
causantes de la bondad de los padres. Al compartir las caracterı́sticas buenas de
dos individuos, la descendencia, o al menos parte de ella, deberı́a tener una bondad
mayor que cada uno de los padres por separado. Si el cruce no agrupa las mejores
caracterı́sticas en uno de los hijos y la descendencia tiene un peor ajuste que los pa-
dres no significa que se esté dando un paso hacia atrás. Optando por una estrategia
de cruce no destructiva garantizamos que pasen a la siguiente generación los mejo-
res individuos. Si, aún con un ajuste peor, se opta por insertar a la descendencia,
2.4. TERMINOLOGÍA 25

y puesto que los genes de los padres continuarán en la población aunque disper-
sos y posiblemente levemente modificados por la mutación, en posteriores cruces
se podrán volver a obtener estos padres, recuperando ası́ la bondad previamente
perdida.
Existen multitud de algoritmos de cruce. Sin embargo los más empleados son los
que se detallarán a continuación:

a) Cruce de 1 punto:
Es la más sencilla de las técnicas de cruce. Una vez seleccionados dos indivi-
duos se cortan sus cromosomas por un punto seleccionado aleatoriamente para
generar dos segmentos diferenciados en cada uno de ellos: la cabeza y la cola.
Se intercambian las colas entre los dos individuos para generar los nuevos des-
cendientes. De esta manera ambos descendientes heredan información genética
de los padres. La figura 2.2 muestra el cruce de 1 punto.

Figura 2.2: Cruce de un punto

b) Cruce de 2 puntos:
Se trata de una generalización del cruce de 1 punto. En vez de cortar por un
único punto los cromosomas de los padres, como en el caso anterior, se realizan
dos cortes. Deberá tenerse en cuenta que ninguno de estos puntos de corte
coincida con el extremo de los cromosomas para garantizar que se originen tres
segmentos. Para generar la descendencia se escoge el segmento central de uno
de los padres y los segmentos laterales del otro padre. La figura 2.3 muestra el
cruce de 2 puntos.

3. Copia
La copia es la otra estrategia reproductiva para la obtención de una nueva
generación a partir de la anterior. A diferencia del cruce, se trata de una estrategia de
reproducción asexual. Consiste simplemente en la copia de un individuo en la nueva
generación. El porcentaje de copias de una generación a la siguiente es relativamente
reducido, pues en caso contrario se corre el riesgo de una convergencia prematura de
26 CAPÍTULO 2. MARCO TEÓRICO

Figura 2.3: Cruce de dos puntos

la población hacia ese individuo. De esta manera el tamaño efectivo de la población


se reducirı́a notablemente y la búsqueda en el espacio del problema se focalizarı́a en
el entorno de ese individuo.
Lo que generalmente se suele hacer es seleccionar dos individuos para el cruce y, si
éste finalmente no tiene lugar, se insertan en la siguiente generación los individuos
seleccionados.

4. Elitismo
El elitismo es un caso particular del operador de copia consistente en copiar
siempre al mejor, o en su caso mejores, individuos de una generación en la generación
siguiente. De esta manera se garantiza que el proceso de búsqueda nunca dará un
paso hacia atrás en cuanto a la calidad de la mejor solución obtenida, sino que un
cambio en ésta siempre implicará una mejora.

5. Mutación
La mutación de un individuo provoca que alguno de sus genes, generalmente uno
sólo, varı́e su valor de forma aleatoria.
Aunque se pueden seleccionar los individuos directamente de la población actual
y mutarlos antes de introducirlos en la nueva población, la mutación se suele utilizar
de manera conjunta con el operador de cruce. Primeramente se seleccionan dos
individuos de la población para realizar el cruce. Si el cruce tiene éxito entonces
uno de los descendientes, o ambos, se muta con cierta probabilidad PM. Se imita de
esta manera el comportamiento que se da en la naturaleza, pues cuando se genera
la descendencia siempre se produce algún tipo de error, por lo general sin mayor
trascendencia, en el paso de la carga genética de padres a hijos.
La probabilidad de mutación es muy baja, generalmente menor al 1 %. Esto
se debe sobre todo a que los individuos suelen tener un ajuste menor después de
mutados. Sin embargo se realizan mutaciones para garantizar que ningún punto del
espacio de búsqueda tenga una probabilidad nula de ser examinado.
Tal y como se ha comentado, la mutación más usual es el reemplazo aleatorio.
2.5. FUNCIONAMIENTO DE UNA ALGORITMO GENÉTICO 27

Este consiste en variar aleatoriamente un gen de un cromosoma. Si se trabaja


con codificaciones binarias, consistirá simplemente en negar un bit. La figura 2.4
muestra la mutación.

Figura 2.4: Mutación

2.5. Funcionamiento de una Algoritmo Genético


Un Algoritmo Genético puede presentar algunas variaciones dependiendo de los ope-
radores genéticos (cruce y mutación) que lo componen, pero en general una Algoritmo
Genético simple presenta los siguientes pasos:

2.5.1. Pasos de un Algoritmo Genético Simple


1. [Inicio]. Se genera la población de manera aleatoria, que está conformada por el
conjunto de individuos (cromosomas) que representan a las posibles soluciones al
problema, a cada uno de estos individuos se les asigna una función de aptitud que
corresponde a su eficacia para resolver el problema.
2. [Evaluación]. Se evalúa la función de aptitud f (x) de cada cromosoma x de la po-
blación.
3. [Nueva Población]. Obtener una nueva población a partir de otra mediante:

[Selección]. Después de saber la aptitud de cada cromosoma, se procede a ele-


gir los cromosomas que serán cruzados en la siguiente generación. Los cromosomas
con mejor aptitud tienen mayor probabilidad de ser seleccionados.

[Cruzamiento]. Es el principal operador genético, representa la reproducción se-


xual, opera sobre dos cromosomas a la vez para generar dos descendientes (hijos),
donde se combinan las caracterı́sticas de ambos cromosomas padres.
28 CAPÍTULO 2. MARCO TEÓRICO

[Mutación]. Con una probabilidad de mutación, modificar al azar parte del cromo-
soma de los individuos, esto permite alcanzar zonas del espacio de búsqueda que no
estaban cubiertas por los individuos de la población actual.

[Reemplazo]. Insertar los descendientes en la nueva población, se seleccionan los


mejores individuos para conformar la población de la nueva población.

4. [Condición de término]. Mientras no se cumpla la condición de término volver al


paso 2.
El Algoritmo Genético deberá detenerse cuando alcance la solución óptima, pe-
ro esta generalmente se desconoce, por lo que se deben utilizar otros criterios de
detención. Normalmente se usan dos criterios: correr el AG un número máximo de
iteraciones (generaciones) o detenerlo cuando no haya cambios en la población. La
figura 2.5 muestra el flujograma de un Algoritmo Genético. El código descrito y que
se muestra en el flujograma en la figura 2.5 se ha desarrollado en Matlab y se incluye
en el apéndice su explicación y codificación.

2.6. Un Ejemplo de Implementación


Considere el problema siguiente de optimización lineal restringido: Minimizar

f (x, y) = x2 + y 2 (2.3)
sujeta a condición
x + y = 3. (2.4)
Solución:
Se puede ver este problema como

f (x, y) = x2 + (3 − x)2 (2.5)

Un resultado analı́tico da
(3/2, 3/2) = (1.5, 1.5) (2.6)
Si se usa para la optimización el Algoritmo Genético (hecho con el programa Matlab ver
Apéndice) da con iter= 100, PC= 0.70, PM= 0.07, SL= 12 y PS= 200, x en el intervalo
[0, 3], el resultado siguiente x = 1.4996 y entonces y = 3 − 1.4996 = 1.5004.

2.7. Cinemática
Antes de definir que es la cinemática se presentan dos conceptos importantes.
2.7. CINEMÁTICA 29

Generar la po-
Inicio
blación inicial

Evaluar la función
de adaptación de
cada individuo

Seleccionar de la
población a los indi-
viduos a reproducir

Reproducir obteniendo
descendientes (Cruzar)

Mutar un cierto gru-


Falso
po de individuos

Insertar los nuevos indi-


viduos en la población

Evaluar nueva población

Si cumple
la
F condición
de parada

Verdadero

Fin

Figura 2.5: Flujograma del Algoritmo Genético


30 CAPÍTULO 2. MARCO TEÓRICO

2.7.1. Robot
Se define de manera formal en la Organización Internacional para la Estandarización
(ISO), como un manipulador multifuncional reprogramable, capaz de mover materiales,
piezas, herramientas o dispositivos especiales, a través de movimientos variables progra-
mados, para el desempeño de tareas diversas.

2.7.2. Robot Paralelo


Es una cadena cinemática de bucle cerrado cuyo efector final está vinculado a la base
por varias cadenas cinemáticas independientes.
La cinemática es parte de la mecánica que estudia el movimiento y trata el tema sin
considerar las fuerzas que la ocasionan. Dentro de esta ciencia se estudian la posición, la
velocidad, la aceleración y todas las demás derivadas de alto orden de las variables de
posición (con respecto al tiempo o cualquier otra variable). En consecuencia, el estudio de
la cinemática de manipuladores se refiere a todas las propiedades geométricas y basadas
en el tiempo del movimiento Craig (2006).
La cinemática de un robot estudia el movimiento del mismo con respecto a un sistema
de referencia. Existen dos problemas fundamentales en la cinemática de un robot; el pri-
mero de ellos se conoce como el problema de cinemático directo, y consiste en determinar
cuál es la posición del robot, con respecto a un sistemas de coordenadas que se toma como
referencia, conocidos los valores de las articulaciones y los parámetros geométricos de los
elementos del robot; el segundo, denominado problema cinemático inverso, consiste en la
determinación de las variables de articulaciones correspondientes a una orientación y posi-
ción especı́ficas del efector final (y conocidos los parámetros geométricos de los elementos
del robot).
Otros conceptos importantes que se usaran en esta tesis son:

2.7.3. Grados de Libertad


Número de coordenadas independientes necesarias para definir la configuración de una
cadena cinemática o mecanismo (o robot) Gogu (2009).

2.7.4. Grados de libertad en mecanismos planos


Para un mecanismo plano cuyo movimiento tiene lugar sólo en dos dimensiones, el
número de grados de libertad del mismo se pueden calcular mediante el criterio de Grubler-
Kutzbach:
m = 3(n − 1) − 2j1 − j2 (2.7)
donde m es movilidad, n el número de elementos (eslabónes, barras), j1 es número de
uniones de un grado de libertad y j2 es el número de uniones de dos grado de libertad.
2.7. CINEMÁTICA 31

Caso en estudio del Robot paralelo planar de esta tesis


El robot paralelo planar de esta tesis es como lo presenta la figura 2.6. Este robot

Figura 2.6: Robot paralelo planar

tiene 5 eslabones (o barras), 5 juntas (o uniones), cada junta tiene 1 grado de libertad,
por tanto, por ecuación 2.5, j2 = 0, j1 = 5 y n=5. Ası́

m = 3(5 − 1) − 2(5) − 0 = 2 (2.8)

En consecuencia el robot paralelo planar en estudio tiene 2 grados de libertad.


Ahora se presentaran otras definiciones muy importantes:

2.7.5. Espacio de trabajo Alcanzable


Es el volumen del espacio que puede alcanzar el robot en por lo menos una orientación.

2.7.6. Jacobiano
El Jacobiano de un manipulador se define de la siguiente manera.
La relación entre el vector n-dimensional de coordenadas articulares θ y el vector
m-dimensional x de coordenadas cartesianas de la plataforma móvil, esta dada por la
ecuación,

F (θ, x) = 0 (2.9)
donde F es una función n+m-dimensional de θ y x y 0 es el vector cero p-dimensional
(dependiendo de las funciones coordenadas de F). Diferenciando la ecuación anterior se
obtiene una relación entre las velocidades de entrada y salida.

Jx ẋ = Jθ θ̇ (2.10)
32 CAPÍTULO 2. MARCO TEÓRICO

donde
∂F
Jx = (2.11)
∂x
∂F
Jθ = (2.12)
∂θ
tanto Jx como Jθ son matrices jacobiana de F respecto a cada coordenada. De esta relación
se puede intentar invertir Jx o Jθ , en esta tesis invertiremos Jθ y llamaremos el jacobiano

J = Jθ−1 Jx (2.13)

note que esto es indiferente a la hora de calcular el numero de condición de la matriz J


ya que J −1 = Jx−1 Jθ .

2.7.7. Espacio de trabajo Diestro


Es el volumen de espacio que puede alcanzar el efector final del robot con todas
las orientaciones; esto es, en cada punto del espacio de trabajo diestro, el efector final
puede orientarse arbitrariamente. Para calcular el espacio diestro usaremos el número de
condición (que se define como cond(J)) de la matriz jacobiana. Una propiedad importante
de número de condición que se usará, es que para una matriz J se tiene cond(λJ)=cond(J)
para todo λ número real distinto de 0. En particular de lo anterior visto para la matriz
Jacobiana se tiene cond(Jθ−1 Jx ) =cond(−Jθ−1 Jx ).

2.7.8. Robot paralelo plano


El mecanismo plano que se trabajará en esta tesis es un mecanismo de 5 barras. El
mecanismo plano que tiene 2 grados de libertad, 5 articulaciones rotacionales, 4 eslabónes
y un eslabón base.
La forma de hallar las ecuaciones de cinemáticas será el método geométrico, y se ba-
sará en las relaciones de suma de vectores para hallar la relación entre las coordenada
espaciales (x,y) y las coordenadas angulares. Luego se utiliza algunas operaciones ma-
temáticas y se usa propiedades trigonométricas se llega a las ecuaciones que serán las
soluciones de los argumentos angulares y de allı́ se determina el espacio de trabajo, de
esta misma manera con operaciones matemáticas se determina a un par de ecuaciones y
de allı́ se definirá la función F, de la cual se hallara el Jacobiano que se usara junto a las
ecuaciones angulares para hallar el espacio diestro del robot paralelo.
Capı́tulo 3

Ecuaciones Cinemáticas

3.1. Robot paralelo plano


El mecanismo paralelo plano de 2 grados de libertad que se estudiará es de 5 eslabónes,
5 juntas, como lo presenta la siguiente figura 3.1

Figura 3.1: Robot paralelo plano de 2-GdL 5R

Donde, L1 y L2 son las medidas de los eslabónes, d es un eslabón y es la distancia de


punto C al punto A, θ1 es el ángulo del eslabón 1, θ3 es el ángulo del eslabón 2, θ2 es el
ángulo del eslabón 3, θ4 es el ángulo del eslabón 4, el origen global está en el punto O y
el punto P está en el sistema de coordenada en el elemento terminal (x,y).

3.2. Ecuaciones de Cinemática


Se quiere hallar las ecuaciones de cinemáticas del mecanismo plano, es decir se van a
obtener las coordenadas x,y en función de los ángulos.
Por la ley poligonal de suma de vectores se tiene (ver figura 3.2 donde se ve la suma
de vectores),

33
34 CAPÍTULO 3. ECUACIONES CINEMÁTICAS

Figura 3.2: Gráfica de suma de vectores

−→ −→ −−→ −−→
OP = OC + CD + DP (3.1)
−→ −→ −→ −−→
OP = OA + AB + BP (3.2)
con la relación anterior se tiene que,

x = xC + xD + xO (3.3)
y = yC + yD + yO (3.4)
se tomará en cuenta las siguiente definición.

3.2.1. Función trigonométrica de un ángulo cualquiera


Se considera el ángulo α (se mide positivo en sentido contrario a las agujas del reloj
respecto a la horizontal del eje x positivo) que en un sistema de coordenada tiene su
lado terminal en el primer cuadrante (pero puede ser cualquiera). Se toma un punto en
lado terminal y se considera sus coordenadas y su distancia al origen (en la figura 3.3 se
muestra un ángulo cualquiera). Las funciones trigonométricas se definen ası́:

AE
sin(α) = (3.5)
OA
OE
cos(α) = (3.6)
OA
Luego queda,
d
xO = − (3.7)
2
yO = 0. (3.8)
3.2. ECUACIONES DE CINEMÁTICA 35

Figura 3.3: Funciones trigonométricas de un ángulo cualquiera

Si se forma un sistema de coordenada en cada punto se llega a,


xC
= cos(θ2 ) (3.9)
L1
de una misma manera,
xD
= cos(θ4 ) (3.10)
L2
por ende,
xC = cos(θ2 )L1 (3.11)
xD = cos(θ4 )L2 (3.12)
sustituyendo queda,

d
x = cos(θ2 )L1 + cos(θ4 )L2 − . (3.13)
2
Para la coordenada y se tiene,
yC
= sin(θ2 ) (3.14)
L1
ası́
yC = sin(θ2 )L1 (3.15)
por otro lado,
yD
= sin(θ4 ) (3.16)
L2
por ende,
yD = sin(θ4 )L2 (3.17)
ası́,
36 CAPÍTULO 3. ECUACIONES CINEMÁTICAS

y = sin(θ4 )L2 + sin(θ2 )L1 (3.18)


de manera que para el primer camino que se ha seleccionado las ecuaciones son,
d
x = cos(θ2 )L1 + cos(θ4 )L2 − (3.19)
2
y = sin(θ4 )L2 + sin(θ2 )L1 . (3.20)
Por el otro camino se basa en la suma de vectores ya expuestas,

x = xA + xB + xO (3.21)

y = yB + yA + yO (3.22)
se tiene que,
d
xO = (3.23)
2
yO = 0 (3.24)
luego para las demás coordenadas,
xA
= cos(θ1 ) (3.25)
L1
xA = cos(θ1 )L1 (3.26)
por otro lado,
xB
= cos(θ3 ) (3.27)
L2
xB = cos(θ3 )L2 (3.28)
de manera que queda la coordenada x como,
d
x = cos(θ1 )L1 + cos(θ3 )L2 + . (3.29)
2
para la coordenada y se tiene,
yA
= sin(θ1 ) (3.30)
L1
ası́,
yA = sin(θ1 )L1 (3.31)
de manera parecida se obtiene,
yB
= sin(θ3 ) (3.32)
L2
yB = sin(θ3 )L2 (3.33)
se llega ası́,
3.2. ECUACIONES DE CINEMÁTICA 37

y = sin(θ1 )L1 + sin(θ3 )L2 (3.34)


de manera que las ecuaciones son,
d
x = cos(θ1 )L1 + cos(θ3 )L2 + (3.35)
2
y = sin(θ1 )L1 + sin(θ3 )L2 . (3.36)
Para obtener los ángulos θ1 , θ2 , θ3 θ4 se procede de la siguiente manera, de las 2
primeras ecuaciones del primer camino que se tomó se despeja la función trigonométrica
que contiene θ2 ,
L1 cos(θ2 ) = x − L2 cos(θ4 ) + d/2 (3.37)
L1 sin(θ2 ) = y − L2 sin(θ4 ) (3.38)
elevando al cuadrado ambos miembros,

(L1 cos(θ2 ))2 = (x − L2 cos(θ4 ) + d/2)2 (3.39)

(L1 sin(θ2 ))2 = (y − L2 sin(θ4 ))2 (3.40)


desarrollando y sumando las dos ecuaciones y asociando se llega a,

d2
L21 = x2 + y 2 + + xd + L22 − 2yL2 sin(θ4 ) − (dL2 + 2xL2 ) cos(θ4 ) (3.41)
4
esta ecuación se puede reescribir,

c = a cos(θ4 ) + b sin(θ4 ) (3.42)

donde,
d2
c = L21 − (x2 + y 2 + + xd + L22 ) (3.43)
4
a = −(dL2 + 2xL2 ) (3.44)
b = −2yL2 (3.45)
cuya solución es con la rutina del arcotangente con dos argumentos Atan2 conocida,

θ4 = Atan2(b, a) ± Atan2( a2 + b2 − c2 , c). (3.46)

Existe otra forma de resolver la ecuación 3.42 ver apéndice A.


Para el otro ángulo θ2 se se hace lo mismo pero se despeja los términos que contienen
θ4 y se aplica lo mismo que se ejecutó anteriormente y ası́ se llega a,

c = a cos(θ2 ) + b sin(θ2 ) (3.47)

donde,
d2
c = L22 − (x2 + y 2 + + xd + L21 ) (3.48)
4
38 CAPÍTULO 3. ECUACIONES CINEMÁTICAS

a = −(dL1 + 2xL1 ) (3.49)


b = −2yL1 (3.50)
cuya solución es, √
θ2 = Atan2(b, a) ± Atan2( a2 + b2 − c2 , c). (3.51)
Luego de las ecuaciones que se obtuvieron por el segundo camino que son,

d
x = cos(θ1 )L1 + cos(θ3 )L2 + (3.52)
2
y = sin(θ1 )L1 + sin(θ3 )L2 (3.53)
despejando y elevando al cuadrado,

d
(cos(θ1 )L1 )2 = (x − (cos(θ3 )L2 + ))2 (3.54)
2

(sin(θ1 )L1 )2 = (y − sin(θ3 )L2 )2 (3.55)


desarrollando y sumando las dos ecuaciones,

d2
L21 = x2 + y 2 + − dx + L22 + (dL2 − 2xL2 ) cos(θ3 ) − 2yL2 sin(θ3 ) (3.56)
4
ası́ se define,
d2
c = L21 − (x2 + y 2 + − dx + L22 ) (3.57)
4
a = dL2 − 2xL2 (3.58)
b = −2yL2 (3.59)
c = a cos(θ3 ) + b sen(θ3 ) (3.60)
cuya solución es, √
θ3 = Atan2(b, a) ± Atan2( a2 + b2 − c2 , c). (3.61)
Para el ángulo θ1 si se hace lo mismo se llega,

d2
L22 = x2 + y 2 + − dx + L21 + (dL1 − 2xL1 ) cos(θ1 ) − 2yL1 sin(θ1 ) (3.62)
4
ası́ se define,
d2
c = L22 − (x2 + y 2 + − dx + L21 ) (3.63)
4
a = dL1 − 2xL1 (3.64)
b = −2yL1 (3.65)
se tiene que,
c = a cos(θ1 ) + b sin(θ1 ) (3.66)
3.3. JACOBIANO 39

cuya solución es, √


θ1 = Atan2(b, a) ± Atan2( a2 + b2 − c2 , c). (3.67)
Se hace la observación de que aunque se hallado de manera aislada todos las soluciones
de las ecuaciones trigonométricas de todos los ángulos, existe una relación entre el ángulo
θ4 con el ángulo base θ2 dada por las 2 ecuaciones 3.19 y 3.20, y otra relación entre el
ángulo θ3 con el ángulo base θ1 dada por las ecuaciones 3.35 y 3.36, que son las 4 ecuaciones
que surgieron de la geometrı́a del robot por suma de vectores. En el caso de se quiera dejar
el ángulo θ4 en función del ángulo base θ2 se pueden usar dichas ecuaciones, de manera
análogo el ángulo θ3 en función del angulo base θ1 se usan las otras 2 ecuaciones.
Ahora se hallará el Jacobiano, para ello se encontrará primero la función F que rela-
ciona las coordenadas angulares con la cartesianas.

3.3. Jacobiano
Las 4 ecuaciones que se presentan se obtuvieron de la geometrı́a del robot paralelo, de
ahı́ por suma de vectores existen dos caminos a seleccionar, una que va por el eslabón que
contiene el angulo θ2 que llamamos el primer camino de allı́ se obtuvieron dos ecuaciones
una para x y una para y, y el segundo camino va por el eslabón que contiene al angulo
θ1 ver figura 3.1 de este camino también se obtuvieron dos ecuaciones una para x y otra
para y, en los dos caminos se quiere llegar al punto P donde esta el elemento terminal del
robot paralelo, en total suman 4 ecuaciones que ya las obtuvimos en la sección 3.2 que
son:
d
x = cos(θ1 )L1 + cos(θ3 )L2 + (3.68)
2
y = sin(θ1 )L1 + sin(θ3 )L2 (3.69)
d
x = cos(θ2 )L1 + cos(θ4 )L2 − (3.70)
2
y = sin(θ4 )L2 + sin(θ2 )L1 (3.71)
se hace el mismo procedimiento de combinación de las ecuaciones, de elevar al cuadrado
y sumar las ecuaciones, como ya se hizo en la sección anterior, y se presentan las ya
obtenidas 2 ecuaciones anteriormente para los ángulos θ1 y θ2 que son

d2
x2 + y 2 + − dx + L21 + (dL1 − 2xL1 ) cos(θ1 ) − 2yL1 sin(θ1 ) − L22 = 0 (3.72)
4

d2
x2 + y 2 + + xd + L21 − (dL1 + 2xL1 ) cos(θ2 ) − 2yL1 sen(θ2 ) − L22 = 0. (3.73)
4
Se define,
d2
 
x2 + y 2 + 4
+ xd + L21 − (dL1 + 2xL1 ) cos(θ2 ) − 2yL1 sin(θ2 ) − L22
F (x, y, θ2 , θ1 ) = d2
x2 + y 2 + 4
− dx + L21 + (dL1 − 2xL1 ) cos(θ1 ) − 2yL1 sin(θ1 ) − L22
40 CAPÍTULO 3. ECUACIONES CINEMÁTICAS

de lo anterior se obtiene,
 
2x + d − 2L1 cos(θ2 ) 2y − 2L1 sin(θ2 )
Jx =
2x − d − 2L1 cos(θ1 ) 2y − 2L1 sin(θ1 )

y por otro lado se tiene que,


 
2xL1 sin(θ2 ) + dL1 sin(θ2 ) − 2yL1 cos(θ2 ) 0
Jθ =
0 2xL1 sin(θ1 ) − dL1 sin(θ1 ) − 2yL1 cos(θ1 )

ası́ el jacobiano es,


J = Jθ−1 Jx (3.74)
 
−2x − d + 2L1 cos(θ2 ) −2y + 2L1 sin(θ2 )

 −2xL1 sin(θ2 ) − dL1 sin(θ2 ) + 2yL1 cos(θ2 ) −2xL1 sin(θ2 ) − dL1 sin(θ2 ) + 2yL1 cos(θ2 ) 

J =
 −2x + d + 2L1 cos(θ1 ) −2y + 2L1 sin(θ1 ) 

 −2xL1 sin(θ1 ) + dL1 sin(θ1 ) + 2yL1 cos(θ1 ) −2xL1 sin(θ1 ) + dL1 sin(θ1 ) + 2yL1 cos(θ1 ) 

Si se hace que las matrices queden en función de los 4 ángulos, se hace los cambios de
x,y de las ecuaciones a conveniencia, simplificando y aplicando propiedades trigonométri-
cas se llega a  
2L2 cos(θ4 ) 2L2 sin(θ4 )
Jx =
2L2 cos(θ3 ) 2L2 sin(θ3 )
 
2L2 L1 sin(θ2 − θ4 ) 0
Jθ =
0 2L2 L1 sin(θ1 − θ3 )
y el jacobiano es,
J = Jθ−1 Jx (3.75)
queda entonces,
 
cos(θ4 ) sin(θ4 )
 L1 sin(θ2 − θ4 ) L1 sin(θ2 − θ4 ) 
J =
 cos(θ3 ) sin(θ3 )


L1 sin(θ1 − θ3 ) L1 sin(θ1 − θ3 )
Esta última matriz se le puede hallar el número de condición (cond(J)) puntualmente
con el objeto de determinar la dexteridad de un punto (x,y) del espacio de trabajo del
robot paralelo plano.
Capı́tulo 4

Casos de Estudio

4.1. Primer caso de estudio


En esta sección se plantea el primer (problema de aplicación) caso a resolver.
Se quiere hallar las medidas del robot paralelo cuya área alcanzable y área diestra sea
máxima.
El espacio de trabajo del robot es un mesa de corte de un espacio de trabajo de 1.2
de ancho y 1 de altura, las unidades en que se trabaja (en la optimización y en todo) son
unidades de longitud en metros en los 2 casos (de aplicaciones) que se estudiaran tanto
como para optimización de área alcanzable como para la optimización de dexteridad ası́:
es 1.2 metros de ancho y 1 metro de altura (aunque la mesa de corte puede ser más grande
pero el espacio a cubrir dentro de la mesa sera las medidas que se nombra), sin embargo
el procedimiento que se va a usar hace que las medidas longitud sea irrelevante, es decir
pueden ser más grandes o más pequeñas el procedimiento que se va a seguir es el mismo
es cuestión solo de cambiar los valores de longitud y los rangos de la optimización (au-
mentarlos o disminuirlos). Porque la idea de esta tesis es mostrar una forma de trabajar.

Los valores de optimización estarán dentro de los siguientes intervalos: L1 estará entre
0.1 a 0.5, L2 estará entre 0.1 a 0.4, d estará entre 0 a 0.3 (incluyendo los valores extremos).
En la figura 4.1 se muestra el robot paralelo en área de una mesa de corte.

Figura 4.1: Robot paralelo en una mesa de corte

41
42 CAPÍTULO 4. CASOS DE ESTUDIO

4.2. Área Alcanzable


Antes de plantear el problema en el programa, surge la pregunta cual es el error de
trabajar con un mallado mas fino que con uno mas grueso, pues esto hace entre otra cosas
que el tiempo de computo del algoritmo sea menor o mayor. Además, se quiere saber si
empleando una malla de nube de puntos discretos o aleatoria como una técnica como la
de Montecarlo (Sobol, 1983), cual es más adecuado usar. La diferencia entre los dos es que
la primera es un mallado uniforme y la segunda se toma un número de puntos aleatorio.
El área se calculara por la formula,

Número de puntos que estan dentro del área alcanzable del robot
A= · 1.2 (4.1)
Número de puntos total
Esta formula tiene su origen en la técnica de Montecarlo, donde se le quiere calcu-
lar el área de una curva cerrada, entonces dicha curva se encierra en un rectángulo de
área conocida, se comienza hallar de manera aleatoria un conjuntos de puntos dentro
del rectángulo, algunos quedan dentro de la curva y otros fuera de la curva dentro del
rectángulo, y de allı́ se calcula un área aproximada que se obtiene de sumar los puntos que
cayeron dentro de la curva multiplicado por el área del rectángulo dividido por el número
de todos los puntos (los que cayeron dentro y fuera de la curva dentro del rectángulo),
ver Sobol (1983). La formula 4.1 es la que se usará para optimizar el área alcanzable.
Ver figura 4.2 donde se ven un conjunto de puntos de manera uniforme (puntos totales
del mallado por el método nube de puntos) del robot paralelo planar:

Figura 4.2: Mallado de Área alcanzable a calcular por Método Nube de Puntos

El área calculada con la formula 4.1 con los puntos que quedan adentro ver figura 4.3
Por el método de Montecarlo el mallado (puntos escogidos aleatoriamente) queda ver
figura 4.4
4.3. MALLADO PARA ÁREA ALCANZABLE 43

Figura 4.3: Área alcanzable calculada por Método Nube de Puntos

Figura 4.4: Mallado por Método de Montecarlo

Y el área que se construye a partir de los puntos que quedan adentro por la formula
4.1 por el Método de Montecarlo ver figura 4.5

4.3. Mallado para área alcanzable


Se define un área de trabajo, se discretiza entonces para cada punto (x,y) del área y
junto al punto (L1 ,L2 ,d) se verifica si el punto (x,y) es alcanzable, si satisface lo que la
ecuación de los ángulos exige por ejemplo del ángulo θ1 ecuación 3.67 que a2 + b2 − c2 sea
44 CAPÍTULO 4. CASOS DE ESTUDIO

Figura 4.5: Área calculada por Método de Montecarlo

mayor o igual a cero (que depende de (x,y) y (L1 ,L2 ,d)) esto es:

d2
(2xL1 − dL1 )2 + (4y 2 L21 ) − (L22 − x2 + (xd) − − y 2 − L21 )2 ≥ 0 (4.2)
4

de manera análoga con el ángulo θ2 esto es:

d2
(2xL1 + dL1 )2 + (4y 2 L21 ) − (L22 − x2 − (xd) − − y 2 − L21 )2 ≥ 0 (4.3)
4

Si se verifica lo que exige las ecuaciones (4.2) y (4.3), el punto es alcanzable si no, no
lo es. Para hallar el área alcanzable se coloca un 1 si es alcanzable y un 0 si no lo es.
Luego se se suman todos los 1 y se llega a los puntos que caen dentro del área alcanzable
del robot paralelo con ello se estima un área con la formula 4.1. Ver flujograma en figura
4.6 donde se muestra la explicación más detallada.
Se hace la advertencia de que se ha exigido que para hallar el ángulo θ1 en la ecuación
3.67 el problema está solo esta el radical que contiene dicha ecuación es decir que el
subradical sea mayor o igual a cero porque en realidad es el único problema para encontrar
dicho angulo, de manera análoga para la ecuación 3.51 para el ángulo θ2 . Esta advertencia
se hace debido a que algunos textos (o paginas web) donde aparece la definición de la
función Atan2(a,b), no está definida cuando a = b = 0. Sin embargo en el programa
Matlab la función Atan2(a,b) si está definido cuando a = b = 0, y de hecho da el valor
0. Ası́ que el único problema está en el radical de dichas ecuaciones. Esta exigencia sobre
el radical que contiene las ecuaciones , es la misma que si se hubiera resuelto la ecuación
por reducción de polinomios (ver apéndice A) ya que el radical es el mismo.
4.3. MALLADO PARA ÁREA ALCANZABLE 45

Se discretiza el área de
Se tiene el punto (L1 ,L2 ,d)
trabajo en puntos (x,y)

Se verifica si el punto
es alcanzable con
ecuaciones 4.2 y 4.3 si,
son menores que 0 se
coloca 0, si son mayores
o iguales a 0 se coloca
1 y el punto es factible

Se suman todos los 1

Y de esa suma, obtengo


los puntos que caen den-
tro del área alcanzable
del robot paralelo

Calculo el área con la ecuación 4.1

Figura 4.6: Flujograma del Mallado


46 CAPÍTULO 4. CASOS DE ESTUDIO

4.4. Discretización del modelo para determinar el Área


Alcanzable
Se calcularan los errores relativo porcentuales para cada punto (L1 ,L2 ,d) por la formula
4.1 con la cual se va a optimizar para área alcanzable. Se toma como solución exacta (de
área alcanzable) la de mallado mas fino y de ahı́ se calculan los errores.
La Tabla 4.1 muestra los resultados de un conjunto de puntos (que son (L1 ,L2 ,d)) por
el método de nube de puntos, del cual se quiere concluir con que h se puede trabajar,
que haga más rápido el Algoritmo Genético hecho en Matlab, y que de un menor error de
la solución exacta. Se calcula los errores relativo porcentuales de la solución exacta con
las aproximadas, la media aritmética (o promedio) y la desviación estándar de todos los
errores en todas las tablas que se van a mostrar. Aunque se recomienda el tamaño de paso
h= 0.01 se debe verificar la media y la desviación estándar para dar una conclución.
La de mallado más fino sera la de h= 0.0001 que son 120022001 puntos, y para los
demás h, h= 0.001 son 1202201 puntos, h=0.01 son 12221 puntos, h= 0.05 son 525 puntos,
h= 0.1 son 143 puntos.

Tabla 4.1: Resultados de los Errores Relativos Porcentuales por nube de puntos
(L1 ,L2 ,d),h h=0.001 h=0.01 h=0.05 h=0.1
(0.5,0.4,0.3) 0.0689 0.6 2.88 6.52
(0.4,0.3980,0.3) 0.0537 0.73 3.63 7.6
(0.4583,0.3322,0.3) 0.0879 1.04 5.53 8.98
(0.3924,0.3924,0.3) 0.0692 0.73 2.59 4.79
(0.3435,0.3738,0.2999) 0.0845 0.91 3.04 6.41
(0.3999,0.3999,0.2234) 0.0511 0.64 2.54 5.72
(0.4934,0.3943,0.2730) 0.081 0.86 3.15 5.77
(0.2155,0.2543,0.2630) 0.0455 0.64 4.41 4.64
(0.1343,0.1534,0.1) 0.0998 0.3 4.19 8.88
(0.2,0.1,0.2999) 0 0.49 0.98 3.19
Media 0.0642 0.694 3.294 6.25
Desviación estándar(std(x)) 0.0285 0.2129 1.2399 1.8526
Desviación estándar(std(x,1)) 0.0271 0.202 1.1763 1.7575

Y por el método de Montecarlo se obtiene los siguientes errores porcentuales si se usa


como solución exacta la del mallado más fino que será de 1202201 puntos aleatorios ver
tabla 4.2 concluyendo que con 300 puntos se llega a una media de errores cercana al 9 %.
Si se continua con otros puntos aleatorios (ver tabla 4.3) se observa que con 180 puntos
la media de los errores pasa el 10 %.
Se concluye del estudio realizado que el numero de puntos a usar es 12221 por nube
de puntos y h= 0.01. Se nota que es mas exacto trabajar con nube de puntos que con
Montecarlo y ademas con h= 0.01 (12221 puntos) la media de los errores da menor que
4.4. DISCRETIZACIÓN DEL MODELO PARA DETERMINAR EL ÁREA ALCANZABLE47

Tabla 4.2: Resultados de los Errores Relativos Porcentuales por Montecarlo


(L1 ,L2 ,d),Pts aleatorios 12221 700 400 300
(0.5,0.4,0.3) 0.36 1 0.95 1.53
(0.4,0.3980,0.3) 0.17 4.11 1.65 6.95
(0.4583,0.3322,0.3) 1.2 0.044 2.84 5.48
(0.3924,0.3924,0.3) 0.9 2.23 4.18 12.01
(0.3435,0.3738,0.2999) 2.28 1.52 2.38 10.12
(0.3999,0.3999,0.2234) 0.49 0.8 2.31 0.14
(0.4934,0.3943,0.2730) 0.0927 2.71 3.41 1.46
(0.2155,0.2543,0.2630) 1.91 0.91 6.51 1.68
(0.1343,0.1534,0.1) 4.1 13.1 16 0
(0.2,0.1,0.2999) 5.94 23.51 33.17 48.51
Media 1.7443 4.9934 7.34 8.788
Desviación estándar(std(x)) 1.9199 7.5202 10.0646 14.5802
Desviación estándar(std(x,1)) 1.8213 7.1343 9.5481 13.8320

Tabla 4.3: Resultados de los Errores Relativos Porcentuales por Montecarlo


(L1 ,L2 ,d),Pts aleatorios 180 80 20 10
(0.5,0.4,0.3) 1.23 6.97 3.37 31.09
(0.4,0.3980,0.3) 7.48 10.84 37.04 3.26
(0.4583,0.3322,0.3) 6.46 5.51 12 29.68
(0.3924,0.3924,0.3) 6.85 7.91 16.21 16.21
(0.3435,0.3738,0.2999) 5.39 3.9 8.77 21.64
(0.3999,0.3999,0.2234) 6.44 1.55 15.7 22.62
(0.4934,0.3943,0.2730) 2.7 6.18 11.19 16.61
(0.2155,0.2543,0.2630) 2.91 2.41 18.07 173.1
(0.1343,0.1534,0.1) 26.7 40 100 140
(0.2,0.1,0.2999) 50.5 122.77 100 197.03
Media 11.666 20.804 32.235 65.124
Desviación estándar(std(x)) 15.4005 37.513 36.779 74.0494
Desviación estándar(std(x,1)) 14.6102 35.588 34.8917 70.2494

el 2 % (entre los dos métodos, pero da más alto por Método de Montecarlo) de manera
que es una buena opción trabajar con ese tipo de mallado y con el Método de nube de
puntos.
48 CAPÍTULO 4. CASOS DE ESTUDIO

4.5. Ajuste del Algoritmo Genético para área alcan-


zable
Se estudiaran los distintos parámetros del Algoritmo Genético cuando cambia PC,
PM, SL, PS y iter que son el porcentaje de crossover (cruce), porcentaje de mutación,
tamaño de string que es la longitud del código binario, tamaño de la población inicial
y número de generación que se ejecuta el Algoritmo Genético respectivamente. Lo que
se hará será variar los distintos parámetros y ejecutar un número de veces el Algoritmo
Genético y verificar cual da el mejor fitness. La observación del fitness sera la clave para
diferenciar los cromosomas y saber cual esta más cerca de la solución optima, en todas
las ejecuciones del Algoritmo Genético tanto para encontrar los parámetros de algoritmo
como para las optimizaciones.

4.5.1. Estudio de PC para área alcanzable


Se realizará un estudio del desempeño del algoritmo para cuando cambia el PC que
es porcentaje de crossover (ver Apéndice). Ahora se fijará los parámetros del Algoritmo
Genético, se comienza con variar PC cuyos parámetros son, PC= [0.6, 0.65, 0.70, 0.75, 0.85, 0.95]
y se fijará (por ahora) PM(3) = 0.05, iter = 250 (generaciones), SL(2) = 12 (largo del
string) y PS(5) = 300 (tamaño de la población) se ejecutará el Algoritmo Genético ciertos
número de veces para cada PC y la que de mejor fitness será la que se tomará para ser
fijada. Del estudio se obtiene como resultado que PC(4) = 0.75 es el más adecuado valor
y también se recomienda PC= 0.95 ya que no se noto cambios significativo. La figura 4.7
muestra la variación del fitness para varios valores de PC de la cual se concluye que el
valor mas alto de fitness se da en 0.75.

Grafico de PC
0.97

0.969

0.968
Valores de Fitness

0.967

0.966

0.965

0.964
0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1
Valores de PC

Figura 4.7: Valores De PC para área alcanzable


4.5. AJUSTE DEL ALGORITMO GENÉTICO PARA ÁREA ALCANZABLE 49

4.5.2. Estudio de Porcentaje de Mutación para área alcanzable


Se realizará un estudio del desempeño del algoritmo para cuando cambia el PM
que es porcentaje de mutación (ver Apéndice). Ahora se fija PC y se varia PM que es
PM= [0.1, 0.07, 0.05, 0.02, 0.01, 0.0] y si se mantiene fijos los mismos valores que en PC y
ejecutando el Algoritmo Genético varia veces, da como resultado PM(3)= 0.05 como valor
más adecuado y también se recomienda PM= 0.02 y PM=0.01. La figura 4.8 muestra la
variación del fitness para varios valores de PM, de la cual se concluye que la de fitness
más alto se da en 0.05.

Grafico de PM
0.9695

0.969

0.9685
Valores de Fitness

0.968

0.9675

0.967

0.9665

0.966
0 0.02 0.04 0.06 0.08 0.1
Valores de PM

Figura 4.8: Valores De PM para área alcanzable

4.5.3. Estudio de Longitud de Código Binario (SL) para área


alcanzable
Antes de comenzar a variar se quiere hacer notar que este parámetro SL, ayuda al
cromosoma a la exactitud que puede tener de la solución optima, entre mayor SL se
puede tener más exactitud. Sin embargo aquı́ no se utilizara la teorı́a, se va a variar el
parámetro, a ver cual da mejor fitness. Ahora nuevamente se deja fijo PC, PM, y lo que
ya se lleva fijo y se varia SL que es SL= [9, 12, 15, 18, 21, 24], y ejecutando el Algoritmo
Genético varias veces, da como resultado más adecuado SL= 15, y también se recomienda
SL= 12 y SL= 24 ya que no se notaron cambios significativos. La figura 4.9 muestra la
variación del fitness para varios valores de SL de la cual se concluye que SL= 15 es el de
mayor fitness.
50 CAPÍTULO 4. CASOS DE ESTUDIO

Grafico de SL
0.97

0.9695

0.969
Valores de Fitness

0.9685

0.968

0.9675

0.967

0.9665
8 10 12 14 16 18 20 22 24
Valores de SL

Figura 4.9: Valores De SL para área alcanzable

4.5.4. Estudio del Tamaño de la población y de generaciones


(iter) para área alcanzable
Ahora se va a estudiar PS que es el tamaño de la población inicial con la que se
comienza en el Algoritmo Genético y iter que es el número de generaciones que se ejecuta
un programa. Para PS que es PS= [50, 100, 150, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
y con los parametros ya fijos, se ejecuta el Algoritmo Genético varia veces, y da como
mejor resultado PS(6)= 400 y también se varia iter y da como más adecuado valor de
iter= 250 y se recomienda cualquier valor mayor que ese valor. La figura 4.10 y 4.11
muestra la variación del fitness para varios valores de PS y iter de la cual se concluye
PS= 400 y iter= 250 son los de mayor fitness.

4.6. Optimización del Área Alcanzable


Luego de repetir varias veces el Algoritmo Genético con los parámetros ya establecidos
que son PC= 0.75, PM= 0.05, SL= 15, PS= 400 y iter= 250 da como máximo

x = 0.499890133365886, 0.399908444471572, 0.000012207403790

y cuyo valor máximo de área es 0.971508059896899 (fitness).


Si se aproxima el valor de x obtenido ejecutando el Algoritmo Genético a 3 decimales
por redondeo el valor de x nuevo será

x = 0.5, 0.4, 0
4.6. OPTIMIZACIÓN DEL ÁREA ALCANZABLE 51

Grafica de valores de la poblacion


0.97

0.9695

0.969

0.9685
Valores del Fitness

0.968

0.9675

0.967

0.9665

0.966

0.9655
100 200 300 400 500 600 700
Valores de la Poblacion

Figura 4.10: Valores De PS para área alcanzable

Grafica de iter(generaciones)
0.971

0.97

0.969
Valores del Fitness

0.968

0.967

0.966

0.965

0.964
100 200 300 400 500 600
Valores de generaciones(iter)

Figura 4.11: Valores De iter(generaciones) para área alcanzable

si se calcula el área en la función aptitud del Algoritmo Genético con este valor da como
área (o fitness)= 0.9720 (no por aproximación por redondeo a 3 decimales del fitness
0.9715, si no evaluándolo en la función aptitud, de hecho con el comando format long
(que muestra más dı́gitos del resultado) de Matlab muestra que da un número mayor el
cual es 0.971999018083626) ası́ da un mejor valor que el que dı́o ejecutando el Algoritmo
Genético, por tanto este es el valor máximo que fijara. Su área alcanzable se puede observar
en figura 4.12, en esta gráfica de área la parte de color azul es el área alcanzable por el
52 CAPÍTULO 4. CASOS DE ESTUDIO

robot paralelo, la linea azul horizontal en la parte de abajo significa que el robot es capaz
de llegar a esos puntos. La gráfica es importante porque muestra los puntos (de color
azul) donde el robot puede llegar al menos por una orientación (los demás puntos no son
alcanzables por el robot).
En la optimización se uso cruce de 1 y de 2 puntos, también se uso diferentes tipos de
selección como ruleta junto a métodos estocástico, estocástico general, método Deb (ver
apendice) y se uso para el mallado Método de nube de puntos.
Las figuras 4.13 es la gráfica de generaciones del Algoritmo Genético muestran como
se encontró el área alcanzable de fitness de 0.9715 (para las varias veces que se ejecuto el
algoritmo) lo cual no es el máximo, sin embargo la gráfica de generaciones para encontrar
ese valor de máximo en el Algoritmo Genético da una idea de la convergencia a ese valor
y del que se encontró aproximando por redondeo (el cual es el máximo) el valor x de
dicho fitness. La gráfica de las generaciones es importante porque muestra como en cada
iteración que es una generación del Algoritmo Genético, el máximo va cambiando de valor.

0.8

0.6

0.4

0.2

0
−0.4 −0.2 0 0.2 0.4 0.6

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8

Figura 4.12: Máxima área alcanzable de fitness 0.9720

4.7. Segundo caso de estudio


No se tiene porque restringir los valores (a un diseñador) de L1 , L2 y d se puede
plantear el problema con mayores rangos como L1 de 0.1 a 1, L2 de 0.1 a 1 y d de 0 a
0.6 (incluyendo los extremos). Y darı́a como máximo x = 1, 1, 0.6 (que es x = L1 , L2 ,d)
y área 1.2 (que es el fitness) es decir cubre todo el espacio de trabajo, pero no es único
el valor x = 0.9, 0.9, 0.5 también cubre todo el espacio de trabajo, estos puede ser robots
paralelos que cubren todo el espacio de trabajo, pero estos valores de máximos suelen ser
robot torpes (a un robot torpe se le llama ası́ si es de de baja dexteridad).
4.8. ESTUDIO DE DEXTERIDAD 53

Maximo
1

0.9

0.8

0.7

Valores de Fitness
0.6

0.5

0.4

0.3

0.2

0.1

0
0 50 100 150 200 250 300 350 400 450
Generaciones

Figura 4.13: Generaciones del Máximo

4.8. Estudio de Dexteridad


4.8.1. Mallado de dexteridad
Para cada punto (L1 , L2 ,d), y cada punto (x,y) del mallado del área de trabajo hecho
para calcular el área alcanzable (o si se usa un nuevo mallado ya que se tiene diferentes
algoritmos) se revisa si satisface lo que la ecuación de los ángulos exige por ejemplo del
ángulo θ1 ecuación 3.67 que a2 + b2 − c2 (que depende de (x,y) y (L1 ,L2 ,d) ) sea mayor o
igual a cero, es decir

d2
(2xL1 − dL1 )2 + (4y 2 L21 ) − (L22 − x2 + (xd) − − y 2 − L21 )2 ≥ 0 (4.4)
4

de manera análoga con el ángulo θ2 esto es:

d2
(2xL1 + dL1 )2 + (4y 2 L21 ) − (L22 − x2 − (xd) − − y 2 − L21 )2 ≥ 0 (4.5)
4

luego para los puntos que satisfacen lo que exige las ecuaciones 4.4 y 4.5, son los puntos
alcanzable, entonces se calcula θ1 , θ2 , θ3 y θ4 (que depende de (x,y) y (L1 ,L2 ,d)), des-
pués se calcula el Jacobiano, si la matriz es invertible se obtiene el valor del número de
condicionamiento (cond(J)) de la matriz jacobiana, si no es invertible colocamos 0 a la
evaluación de ese punto (x,y), si es invertible y se obtiene el número de condición luego
se verifica si es menor que cierto valor numérico, si le asigna 1 si es menor que dicho
valor, si no 0, luego se suman todos los 1 se calcula una área que se definirá como área de
dexteridad que mide la dexteridad en conjunto del mallado para el punto (L1 , L2 ,d). Ver
flujograma que se muestra en la figura 4.14.
54 CAPÍTULO 4. CASOS DE ESTUDIO

Se utiliza la dis-
Se tiene primero cretización(de área
el punto (L1 , L2 ,d) alcanzable) de (x,y)
del espacio de trabajo

Se halla con los puntos


alcanzables θ1 ,θ2 ,θ3
y θ4 (que dependen
de (x,y) y (L1 , L2 ,d))

Se halla la matriz
Jacobiana que de-
pende de θ1 ,θ2 ,θ3 y
θ4 , si es invertible

Se halla el número
de condición de la
matriz Jacobiana

Si el número de con-
dición de la matriz
Jacobiana es menor que
cierto valor ponemos 1,
si no lo es ponemos 0

Sumamos todos lo
1 y hallamos el
área de dexteridad

Figura 4.14: Flujograma del Mallado de Dexteridad


4.8. ESTUDIO DE DEXTERIDAD 55

4.8.2. Discretización del modelo para determinar el Área de


Dexteridad
Se comienza nuevamente calculando los errores porcentuales de varios puntos (como
se hizo en área alcanzable) y concluir con que mallado se puede trabajar que haga el
algoritmo en matlab rápido y verificar si se trabaja con técnica de Montecarlo o Nube de
puntos. Para ello se usará la formula siguiente:
1
P
( cond(J) )
A= (4.6)
Número de puntos total
donde cond(J) es número de condicionamiento de cada punto del mallado (donde esto
tiene sentido) del espacio de trabajo y J es la matriz jacobiana, a esta formula se llamara
indice de dexteridad. La idea de invertir el numero de condición en esta formula, es que se
hará una gráfica de colores que medirá la dexteridad en cada punto de el área alcanzable,
y el número de condición de una matriz puede ser grande, de manera que al hacer el
rango de los valores de colores de [1, cond(J)] es más difı́cil de observar la dexteridad en
un punto, de manera que al invertir se acota y se trabaja en el intervalo de [0, 1] y la
gráfica se observa mejor.
Se usará los mismos 10 puntos (cada punto es un (L1 ,L2 ,d) y se utilizará la formula de
indice de dexteridad para calcular los errores relativos porcentuales, y se usa de nube de
puntos h= 0.0005 como solución exacta, que son 4804401 puntos, la de mallado más fino y
para demás pasos de h, h= 0.001 son 1202201 puntos, h=0.01 son 12221 puntos, h= 0.05
son 525 puntos, h= 0.1 son 143 puntos. Se obtiene por Nube de Puntos los resultados, ver
tabla 4.4 la cual da los errores relativo porcentual de comparar el indice de dexteridad
del mallado mas fino y de la cual se concluye la media y desviación estándar de los 10
puntos.
Se hace la advertencia que no se va optimizar con el indice de dexteridad, se va a opti-
mizar es con el área de dexteridad definida ya en el explicación del mallado de dexteridad.
Lo que sucede es que esta formula no es apropiada calcularle los errores relativos porcen-
tuales, ya que dan grande, aunque numéricamente esta bien son casos atı́picos, hay que
justificar que el error absoluto da grande pero es debido a que la formula depende solo de
número de puntos tanto para nube de puntos como por la técnica de Montecarlo. Ası́ que
se trabajará con el indice de dexteridad y de ahı́ se verá que conclusiones se obtienen
ya que este indice también es una forma de medir la dexteridad, además calculando este
indice se tendrá una gráfica de colores que ayudará a dar una idea de la dexteridad en un
punto (x,y) del espacio de trabajo del robot paralelo.
Por Método de Montecarlo se obtiene (si se usa como solución exacta la de nube de
puntos para h=0.0005) ver tabla 4.5 la cual da los errores relativo porcentual (por el
Método de Montecarlo) de comparar con el indice de dexteridad del mallado mas fino y
de la cual se concluye la media y desviación estándar de los 10 puntos
Se concluye de la tabla 4.4 que la media de h= 0.01 con nube de puntos que son 12221
puntos la media es menor que 1 % es por ello que es una buena opción usar h= 0.01 y de
tabla 4.5 para 12321 la media supera el 4 % es por eso que es más seguro usar nube de
puntos que Montecarlo.
56 CAPÍTULO 4. CASOS DE ESTUDIO

Tabla 4.4: Resultados de los Errores Relativos Porcentuales por nube de puntos
(L1 ,L2 ,d),h h=0.001 h=0.01 h=0.05 h=0.1
(0.5,0.4,0.3) 0.0495 0.54 2.57 6.31
(0.4,0.3980,0.3) 0 0.35 1.49 1.59
(0.4583,0.3322,0.3) 0.0255 0.82 3.39 4.64
(0.3924,0.3924,0.3) 0.0207 0.27 0.0207 1.53
(0.3435,0.3738,0.2999) 0.0206 0.78 0.0825 2.52
(0.3999,0.3999,0.2234) 0.019 0.42 1.35 0.89
(0.4934,0.3943,0.2730) 0.024 0.7 2.59 6.38
(0.2155,0.2543,0.2630) 0 1.59 7.61 20.49
(0.1343,0.1534,0.1) 0.15 2.09 9.77 13.87
(0.2,0.1,0.2999) 0.0597 0.69 ******* *********
Media 0.0369 0.825 3.2081 6.4689
Desviación estándar(std(x)) 0.0439 0.5774 3.3465 6.6112
Desviación estándar(std(x,1)) 0.0416 0.5477 3.1551 6.2331

∗ ∗ ∗ ∗ ∗∗Significa punto atı́pico

Tabla 4.5: Resultados de los Errores Relativos Porcentuales por Montecarlo


(L1 ,L2 ,d),Ptos aleatorios 1203409 12321 625 289 169 121
(0.5,0.4,0.3) 1.9 1.61 1.24 2.85 3.64 3.74
(0.4,0.3980,0.3) 5.22 6.36 7.7 0.8 11.39 4.73
(0.4583,0.3322,0.3) 3.49 2.93 3.11 1.73 5.17 8.86
(0.3924,0.3924,0.3) 5.15 3.43 5.73 4.72 10.06 16.97
(0.3435,0.3738,0.2999) 3.3 3.77 2.68 2.04 4.62 9.61
(0.3999,0.3999,0.2234) 4.43 4.56 3.69 2.45 12.07 9.03
(0.4934,0.3943,0.2730) 2.11 2.16 4.13 2.61 4.58 4.73
(0.2155,0.2543,0.2630) 4.46 5.08 9.96 9.29 10.21 16.14
(0.1343,0.1534,0.1) 1.5 2.98 2.49 9.43 ****** 23.57
(0.2,0.1,0.2999) 1.61 7.64 9.82 ****** ****** *****
Media 3.317 4.052 5.055 3.9911 7.7175 10.82
std(x) 1.462 1.8836 3.1179 3.2187 3.5190 6.7222
std(x,1) 1.387 1.787 2.9579 3.0346 3.2918 6.3377

∗ ∗ ∗ ∗ ∗∗ Significa punto atı́pico


std= Desviación Estándar

4.9. Ajuste del Algoritmo Genético para Dexteridad


4.9.1. Estudio de PC para Dexteridad
Se comienza a variar PC y se fija iter= 200, PM= 0.07, SL= 15 y PS= 300 siendo
PC= [0.6, 0.65, 0.70, 0.75, 0.85, 0.95] los mismo valores presentados en maximizar área al-
4.9. AJUSTE DEL ALGORITMO GENÉTICO PARA DEXTERIDAD 57

canzable. Después de varias ejecuciones del Algoritmo Genético, da como resultado de


valor más adecuado PC= 0.70 y se recomienda PC= 0.85, ya que no se notaron cambios
significativos. La figura 4.15 muestra la variación del fitness para varios valores de PC de
la cual se concluye que el de mayor fitness es 0.70 de PC.

Grafico de PC
0.69

0.68

0.67
Valores de Fitness

0.66

0.65

0.64

0.63
0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1
Valores de PC

Figura 4.15: Valores de PC para Dexteridad

4.9.2. Estudio de Porcentaje de Mutación para Dexteridad


Ahora se fija PC junto a lo ya fijado y se varia PM, siendo PM= [0.1, 0.07, 0.05, 0.02, 0.01, 0.0]
los mismos valores que en área alcanzable. Da como valor más adecuado de PM ejecu-
tando el Algoritmo Genético varias veces PM= 0.1 y se recomienda PM= 0.07. La figura
4.16 muestra la variación del fitness para varios valores de PM de la cual se concluye que
la de mayor fitness es 0.1 de PM.

4.9.3. Estudio de Longitud de Código Binario (SL) para Dexte-


ridad
Ahora se fija PM, PC y se varia SL, siendo SL= [9, 12, 15, 18, 21, 24] los mismos valores
ya presentados en área alcanzable y da ejecutando el Algoritmo Genético varias veces
como valor más adecuado el resultado SL= 15 y se recomienda SL= 18 porque no se
encontró cambios importantes. La figura 4.17 muestra la variación del fitness para varios
valores de SL, de la cual se concluye que la de mayor fitness se da SL= 15.
58 CAPÍTULO 4. CASOS DE ESTUDIO

Grafico de PM
0.69

0.68

0.67
Valores de Fitness

0.66

0.65

0.64

0.63
0 0.02 0.04 0.06 0.08 0.1
Valores de PM

Figura 4.16: Valores de PM para Dexteridad

Grafico de SL
0.695

0.69

0.685

0.68
Valores de Fitness

0.675

0.67

0.665

0.66

0.655

0.65

0.645
8 10 12 14 16 18 20 22 24
Valores de SL

Figura 4.17: Valores de SL para Dexteridad


4.9. AJUSTE DEL ALGORITMO GENÉTICO PARA DEXTERIDAD 59

4.9.4. Estudio tamaño de la población y de generaciones(iter)


para Dexteridad
Se fija PM, PC y SL que son los parámetros ya encontrados y siendo los mismos valores
PS que para área alcanzable que son PS= [50, 100, 150, 200, 300, 400, 500, 600, 700, 800, 900, 1000],
y da ejecutando el Algoritmo Genético varias veces, como mejor resultado PS= 300 y iter
= 300 y también se recomienda PS= 500 y iter= 200 ya que no se encontró cambios
significativos, y no se descarta valores mayores que estos parámetros. La figura 4.18 y
4.19 muestra la variación del fitness para varios valores de iter y PS de la cual se concluye
que la de mayor fitness es 300 de PS y iter en los dos casos respectivamente.

Grafica de iter(Generaciones)
8500

8450
Valores de Fitness

8400

8350

8300

8250
0 50 100 150 200 250 300 350 400
Valores de Generaciones

Figura 4.18: Valores de Generaciones para Dexteridad


60 CAPÍTULO 4. CASOS DE ESTUDIO

Grafica de Valores de la Poblacion


8500

8450

8400
Valores de Fitness

8350

8300

8250

8200
50 100 150 200 250 300 350 400 450 500
Valores de la Poblacion

Figura 4.19: Valores de Población para Dexteridad

4.10. Optimización del Área de Dexteridad primer


caso de estudio
Para encontrar el máximo de área diestra, se usará el método de nube de puntos y
se ejecutará el Algoritmo Genético varias veces, con los parámetros ya establecidos que
son PC= 0.70, PM= 0.1, SL= 15, iter= 300 y PS=300, se utiliza la formula que se llama
área de dexteridad (definida en el mallado de dexteridad) y se verificará si el número
de condición de la matriz jacobiana, es menor que en un cierto valor numérico, que en
este caso se usará 6, y esto va asegurar que el área encontrada sea apreciable porque en
su conjunto los valores tienen buen número de condición, luego ejecutando el Algoritmo
Genético (varias veces) da como resultado

x = 0.3930, 0.3998, 0.0005

donde L1 = 0.3930, L2 = 0.3998 y d= 0.0005, por fitness da como Área diestra=8468.


En la optimización se uso cruce de 1 y de 2 puntos, también se uso diferentes tipos de
selección como ruleta junto a métodos estocástico, estocástico general, método Deb (ver
apendice) y se uso para el mallado Método de nube de puntos.
Calculando el indice de dexteridad, da como área alcanzable 0.8463, y como indice
de dexteridad 0.6117, ver figura 4.20 de área alcanzable y figura 4.21 el área diestra, en
la primera figura en color azul muestra los puntos alcanzables (los demás puntos no son
alcanzables por el robot) y en la última figura mientra se acerca a 1 es decir al color rojo,
es buena dexteridad, y si se acerca a 0 es decir al color azul, es mala dexteridad.
4.11. OPTIMIZACIÓN DEL ÁREA DE DEXTERIDAD DEL SEGUNDO CASO DE ESTUDIO61

0.8

0.6

0.4

0.2

0
−0.4 −0.2 0 0.2 0.4 0.6

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8

Figura 4.20: Gráfica del área alcanzable

0.8

0.6

0.4

0.2

0
−0.4 −0.2 0 0.2 0.4 0.6

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8

Figura 4.21: Gráfica del área de Dexteridad primer caso de estudio

4.11. Optimización del Área de Dexteridad del se-


gundo caso de estudio
El otro problema de estudio es: L1 , L2 esta entre 0.1 y 1 y d está entre 0 y 0.6
(incluyendo los valores extremos), exigiendo que el número de condición de la matriz
jacobiana sea menor que el valor numérico 3 (es decir exigiendo más que el anterior) da
62 CAPÍTULO 4. CASOS DE ESTUDIO

como máximo ejecutando el Algoritmo Genético

x = 0.6184, 0.6753, 0.0052

donde L1 = 0.6184, L2 = 0.6753 , d= 0.0052 y área de dexteridad= 12157 (que es el


fitness).
En la optimización se uso cruce de 1 y de 2 puntos, también se uso diferentes tipos de
selección como ruleta junto a métodos estocástico, estocástico general, método Deb (ver
apendice) y se uso para el mallado Método de nube de puntos.
Ahora si se trabajará con el indice de dexteridad para ver la figura del área alcanzable
y el área de dexteridad, da como área alcanzable 1.1943 y como indice de dexteridad
0.6666. En la figura 4.22 se muestra en color azul los puntos alcanzables y se nota que
este valor de máximo cubre bastante área, esto es debido a que los rangos de los eslabones
se ampliaron. La figura 4.23 muestra que cuando los puntos se acerca a 1 al color rojo los
puntos tendrá mayor dexteridad y cuando se acerca a 0 es decir al color azul los puntos
tendrán menos dexteridad.

0.8

0.6

0.4

0.2

0
−0.4 −0.2 0 0.2 0.4 0.6

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8

Figura 4.22: Área alcanzable de segundo caso de estudio

4.12. Algunas aplicaciones


Las siguientes figuras muestran algunas aplicaciones las cuales puede desempeñar el
robot paralelo que se esta estudiando en esta tesis (sin embargo, no son como el robot
paralelo en estudio de esta tesis).
La figura 4.24 muestra una mesa de corte de plasma. La figura 4.25 muestra una mesa
de corte con láser. La figura 4.26 muestra una mesa de corte textil con láser. La figura
4.27 muestra una mesa de corte cartesiana.
4.13. ROBOT PARALELO EN ESTUDIO 63

0.8

0.6

0.4

0.2

0
−0.4 −0.2 0 0.2 0.4 0.6

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8

Figura 4.23: Área de Dexteridad de segundo caso de estudio

Figura 4.24: Mesa de corte de plasma

4.13. Robot paralelo en estudio


Los siguiente robots son como el que se esta estudiando en esta tesis, en figura 4.28
en este caso el robot paralelo en estudio esta dibujando, pero por lo dicho en la sección
anterior, puede tener en elemento terminal un cañón láser, o un chorro de plasma o otra
herramienta. Otra figura del robot paralelo en estudio en una mesa de corte ver figura
64 CAPÍTULO 4. CASOS DE ESTUDIO

Figura 4.25: Mesa de corte con láser

Figura 4.26: Mesa de corte textil con láser

4.29. Otra figura del robot paralelo en estudio en una mesa de corte ver figura 4.30. Y
una última figura del robot paralelo en estudio en una mesa de corte ver figura 4.31.

4.14. Comprobación de resultados


Para comprobar los resultados usaremos los Algoritmos Genéticos del programa de
Matlab (ya que este programa contiene Algoritmos Genéticos).
Caso 1 Optimización de área alcanzable
Ejecutando el Algoritmo Genéticos del programa para los rangos del caso 1, L1 entre
0.1 y 0.5, L2 entre 0.1 y 0.4, y d entre 0 y 0.3 (incluyendo los extremos) da como resultado
de la optimización
L1 = 0.5
L2 = 0.4
d=0
4.14. COMPROBACIÓN DE RESULTADOS 65

Figura 4.27: Mesa de corte cartesiana

Figura 4.28: Robot paralelo en estudio dibujando

fitness(valor en la función para área alcanzable)=0.9720.


Lo cual no solo comprueba el resultado que da en caso 1, sino además da el mismo
valor. La gráfica de área alcanzable no se muestra ya que da el mismo valor por tanto ya
fue graficada en esa sección.

Caso 1 Optimización del área de dexteridad


Con los mismos valores de rangos de sección anterior para L1 , L2 , d da como resultado
ejecutando el Algoritmo Genético
L1 = 0.5000
L2 = 0.4000
d=0.001953125
66 CAPÍTULO 4. CASOS DE ESTUDIO

Figura 4.29: Robot paralelo en estudio en una mesa de corte

Figura 4.30: Robot paralelo en estudio en una mesa de corte

fitness (área de dexteridad)=8482.


Se concluye que comprueba el resultado que dio en la optimización del primer caso
de estudio de dexteridad se nota que tiene la misma tendencia del valor del fitness, pero
además da un mejor valor. La gráfica 4.32 muestra como cambia el máximo en cada
iteración.
Si calculamos con la formula de indice dexteridad para ver la gráfica de área alcanzable
y de dexteridad da como resultado
Area(alcanzable)= 0.9703
Indice de dexteridad= 0.5031
4.14. COMPROBACIÓN DE RESULTADOS 67

Figura 4.31: Robot paralelo en estudio en una mesa de corte

Grafica del maximo


8482

8480

8478

8476
Fitness

8474

8472

8470

8468
0 10 20 30 40 50
Generaciones

Figura 4.32: Gráfica como cambia el Máximo de dexteridad caso 1 en cada iteración.

La gráfica de área alcanzable para estos valores se muestra en figura 4.33 y la gráfica
de dexteridad se muestra en la figura 4.34. Note que el indice de dexteridad es menor que
el habı́a dado en el resultado de la optimización de dexteridad en el caso 1 pero esto ya
se explicado porque sucede esto, es debido a que esta formula no trabaja en conjunto de
los puntos mallado, fue por eso que no se uso para la optimización.
Caso 2 área de dexteridad
Ejecutando el Algoritmo Genéticos del programa para los rangos del caso 2, L1 entre
68 CAPÍTULO 4. CASOS DE ESTUDIO

0.8

0.6

0.4

0.2

0
−0.4 −0.2 0 0.2 0.4 0.6

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8

Figura 4.33: Gráfica área alcanzable caso 1 dexteridad.

0.8

0.6

0.4

0.2

0
−0.4 −0.2 0 0.2 0.4 0.6

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8

Figura 4.34: Gráfica de dexteridad caso 1

0.1 y 1, L2 entre 0.1 y 1, y d entre 0 y 0.6 (incluyendo los extremos) da como resultado
de la optimización
L1 = 0.797591117520500
L2 = 0.843839515106662
d=0.002780534480440
fitness(área dexteridad)=12182.
El resultado dado por el programa Matlab comprueba los resultados obtenidos, y el
4.15. DISCUSIÓN DE ALGUNOS RESULTADOS 69

valor del fitness tiene la misma tendencia. Sin embargo da un mejor resultado. La gráfica
del máximo en cada iteración se muestra en figura 4.35

4 Grafica del maximo


x 10
1.22

1.21

1.2
Fitness

1.19

1.18

1.17

1.16
0 10 20 30 40 50
Generaciones

Figura 4.35: Gráfica de como cambia el máximo en cada iteración del caso 2

Para ver la gráfica de área de dexteridad se usa la formula de indice de dexteridad y


da como resultados
Área(Alcanzable)= 1.1962
Indice de dexteridad= 0.5405

La gráfica de área alcanzable se muestra en figura 4.36 y la gráfica del área de dexte-
ridad se muestra en la figura 4.37. Note que esta última gráfica puede parecer con menos
dexteridad en conjunto, que la figura 4.23 (segundo caso de dexteridad) pero esto no es
cierto lo que pasa es que existe un detalle de esta gráfica es que la barra de colores en 0.4
todavı́a es de color azul, mientra que en la otra en 0.2 el color azul ya termina, es decir las
barras de colores no son iguales en el tamaño del paso de un color a otro. De hecho con
una inspección de la comparación de los dos gráficos más detallada de la barra de colores
las gráficas son muy parecidas.

4.15. Discusión de algunos resultados


De los resultados obtenidos se puede concluir que:

1. Los cuadros de los errores porcentuales mostró que trabajar con un mallado tan fino
no tiene importancia ya que hace más lento el algoritmo. En el cuadro se muestra
que trabajar con un h= 0.01 (que son 12221 puntos) la media da menor que 2 %
entre las dos técnicas, nube de puntos como de Montecarlo (dando más alto en esta
70 CAPÍTULO 4. CASOS DE ESTUDIO

0.8

0.6

0.4

0.2

0
−0.4 −0.2 0 0.2 0.4 0.6

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8

Figura 4.36: Gráfica de área alcanzable caso 2

0.8

0.6

0.4

0.2

0
−0.4 −0.2 0 0.2 0.4 0.6

0.4 0.5 0.6 0.7 0.8 0.9

Figura 4.37: Gráfica de área dexteridad caso 2

ultima técnica), de esta manera este tamaño de paso h= 0.01 es un valor con la cual
se puede trabajar y se disminuye el trabajó de computo de tiempo computacional.

2. En la dexteridad se vió que si se trabaja con el indice dexteridad individualmente en-


tonces valores pequeños de (L1 , L2 ,d) tenı́an gran dexteridad, esto se observó cuando
se hacı́an los cuadros de errores porcentuales de dexteridad, esto ocurrió porque no
se tomaba en cuenta el conjunto del puntos del mallado en conjunto, es por ello que
se introdujo el área de dexteridad que fue con la que se optimizo.
4.15. DISCUSIÓN DE ALGUNOS RESULTADOS 71

3. Es importante tener en cuenta el marco teórico para el entendimiento de los códigos


computacionales.

4. Comprobado en computadoras el Algoritmo Genético (que se presenta en el apéndi-


ce) se puede volver muy lento (sobre todo en calculo de la dexteridad) si el mallado
es muy fino es por eso que se debe trabajar teniendo en cuenta un error porcentual
de la solución exacta.

5. El previo estudio de los parámetros del Algoritmo Genético como son porcentaje
de cruce PC, porcentaje de mutación PM, tamaño del string SL, junto número
del tamaño de la población inicial PS y del número de iter (generaciones) es muy
importante ya que disminuye el trabajó porque luego a la hora de optimizar se puede
volver tedioso, porque hay que tomar en cuenta que el Algoritmo Genético también
tiene distintos operadores con variaciones.

6. En el estudio hecho en esta tesis se demuestra en el capitulo 4 que el segundo caso


de estudio en optimización de dexteridad dio un mejor resultado que el primer caso
de estudio.
72 CAPÍTULO 4. CASOS DE ESTUDIO
Capı́tulo 5

Conclusiones

5.1. Conclusiones
La creciente demanda de los Robot Paralelos por el sector industrial, ha permitido que
entes académicos se interesen en el estudio de métodos para resolver problemas actuales
en este tipo de robot debido a la complejidad en su topologı́a, ası́ como profundizar en
los diferentes temas de estudio como su espacio de trabajo.
En esta tesis se optimizó el espacio de trabajo diestro utilizando algoritmos evolutivos
(Algoritmos Genéticos).
En el presente trabajo se presentó uno de los problemas de los robot paralelos que es
su poco espacio alcanzable que se sabe que es pequeño siendo uno de las pocas virtudes
de este tipo de robot.
Esta tesis se presentó primero que todo, una introducción de los temas abordados, se
abordo primero que todo la parte teórica correspondiente a Algoritmo Genético y como
segunda parte la de cinemática, se mostró ası́ el problema de cinemática inversa con sus
respectivas ecuaciones que ayudaran ha hacer algunos algoritmos computacionales.
Se mostró como uno de los aporte de esta tesis, una ruta de como abordar el tema de
maximizar el espacio alcanzable y de como maximizar el espacio diestro perdiendo menos
espacio posible es decir un espacio apreciable alcanzable y de buena dexteridad.
Se enseñó un camino de como ajustar los distintos parámetros del Algoritmo Genético
para la convergencia del máximo.
El Algoritmo Genético maximiza las dimensiones del diseño del robot paralelo. Pri-
mero se presentó rangos de poco limite y después un segundo ejemplo con rangos más
grandes para no limitar al diseñador del Robot Paralelo. Se mostró una forma de trabajar
en conjunto de como maximizar el espacio de dexteridad con lo que definimos área de
dexteridad que fue el indice con el que se optimizo.

5.2. Recomendaciones
1. Se deja como futuro trabajo desarrollar las ecuaciones de cinemáticas para un robot
paralelo espacial.

73
74 CAPÍTULO 5. CONCLUSIONES

2. Desarrollar la función objetivo (o código) del Algoritmo Genético para un ejemplo


de un robot paralelo espacial, para el área alcanzable, como para la de área de
dexteridad.

3. Se deja como futuro trabajo una aplicación de máxima área alcanzable y máxima
área de dexteridad, para un robot paralelo espacial.

4. Incluir aspectos dinámicos con fines de minimizar el consumo energético del robot.
Apéndice A

Solución algebraica por reducción a


polinomios

Hay otra forma de resolver la ecuación trigonométrica

c = a cos(θ) + b sin(θ) (A.1)

si se hace la siguientes sustituciones se produce una expresión en termino de una sola


variable u:
θ
u = tan( ) (A.2)
2
1 − u2
cos(θ) = (A.3)
1 + u2
2u
sin(θ) = (A.4)
1 + u2
si se hace estas sustituciones en la ecuación (A.1) se llega a

a(1 − u2 ) + 2bu = c(1 + u2 ) (A.5)


desarrollando y juntando las potencias de u,

(a + c)u2 − 2bu + (c − a) = 0 (A.6)

se resuelve mediante la formula cuadrática,



b ± b 2 + a2 − c 2
u= (A.7)
a+c
en consecuencia √
b± b 2 + a2 − c 2
θ = 2 arctan( ). (A.8)
a+c

75
76 APÉNDICE A. SOLUCIÓN ALGEBRAICA POR REDUCCIÓN A POLINOMIOS
Apéndice B

Código de AG

B.1. Algoritmo Genético (AG)


Un AG es un algoritmo para optimización global basado en la busqueda heuristica
imitando el proceso de selección natural. Los algoritmos que se presentan están hecho con
el programa Matlab. Algunos conceptos de la AG incluyen:

B.2. Encoding (Codificación)


En la AG las variables del problema están codificadas en forma binaria. Las variables
reales se denominan forma fenotipo y la codificación binaria es la forma genotipo. Cada
variable se codifica con una cadena de longitud (l) que contiene ceros y unos. La población
inicial se genera aleatoriamente de acuerdo con la siguiente función

1 function pop=encoding(popsize,stringlength,dimension)
2 pop=(round(rand(popsize,dimension*stringlength+dimension+2)));

B.3. Decoding (Descodificación)


La función objetivo se evalúa para cada miembro de la población. Para evaluar la
función, primero se descifra la forma genotipo a la forma fenotipo, y en segundo lugar, se
encuentra el valor en la función objetivo para cada miembro de la población. Esto se hace
con el siguiente código

1 function [pop]=decoding(pop,stringlength,dimension,x bound)


2 popsize=size(pop,1);
3 temp=2.ˆ(stringlength−1:−1:0);
4 for i=1:dimension
5 bound(i)=(x bound(i,2)−x bound(i,1))/(2ˆstringlength−1);
6 end
7 for i=1:popsize

77
78 APÉNDICE B. CÓDIGO DE AG

8 for j=1:dimension
9 m(:,j)=pop(i,stringlength*(j−1)+1:stringlength*j);
10 end
11 x=temp*m;
12 x=x.*bound+x bound(:,1)';
13 pop(i,dimension*stringlength+1:dimension*stringlength+dimension)=x;
14 y=funname(x);
15 pop(i,dimension*stringlength+dimension+1)= y.f;
16 pop(i,dimension*stringlength+dimension+2)=−y.c;
17 end

Tenga en cuenta que las dos últimas columnas de la variable pop consisten en el valor
de la función objetivo y la evaluación de la función de restricción. Ası́, en este paso, las
restricciones pueden ser incluidas para resolver problemas de optimización restringidos

B.4. Selection (Selección)


Con el fin de decidir qué miembro de la generación actual tomará parte de la nueva
generación, el fitnees de cada miembro de la población se encuentra de la siguiente manera:

1 function selected=selection(pop,popsize,stringlength,dimension,minf)
2 popsize new=size(pop,1);
3 fitness=pop(:,dimension*stringlength+dimension+1) ...
+pop(:,dimension*stringlength+dimension+2);
4 if min(fitness)<0
5 fitness=fitness+minf*abs(min(fitness));
6 end
7 fitness=fitness./sum(fitness);
8 fitness=cumsum(fitness);

Observe que en el código anterior, la función objetivo se desplaza por un valor igual a
minf. Por ejemplo, si minf = 1.01 la función se desplaza 1 % del valor mı́nimo de la función
de fitnees (por lo tanto, la función de fitnees evita tener valores negativos)
En este proyecto se implementaron tres métodos de selección. La primera es la ruleta,
método estocástico, con dos punteros. Esto es

1 case 'stochastic'
2 for i=1:popsize new/2
3 pointer=0.5*rand+(0:0.5:0.5)';
4 selected(2*i−1,:)=pop(find(fitness ≥ pointer(1),1),:);
5 selected(2*i,:)=pop(find(fitness ≥ pointer(2),1),:);
6 end

El segundo enfoque es el Método Universal Estocástico. En un turno de la rueda se


seleccionan todos los miembros de la población que van a estar en la piscina de aparea-
miento. Esto se hace mediante la inclusión del mismo número de punteros en la rueda de
la ruleta. Esto es
B.4. SELECTION (SELECCIÓN) 79

1 case 'general stochastic'


2 pointer=rand*1/(popsize new)+(0:1/popsize new:1−1/popsize new)';
3 for i=1:popsize new
4 selected(i,:)=pop(find(fitness ≥ pointer(i),1),:);
5 end
6 end

El tercer enfoque se basa en el método Deb donde se aplica una selección de torneos
binarios con un conjunto de reglas para desarrollar el conjunto de acoplamiento para la
nueva generación. Las siguientes reglas se aplican para comparar dos individuos:

1. Una solución factible siempre es preferible a una inviable.


2. Entre dos soluciones factibles, se prefiere el que tiene un mejor valor de función
objetivo.
3. Entre dos soluciones inviables, se prefiere el que tenga menor violación de restricción

El código para aplicar este enfoque se puede escribir de la siguiente manera:

1 case 'deb'
2 for i=1:popsize new
3 j=find(fitness≥rand,1);
4 k=find(fitness≥rand,1);
5 f1=pop(j,dimension*stringlength+dimension+1);
6 f2=pop(k,dimension*stringlength+dimension+1);
7 c1=pop(j,dimension*stringlength+dimension+2);
8 c2=pop(k,dimension*stringlength+dimension+2);
9
10 if (c1==0 && c2==0) % both are feaseble
11 if f1>f2
12 selected=[selected competitor1];
13 else
14 selected=[selected competitor2];
15 end
16 end
17 if (c16=0 && c26=0) % both are unfeaseble
18 if abs(c1)<abs(c2)
19 selected=[selected competitor1];
20 else
21 selected=[selected competitor2];
22 end
23 end
24 if (c1==0 && c2==1) % both are feaseble
25 selected=[selected competitor1];
26 end
27 if (c1==1 && c2==0)
28 selected=[selected competitor2];
29 end
30 end
80 APÉNDICE B. CÓDIGO DE AG

B.5. Crossover (Cruce)


Una vez que se obtiene la piscina de acoplamiento, se realiza el cruce. En este código se
realizaron dos métodos de cruce: 1) cruce de punto único y 2) cruce de múltiples puntos.
Esto es:

1 function [child1,child2]=cross running(parent1,parent2,stringlength, ...


2

3 if rand < pc
4 cross=2;
5 if cross==1
6 cpoint=round(rand*(2*stringlength−1))+1;
7 child1=[parent1(:,1:cpoint) ...
parent2(:,cpoint+1:stringlength*dimension)];
8 child2=[parent2(:,1:cpoint) ...
parent1(:,cpoint+1:stringlength*dimension)];
9 end
10 if cross==2
11 cpoint=round((stringlength−1)*rand(1,dimension))+1;
12 for j=1:dimension
13 child1((j−1)*stringlength+1:j*stringlength)=[parent1((j−1)* ...
14 stringlength+1:(j−1)*stringlength+cpoint(j)) parent2((j−1)* ...
15 stringlength+cpoint(j)+1:j*stringlength)];
16 child2((j−1)*stringlength+1:j*stringlength)=[parent2((j−1)* ...
17 stringlength+1:(j−1)*stringlength+cpoint(j)) parent1((j−1)* ...
18 stringlength+cpoint(j)+1:j*stringlength)];
19 end
20 end
21 else
22 child1=parent1;
23 child2=parent2;
24 end
25 end

B.6. Mutation (Mutación)


De acuerdo con la probabilidad de mutación, un gen en algunos de los miembros de la
población se cambia de 1 a 0 o viceversa, por lo que se realiza la mutación. Esto es:

1 function new pop=mutation(new pop,stringlength,dimension,pm)


2 new popsize=size(new pop,1);
3 for i=1:new popsize
4 if rand<pm
5 mpoint=round(rand(1,dimension)*(stringlength−1))+1;
6 for j=1:dimension
7 new pop(i,(j−1)*stringlength+mpoint(j))=1−new pop(i,(j−1) ...
8 *stringlength+mpoint(j));
9 end
B.6. MUTATION (MUTACIÓN) 81

10 end
11 end

Como futuros trabajos recomendamos usar los métodos de Niching extienden AG sim-
ples promoviendo la formación de subpoblaciones estables en el vecindario de soluciones
óptimas. En este proyecto se implementa el método de compartición. El método consiste
en buscar en el paisaje reduciendo la rentabilidad en regiones densamente pobladas.
82 APÉNDICE B. CÓDIGO DE AG
Apéndice C

Algoritmo para Ejecución de la


Optimización

C.1. MainGA
Programa principal desde donde se ejecuta el Algoritmo Genético es:

1 clc
2 clear
3
4 global equation;
5 global selection method;
6 global niching;
7 global sigma;
8 tic
9 equation='F1';
10 selection method='general stochastic' % a.−general stochastic ...
b.−stochastic c.−dep tournament deb constriants
11 %Parameters
12 switch equation
13

14
15
16
17 case 'F1'
18 % Funcion espacio de trabajo
19 x bound=[0.1 0.5;0.1 0.4;0 0.4];
20 dimension=length(x bound(:,1));
21 xn=[0 0];
22 plotf=0;
23
24 end
25 Iter=40;
26 PC=[0.6 0.65 0.70 0.75 0.85 0.95];
27 PM=[0.1 0.07 0.05 0.02 0.01 0.0];
28 PS=[50 100 150 200 300 400 500 600 700 800 900 1000];

83
84 APÉNDICE C. ALGORITMO PARA EJECUCIÓN DE LA OPTIMIZACIÓN

29 SL=[9 12 15 18 21 24];
30 d=length(PC);
31 minF=[1.005 1.01 1.015 1.02 1.03 1.05];
32 %% % % % % % % % % % % % % % %
33 %lo puse yo para que no pase por niching
34 alpha=[1 10 20 50 100 1000];
35 niching=0; % puse 0 para que no pase en programa selection
36 Sigma=[0.05 0.1 0.3 0.5 0.7 1]*abs((x bound(1,1)−x bound(1,2))); %=1;
37 %=1;
38 for l=1:1
39 for j=1:1
40 maxIter=Iter;
41 popsize=PS(6);
42 stringlength=SL(3);
43 pm=PM(3);
44 pc=PC(4);
45 minf=minF(4);
46 sigma=Sigma(1,5);
47 %Generation first population
48 pop=encoding(popsize,stringlength,dimension);
49 [pop]=decoding(pop,stringlength,dimension,x bound);
50 %*********************
51 if plotf==1
52 figure(1)
53 nptos=20;
54 hold off
55 [xt,yt]=meshgrid(x bound(1,1)*1.1:
56 (x bound(1,2)−x bound(1,1))/(nptos−1):x bound(1,2)*1.1);
57 zt=−150.*xt − 175.*yt; %xt.ˆ2−yt; %f9 +1.75.*xt +1.25.*yt;
58
59 contour(xt,yt,zt,50)
60 mesh(xt,yt,zt)
61 hold on;
62 h1=plot3(pop(:,stringlength*2+1), ...
pop(:,stringlength*2+2),−pop(:,stringlength*2+3),'*');
63 axis([x bound(1,1)*1.1 x bound(1,2)*1.1 x bound(1,1)*1.1 ...
x bound(1,2)*1.1 1.1*min(min(zt)) 1.1*max(max(zt))]);
64 % view(0,90);
65 end
66 npop=selection(pop,popsize,stringlength,dimension,minf);
67 new pop=cross over(npop,popsize,stringlength,dimension,pc);
68 pop=mutation(new pop,stringlength,dimension,pm);
69 [pop]=decoding(pop,stringlength,dimension,x bound);
70 xp(1,:)=min(−pop(:,stringlength*dimension+1:
71 stringlength*dimension+dimension));
72 f(j,1)=max(pop(:,stringlength*dimension+dimension+1)); % estaba ...
min(−......)
73 fm(j,1)=mean(−pop(:,stringlength*dimension+dimension+1));
74 if plotf==1
75 set(h1,'XData',pop(:,stringlength*2+1),'YData',
76 pop(:,stringlength*2+2),'ZData',−pop(:,stringlength*2+3))
77 pause(0.0001);
78 end
C.2. FUNNAME (EVALUACIÓN EN LA FUNCIÓN OBJETIVO) 85

79 k=1;
80 i=2;
81 while (k<maxIter && i<maxIter)
82 npop=selection(pop,popsize,stringlength,dimension,minf);
83 new pop=cross over(npop,popsize,stringlength,dimension,pc);
84 pop=mutation(new pop,stringlength,dimension,pm);
85 [pop]=decoding(pop,stringlength,dimension,x bound);
86 xp(i,:)=min(−pop(:,stringlength*dimension+1:
87 stringlength*dimension+dimension));
88 f(j,i)=max(pop(:,stringlength*dimension+dimension+1));
89 fm(j,i)=mean(pop(:,stringlength*dimension+dimension+1));
90 if plotf==1
91 set(h1,'XData',pop(:,stringlength*2+1),'YData',
92 pop(:,stringlength*2+2),'ZData',−pop(:,stringlength*2
93 +3))
94 pause(0.0001);
95 end
96 if abs(f(i)−f(i−1))==0
97 k=k+1;
98 end
99
100 [ft(j),x(j,:)]=result(pop,stringlength,dimension); % esto para ...
saber resultado de cada generacion
101 %% % % % % % % % % % % % % % esto
% % % lo hice yo
102 % Sge=zeros(popsize,4); % matriz de valores funcion aptitud y ...
coordenadas
103 Sge(i,1)=ft(j);
104 Sge(i,2:4)=x(j,:);
105 i=i+1;
106 end
107 % hago el archivo.mat para saber los valores de cada generacion es
108 % decir la matriz Sge
109 save generacion.mat Sge
110 [ft(j),x(j,:)]=result(pop,stringlength,dimension)
111
112
113 end
114 label=num2str(l);
115 label2=['f2 generalStochasticPMuta',label,'.mat'];
116 save(label2);
117 end
118
119 [A]=main workspace2(x) % esto es para que grafique el area de espacio ...
de trabajo y diestro

C.2. Funname (evaluación en la función objetivo)


Se usa esta función en Matlab para evaluar el punto x= (L1 , L2 ,d) en la función
objetivo.
86 APÉNDICE C. ALGORITMO PARA EJECUCIÓN DE LA OPTIMIZACIÓN

1 function y=funname(x)
2 global equation;
3 global penalty;
4 switch equation
5
6
7
8
9 case 'F1'
10 [A]=main workspace(x);
11 y.f=A;
12 % y.f=fsuma;
13 % Penalizacion
14 y.c=0;
15 end

C.3. Main workspace


Se usa esta función en Matlab como función objetivo para hallar el área alcanzable.

1 function [A]=main workspace(x)


2

3 clear a
4 clear b
5 clear c
6 clear A
7 clear v
8

9
10 a=x(1);
11 b=x(2);
12 d=x(3);
13
14

15
16 xp=(−0.6:0.01:0.6);
17 yp=(0:0.01:1);
18
19 %Nube de puntos
20 p=0;
21 for j=1:length(xp)
22 for i=1:length(yp)
23 v=workspace 5R(xp(j),yp(i),a,b,d);
24 if(v==0)
25 p=p+1;
26 else
27
28 end
29 end
C.3. MAIN WORKSPACE 87

30 end
31 A=(p*(1.2)/12221);
32 end

Otra forma para hallar la dexteridad con el indice de dexteridad

1 function [fsuma]=main workspace(x)


2
3
4 a=x(1);
5 b=x(2);
6 d=x(3);
7

8
9
10
11
12 xp=(−0.6:0.01:0.6);
13 yp=(0:0.01:1);
14
15
16 for j=1:length(xp)
17 % l=1;
18 for i=1:length(yp)
19 Z(j,i)=workspace 5R(xp(j),yp(i),a,b,d);
20 X(j,i)=xp(j);
21 Y(j,i)=yp(i);
22 end
23 end
24
25 % calculamos el area
26 [n1,m1]=size(Z);
27 n56=n1*m1;
28 R1=1−Z;
29
30 A=(sum(sum(R1))*(1.2)/n56);
31

32
33
34
35 figure(1);
36 hold on;
37 contourf(X,Y,Z,5);
38 colorbar;
39 colorbar('location','SouthOutside')
40 colormap('winter')
41 axis( [−0.6 0.6 0 1]);
42
43

44 %% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
45 Z2=Z;
46 X2=X;
88 APÉNDICE C. ALGORITMO PARA EJECUCIÓN DE LA OPTIMIZACIÓN

47 Y2=Y;
48 s(1:length(Z(:,1)))=1;
49 for i=1:length(Z(:,1))
50 if (sum(Z(i,:))==(length(Z(1,:))))
51 s(i)=0;
52 end
53 end
54

55 dummy=find(s==0);
56
57 Z2(dummy,:)=[];
58 X2(dummy,:)=[];
59 Y2(dummy,:)=[];
60

61 %Veamos cual es el 20 % de numero de filas de Z


62 n21=size(Z);
63 m=n21(1)*0.20;
64 e=round(m);
65 %Hacemos otro chequeo sacando las filas que tienen un solo 0
66 s2(1:length(Z2(:,1)))=1;
67 for i=1:length(Z2(:,1))
68 if (sum(Z2(i,:))==(length(Z2(1,:))−1))
69 s2(i)=0;
70 end
71 end
72

73 dummy2=find(s2==0);
74
75 Z2(dummy2,:)=[];
76 X2(dummy2,:)=[];
77 Y2(dummy2,:)=[];
78

79 % Ahora verificamos como quedo la matriz es decir si es un espacio de


80 % trabajo apreciable
81 n34=size(Z2);
82
83 % Comparamos
84 n34(1);
85 e;
86 if n34(1)≤e % yo le agregue una fila mas le exijo mas
87 fsuma=0;
88 else
89 s=[];
90 for j=1:length(Z2(:,1))
91 z=Z2(j,:);
92 x=X2(j,1);
93 y=Y2(j,:);
94 s=find(Z2(j,:));
95 z(s)=[];
96 y(s)=[];
97 max y=max(y);
98 min y=min(y);
99 W(j,1:3)=[x min y max y];
C.3. MAIN WORKSPACE 89

100
101 end
102
103
104 %W([1 length(W(:,1))],:)=[];
105 Nptos=length(W(:,1));
106 %X3=zeros(Nptos,Nptos)
107 %Y3=zeros(Nptos−1,Nptos);
108
109
110 for i=1:Nptos
111 step=(W(i,3)−W(i,2))/(Nptos−1);
112
113 X3(i,1:Nptos)=W(i,1);
114 % W(i,2):step:W(i,3);
115
116 Y3(i,1:Nptos)=(W(i,2):step:W(i,3));
117 end
118
119

120
121 for j=1:length(X3(:,1))
122 for i=1:length(Y3(1,:));
123 Z3(j,i)=jaco5R(X3(j,i),Y3(j,i),a,b,d);
124 end
125 end
126
127 n4=length(find(Z3));
128 fsuma=(sum(sum(Z3)))/n4;
129
130
131 figure(2);
132 hold on;
133 contourf(X3,Y3,Z3,6);
134 colorbar;
135 colorbar('location','SouthOutside')
136 axis( [−0.6 0.6 0 1]);
137 colormap('jet')
138
139 end
140 end

Otra forma para hallar el área dexteridad (y no el indice)

1 function [fsuma]=main workspace(x)


2
3
4
5 a=x(1);
6 b=x(2);
7 d=x(3);
8
90 APÉNDICE C. ALGORITMO PARA EJECUCIÓN DE LA OPTIMIZACIÓN

9
10

11 xp=(−0.6:0.01:0.6);
12 yp=(0:0.01:1);
13
14
15 for j=1:length(xp)
16 %l=1;
17 for i=1:length(yp)
18 Z(j,i)=workspace 5R(xp(j),yp(i),a,b,d);
19 X(j,i)=xp(j);
20 Y(j,i)=yp(i);
21 end
22 end
23
24
25 [m,n]=size(Z);
26 Z3=zeros(m,n); % contruyo la matriz completa incluyendo los que ...
tienen 1
27 Z12=1−Z;
28 for j=1:length(Z3(:,1))
29 [q1,q2]= find(Z12(j,:)); % encuentro los valores distintos de
30 %0 es decir valen 1(los indices de ...
q2 bien
31 % a q1 le pone 1 no me sirve
32 [g12,h12]=size(q1);
33 if (g12*h12 6= 0) % por si es vacio
34 for p=1:length(q1)
35 Z3(j,q2(p))=jaco5R(X(j,q2(p)),Y(j,q2(p)),a,b,d);
36 % Z3 ya esta construidad solo cambia valores
37 end
38 else
39 end
40 end
41
42
43 fsuma=sum(sum(Z3)) ;
44

45 end

C.4. Workspace5R
Es sub-función del programa anterior y sirve para hallar que puntos del mallado son
alcanzable.

1
2 function [v]=workspace 5R(xp,yp,a,b,d)
3
4 v=0;
5
C.5. JACOB5R 91

6 fac(1)= (4 * yp ˆ 2 * a ˆ 2) + ((2 * xp * a + d * a) ˆ 2) − (b ˆ 2 − ...


(xp ˆ 2)
7 − (xp * d) − (d ˆ 2) / 0.4e1 − (yp ˆ 2) − (a ˆ 2)) ˆ 2;
8 fac(2)= (4 * yp ˆ 2 * a ˆ 2) + ((2 * xp * a − d * a) ˆ 2) − (b ˆ 2 − ...
(xp ˆ 2)
9 + (xp * d)− (d ˆ 2) / 0.4e1 − (yp ˆ 2) − (a ˆ 2)) ˆ 2;
10
11 if (fac(1) <0 | | fac(2)<0)
12 v=1;
13 end
14
15 end

C.5. Jacob5R
Es una sub-función del programa Main workspace para indice de dexteridad y sirve
para calcular el numero de condición de la matriz jacobiana.

1
2 function [f]=jaco5R(xp,yp,a,b,d)
3
4
5 fac1=32 * yp ˆ 2 * a ˆ 2 + 32 * xp ˆ 2 * a ˆ 2 + 8 * d ˆ 2 * a ˆ 2
6 + 32 * b ˆ 2 * xp ˆ 2 + 8 * b ˆ 2 * d ˆ 2 + 32 * b ˆ 2 * yp ˆ 2
7 + 32 * b ˆ 2 * a ˆ 2 − 32 * xp ˆ 3 * d −
8 24 * xp ˆ 2 * d ˆ 2 − 32 * xp ˆ 2 * yp ˆ 2 − 8 * xp * d ˆ 3
9 − 8 * d ˆ 2 * yp ˆ 2 + 32 * xp * a ˆ 2 * d
10 + 32 * b ˆ 2 * xp * d − 32 * xp * d * yp ˆ 2 − 16 * b ˆ 4
11 − 16 * xp ˆ 4 − d ˆ 4 − 16 * yp ˆ 4 − 16 * a ˆ 4;
12 fac2=32 * yp ˆ 2 * a ˆ 2 + 32 * xp ˆ 2 * a ˆ 2 +
13 8 * d ˆ 2 * a ˆ 2 + 32 * b ˆ 2 * xp ˆ 2
14 + 8 * b ˆ 2 * d ˆ 2 + 32 * b ˆ 2 * yp ˆ 2 + 32 * b ˆ 2 * a ˆ 2
15 + 32 * xp ˆ 3 * d
16 − 24 * xp ˆ 2 * d ˆ 2 − 32 * xp ˆ 2 * yp ˆ 2 + 8 * xp * d ˆ 3
17 − 8 * d ˆ 2 * yp ˆ 2 − 32 * xp * a ˆ 2 * d
18 − 32 * b ˆ 2 * xp * d + 32 * xp * d * yp ˆ 2 − 16 * b ˆ 4
19 − 16 * xp ˆ 4 − d ˆ 4 − 16 * yp ˆ 4 − 16 * a ˆ 4;
20 if ( fac1<0 | | fac2<0)
21 f=0;
22 else
23

24 q(1) = 0.2e1 * atan2((8 * yp * a) + sqrt((32 * yp ˆ 2 * a ˆ 2


25 + 32 * xp ˆ 2 * a ˆ 2 + 8 * d ˆ 2 * a ˆ 2
26 + 32 * b ˆ 2 * xp ˆ 2 + 8 * b ˆ 2 * d ˆ 2 + 32 * b ˆ 2 * yp ˆ 2
27 + 32 * b ˆ 2 * a ˆ 2 − 32 * xp ˆ 3 * d
28 − 24 * xp ˆ 2 * d ˆ 2 − 32 * xp ˆ 2 * yp ˆ 2 − 8 * xp * d ˆ 3
29 − 8 * d ˆ 2 * yp ˆ 2 + 32 * xp * a ˆ 2 * d
30 + 32 * b ˆ 2 * xp * d − 32 * xp * d * yp ˆ 2 − 16 * b ˆ 4 − 16 * xp ˆ 4
31 − d ˆ 4 − 16 * yp ˆ 4 − 16 * a ˆ 4)),
32 (8 * xp * a + 4 * d * a − 4 * b ˆ 2 + 4 * xp ˆ 2 + 4 * xp * d
92 APÉNDICE C. ALGORITMO PARA EJECUCIÓN DE LA OPTIMIZACIÓN

33 + d ˆ 2 + 4 * yp ˆ 2 + 4 * a ˆ 2));
34

35 q(2)= atan2(yp − a * sin(0.2e1 * atan2((8 * yp * a) +


36 sqrt((32 * yp ˆ 2 * a ˆ 2
37 + 32 * xp ˆ 2 * a ˆ 2 + 8 * d ˆ 2 * a ˆ 2 + 32 * b ˆ 2 * xp ˆ 2
38 + 8 * b ˆ 2 * d ˆ 2 + 32 * b ˆ 2 * yp ˆ 2
39 + 32 * b ˆ 2 * a ˆ 2 − 32 * xp ˆ 3 * d − 24 * xp ˆ 2 * d ˆ 2
40 − 32 * xp ˆ 2 * yp ˆ 2 − 8 * xp * d ˆ 3
41 − 8 * d ˆ 2 * yp ˆ 2 + 32 * xp * a ˆ 2 * d + 32 * b ˆ 2 * xp * d
42 − 32 * xp * d * yp ˆ 2 − 16 * b ˆ 4
43 − 16 * xp ˆ 4 − d ˆ 4 − 16 * yp ˆ 4 − 16 * a ˆ 4)),
44 (8 * xp * a + 4 * d * a − 4 * b ˆ 2 + 4 * xp ˆ 2
45 + 4 * xp * d + d ˆ 2 + 4 * yp ˆ 2 + 4 * a ˆ 2))),
46 xp + d / 0.2e1 − a * cos(0.2e1 * atan2((8 * yp * a) +
47 sqrt((32 * yp ˆ 2 * a ˆ 2 + 32 * xp ˆ 2 * a ˆ 2
48 + 8 * d ˆ 2 * a ˆ 2 + 32 * b ˆ 2 * xp ˆ 2 + 8 * b ˆ 2 * d ˆ 2
49 + 32 * b ˆ 2 * yp ˆ 2 + 32 * b ˆ 2 * a ˆ 2
50 − 32 * xp ˆ 3 * d − 24 * xp ˆ 2 * d ˆ 2 − 32 * xp ˆ 2 * yp ˆ 2
51 − 8 * xp * d ˆ 3 − 8 * d ˆ 2 * yp ˆ 2
52 + 32 * xp * a ˆ 2 * d + 32 * b ˆ 2 * xp * d − 32 * xp * d * yp ˆ 2
53 − 16 * b ˆ 4 − 16 * xp ˆ 4 − d ˆ 4
54 − 16 * yp ˆ 4 − 16 * a ˆ 4)), (8 * xp * a + 4 * d * a − 4 * b ˆ 2
55 + 4 * xp ˆ 2 + 4 * xp * d + d ˆ 2
56 + 4 * yp ˆ 2 + 4 * a ˆ 2))));
57
58 q(3)=0.2e1 * atan2((8 * yp * a) − sqrt((32 * yp ˆ 2 * a ˆ 2
59 + 32 * xp ˆ 2 * a ˆ 2 + 8 * d ˆ 2 * a ˆ 2
60 + 32 * b ˆ 2 * xp ˆ 2 + 8 * b ˆ 2 * d ˆ 2 + 32 * b ˆ 2 * yp ˆ 2
61 + 32 * b ˆ 2 * a ˆ 2 + 32 * xp ˆ 3 * d
62 − 24 * xp ˆ 2 * d ˆ 2 − 32 * xp ˆ 2 * yp ˆ 2 + 8 * xp * d ˆ 3
63 − 8 * d ˆ 2 * yp ˆ 2 − 32 * xp * a ˆ 2 * d
64 − 32 * b ˆ 2 * xp * d + 32 * xp * d * yp ˆ 2 − 16 * b ˆ 4 − 16 * xp ˆ 4
65 − d ˆ 4 − 16 * yp ˆ 4 − 16 * a ˆ 4)),
66 (8 * xp * a − 4 * d * a − 4 * b ˆ 2 + 4 * xp ˆ 2 − 4 * xp * d
67 + d ˆ 2 + 4 * yp ˆ 2 + 4 * a ˆ 2));
68
69 q(4)= atan2(yp − a * sin(0.2e1 * atan2((8 * yp * a)
70 − sqrt((32 * yp ˆ 2 * a ˆ 2 + 32 * xp ˆ 2 * a ˆ 2 +
71 8 * d ˆ 2 * a ˆ 2 + 32 * b ˆ 2 * xp ˆ 2 + 8 * b ˆ 2 * d ˆ 2
72 + 32 * b ˆ 2 * yp ˆ 2 + 32 * b ˆ 2 * a ˆ 2
73 + 32 * xp ˆ 3 * d − 24 * xp ˆ 2 * d ˆ 2 − 32 * xp ˆ 2 * yp ˆ 2
74 + 8 * xp * d ˆ 3 − 8 * d ˆ 2 * yp ˆ 2
75 − 32 * xp * a ˆ 2 * d − 32 * b ˆ 2 * xp * d + 32 * xp * d * yp ˆ 2
76 − 16 * b ˆ 4 − 16 * xp ˆ 4 − d ˆ 4
77 − 16 * yp ˆ 4 − 16 * a ˆ 4)), (8 * xp * a − 4 * d * a − 4 * b ˆ 2
78 + 4 * xp ˆ 2 − 4 * xp * d + d ˆ 2
79 + 4 * yp ˆ 2 + 4 * a ˆ 2))), xp − d / 0.2e1 −
80 a * cos(0.2e1 * atan2((8 * yp * a)
81 − sqrt((32 * yp ˆ 2 * a ˆ 2 + 32 * xp ˆ 2 * a ˆ 2 +
82 8 * d ˆ 2 * a ˆ 2 + 32 * b ˆ 2 * xp ˆ 2
83 + 8 * b ˆ 2 * d ˆ 2 + 32 * b ˆ 2 * yp ˆ 2 + 32 * b ˆ 2 * a ˆ 2
84 + 32 * xp ˆ 3 * d − 24 * xp ˆ 2 * d ˆ 2
85 − 32 * xp ˆ 2 * yp ˆ 2 + 8 * xp * d ˆ 3 − 8 * d ˆ 2 * yp ˆ 2
C.5. JACOB5R 93

86 − 32 * xp * a ˆ 2 * d − 32 * b ˆ 2 * xp * d
87 + 32 * xp * d * yp ˆ 2 − 16 * b ˆ 4 − 16 * xp ˆ 4 − d ˆ 4
88 − 16 * yp ˆ 4 − 16 * a ˆ 4)), (8 * xp * a
89 − 4 * d * a − 4 * b ˆ 2 + 4 * xp ˆ 2 − 4 * xp * d + d ˆ 2
90 + 4 * yp ˆ 2 + 4 * a ˆ 2))));
91
92 J= [0.1e1 / a / sin(q(1) − q(2)) * cos(q(2))
93 0.1e1 / a / sin(q(1) − q(2)) * sin(q(2));
94 0.1e1 / a / sin(q(3) − q(4)) * cos(q(4))
95 0.1e1 / a / sin(q(3) − q(4)) * sin(q(4));];
96
97 e12=isfinite(J); % Me da los valores finito que hay en J
98 %(1 si es verdadero, 0 si es falso)
99 suma2=sum(sum(e12));
100 if (suma26=4)
101 f=0;
102 else
103 %p=det(J);
104 s=svd(J); % pertenece al programa de matlab del numero
105 %de condicionamiento calcula las singularidades
106 %e=isnan(s); % de J
107 e=isfinite(s);
108 suma1=sum(e);
109 r=length(s);
110 if(suma16=r | | any(s==0)) %any(s==0) matriz singular asi la calculan el ...
programa
111 f=0;
112 else
113 f=1/cond(J); %Calcula el numero de condicion de J
114 end
115 end
116 end
117 end

Otra forma para hallar el área dexteridad (y no el indice).

2 function [f]=jaco5R(xp,yp,a,b,d)
3 x=xp;
4 y=yp;
5
6
7

8
9 q(1)= 2*atan2(2*yp*a+(sqrt((4 * yp ˆ 2 * a ˆ 2)
10 + ((2 * xp * a + d * a) ˆ 2)
11 − (b ˆ 2 − (xp ˆ 2) − (xp * d) − (d ˆ 2) / 0.4e1
12 − (yp ˆ 2) − (a ˆ 2)) ˆ 2 )),
13 2*xp*a+d*a−bˆ2+xpˆ2+xp*d+(1/4)*dˆ2+ypˆ2+aˆ2);
14 q(2)= atan2(y−a*sin(q(1)), (1/2)*d+x−a*cos(q(1)));
15 q(3)= 2*atan2(2*yp*a−sqrt((4 * yp ˆ 2 * a ˆ 2) +
16 ((2 * xp * a − d * a) ˆ 2) − (b ˆ 2 − (xp ˆ 2) + (xp * d)
94 APÉNDICE C. ALGORITMO PARA EJECUCIÓN DE LA OPTIMIZACIÓN

17 − (d ˆ 2) / 0.4e1
18 − (yp ˆ 2) − (a ˆ 2)) ˆ 2),
19 2*xp*a−d*a−bˆ2+xpˆ2−xp*d+(1/4)*dˆ2+ypˆ2+aˆ2);
20 q(4)= atan2(y−a*sin(q(3)), x−(1/2)*d−a*cos(q(3)));
21 %% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
22
23
24

25 J= [0.1e1 / a / sin(q(1) − q(2)) * cos(q(2))


26 0.1e1 / a / sin(q(1) − q(2)) * sin(q(2));
27 0.1e1 / a / sin(q(3) − q(4)) * cos(q(4))
28 0.1e1 / a / sin(q(3) − q(4)) * sin(q(4));];
29 e12=isfinite(J); % Me da los valores finito que hay en J
30 %(1 si es verdadero, 0 si es falso)
31 suma2=sum(sum(e12));
32 if (suma26=4)
33 f=0;
34 else
35 %p=det(J);
36 s=svd(J); % pertenece al programa de matlab del numero de ...
condicionamiento
37 %e=isnan(s); % calcula las singularidades de J
38 e=isfinite(s);
39 suma1=sum(e);
40 r=length(s);
41 if(suma16=r | | any(s==0)) %any(s==0) matriz singular asi la calculan el ...
programa
42 f=0;
43 else
44 a=cond(J); %Calcula el numero de condicion de J
45 if a<6
46 f=1;
47 else
48 f=0;
49 end
50
51 end
52 end
53 end

Otra forma para hallar el área dexteridad con el indice dexteridad, con las solución de
los ángulos que se ofrece.

1
2 function [f]=jaco5R(xp,yp,a,b,d)
3 x=xp;
4 y=yp;
5 fac1=32 * yp ˆ 2 * a ˆ 2 + 32 * xp ˆ 2 * a ˆ 2 +
6 8 * d ˆ 2 * a ˆ 2 + 32 * b ˆ 2 * xp ˆ 2 + 8 * b ˆ 2 * d ˆ 2
7 + 32 * b ˆ 2 * yp ˆ 2 + 32 * b ˆ 2 * a ˆ 2 − 32 * xp ˆ 3 * d
8 − 24 * xp ˆ 2 * d ˆ 2 − 32 * xp ˆ 2 * yp ˆ 2 − 8 * xp * d ˆ 3
9 − 8 * d ˆ 2 * yp ˆ 2 + 32 * xp * a ˆ 2 * d + 32 * b ˆ 2 * xp * d
C.5. JACOB5R 95

10 − 32 * xp * d * yp ˆ 2 − 16 * b ˆ 4 − 16 * xp ˆ 4 − d ˆ 4
11 − 16 * yp ˆ 4 − 16 * a ˆ 4;
12 fac2=32 * yp ˆ 2 * a ˆ 2 + 32 * xp ˆ 2 * a ˆ 2 + 8 * d ˆ 2 * a ˆ 2
13 + 32 * b ˆ 2 * xp ˆ 2 + 8 * b ˆ 2 * d ˆ 2 + 32 * b ˆ 2 * yp ˆ 2
14 + 32 * b ˆ 2 * a ˆ 2 + 32 * xp ˆ 3 * d − 24 * xp ˆ 2 * d ˆ 2
15 − 32 * xp ˆ 2 * yp ˆ 2 + 8 * xp * d ˆ 3 − 8 * d ˆ 2 * yp ˆ 2
16 − 32 * xp * a ˆ 2 * d − 32 * b ˆ 2 * xp * d + 32 * xp * d * yp ˆ 2
17 − 16 * b ˆ 4 − 16 * xp ˆ 4 − d ˆ 4 − 16 * yp ˆ 4 − 16 * a ˆ 4;
18 if ( fac1<0 | | fac2<0)
19 f=0;
20 else
21
22 c2=−(bˆ2−xpˆ2−ypˆ2−(1/4)*dˆ2−xp*d−aˆ2);
23 o2=2*yp*a;
24 h2= d*a+2*xp*a;
25 q(1)= atan2(o2,h2)+atan2(sqrt(h2ˆ2+o2ˆ2−c2ˆ2),c2); % hay 2 soluciones
26 %la segunda atan2 puede ser +,−
27 q(2)= atan2(y−sin(q(1))*a,d/2+x−cos(q(1))*a);
28 c1=−(bˆ2−xpˆ2−ypˆ2−(1/4)*dˆ2+xp*d−aˆ2);
29 o1=2*yp*a;
30 h1=−d*a+2*xp*a;
31 q(3)=atan2(o1,h1)−atan2(sqrt(h1ˆ2+o1ˆ2−c1ˆ2),c1);
32 q(4)= atan2(y−sin(q(3))*a,x−d/2−cos(q(3))*a);
33
34
35

36
37
38 J= [0.1e1 / a / sin(q(1) − q(2)) * cos(q(2))
39 0.1e1 / a / sin(q(1) − q(2)) * sin(q(2));
40 0.1e1 / a / sin(q(3) − q(4)) * cos(q(4))
41 0.1e1 / a / sin(q(3) − q(4)) * sin(q(4))];
42
43 e12=isfinite(J); % Me da los valores finito que hay en J
44 %(1 si es verdadero, 0 si es falso)
45 suma2=sum(sum(e12));
46 if (suma26=4)
47 f=0;
48 else
49 %p=det(J);
50 s=svd(J); % pertenece al programa de matlab
51 %del numero de condicionamiento
52 %calcula las singularidades
53 % de J
54 e=isfinite(s);
55 suma1=sum(e);
56 r=length(s);
57 if(suma16=r | | any(s==0)) %any(s==0) matriz singular asi
58 %la calculan el programa
59 f=0;
60 else
61 f=1/cond(J); %Calcula el numero de condicion de J
62 end
96 APÉNDICE C. ALGORITMO PARA EJECUCIÓN DE LA OPTIMIZACIÓN

63 end
64 end
65 end

C.6. Result (resultado)


Es una función de Matlab que me da el resultado del máximo.

1 function [value,x]=result(pop,stringlength,dimension)
2 [value,k]=max(pop(:,stringlength*dimension
3 +dimension+1));
4 x=pop(k,stringlength*dimension+1:
5 stringlength*dimension+dimension);
6 value=value;
7 end
Bibliografı́a

Altuzarra, O., Sandru, B., Macho, E., and Amezua, E. (2010). Análisis de indicadores
cinemáticos para el diseño de manipuladores paralelos. In XVIII Congreso Interna-
cional de Ingenierı́a Mecánica. Ciudad Real.

Bounab, B. (2016). Multi-objective optimal design based kineto-elastostatic performance


for the delta parallel mechanism. Robotica, 34(02):258–273.

Craig, J. J. (2006). Robótica. Pearson Educación.

Gestal, M., Rivero, D., Rabuñal, J. R., Dorado, J., and Pazos, A. (2010). Introducción a
los algoritmos genéticos y la programación genética. Universidade da Coruña, Servicio
de Publicacións.

Gogu, G. (2009). Structural Synthesis of Parallel Robots. Springer.

Holland, J. H. (1975). Adaptation in natural and artificial systems: an introductory analy-


sis with applications to biology, control, and artificial intelligence. U Michigan Press.

Huang, M. Z. (2011). Design of a planar parallel robot for optimal workspace and dexterity.
International Journal of Advanced Robotic Systems, 8(4):49.

Iglesias Otero, M. T. (2002). Biologia + Matemática+Informática=Algoritmos Genéticos.,


volume 1. Universidad de Coruña.

Koza, J. R. (1992). Genetic programming: on the programming of computers by means of


natural selection, volume 1. MIT press.

Laribi, M., Romdhane, L., and Zeghloul, S. (2007). Analysis and dimensional synthesis
of the delta robot for a prescribed workspace. Mechanism and Machine Theory,
42(7):859–870.

Liu, X.-J., Wang, J., and Pritschow, G. (2006). Kinematics, singularity and workspa-
ce of planar 5r symmetrical parallel mechanisms. Mechanism and machine theory,
41(2):145–169.

Lou, Y., Liu, G., and Li, Z. (2008). Randomized optimal design of parallel manipulators.
Automation Science and Engineering, IEEE Transactions on, 5(2):223–233.

97
98 BIBLIOGRAFı́A

Martı́nez, E., Peña, C. A., and Yime, E. (2010). Diseño óptimo de un robot paralelo con
configuración delta para aplicaciones educativas. Revista Educación en Ingenierı́a,
5(10):110–119.

Merlet, J.-P. (1997). Workspace-oriented methodology for designing a parallel manipu-


lator. In Integrated Design and Manufacturing in Mechanical Engineering, pages
215–224. Springer.

Merlet, J.-P. (2006). Jacobian, manipulability, condition number, and accuracy of parallel
robots. Journal of Mechanical Design, 128(1):199–206.

Pajares Martinsanz, G. and Santos, M. (2006). Inteligencia artificial e ingenierı́a del


conocimiento. México: Alfaomega.

Peña Cortes, C. A., Martinez Oviedo, E., and Cárdenas Herrera, P. F. (2011). Optimi-
zación dimensional de un robot paralelo tipo delta basado en el menor consumo de
energı́a. Ciencia e Ingenierı́a Neogranadina,, 21(01):73–88.

Pierrot, F., Nabat, V., Company, O., Krut, S., and Poignet, P. (2009). Optimal design
of a 4-dof parallel manipulator: From academia to industry. IEEE Transactions on
Robotics, 25(2):213–224.

Sobol, I. (1983). Lecciones populares de matematicas. Método de Montecarlo, volume 1.


Mir.

Stan, S.-D., Balan, R., and Maties, V. (2008). Optimal design of parallel kinematics
machines with 2 degrees of freedom. INTECH Open Access Publisher Rijeka.

Wu, J., Li, T., Liu, X., and Wang, L. (2007). Optimal kinematic design of a 2-dof planar
parallel manipulator. Tsinghua Science & Technology, 12(3):269–275.

S-ar putea să vă placă și