Documente Academic
Documente Profesional
Documente Cultură
Postgrado EMMA-I
Asesor
Dr.Ing. Miguel Angel Daz Rodrguez
29 de marzo de 2017
2
Resumen
Los robot paralelos tienen como principal caracterstica su estructura que consiste en
varias cadena cinematicas cerradas. Este tipo de estructura permite una mejor distribucion
de las cargas soportadas. As, los robots paralelos presumen unas caractersticas muy
ventajosas en cuanto a la relacion entre el: peso del robot y el peso de la carga ubicada
en el elemento terminal, velocidad, rigidez o precision. Como principal contrapartida, 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 paralelos tenga
maxima area alcanzable (espacio de trabajo) pero que ademas tenga agilidad (llamada en
esta tesis dexteridad).
Muchos de las tareas de la industria pueden ser realizada por robot planos, donde el
movimiento de cada uno de los puntos puede ser visto en un mismo plano de proyeccion.
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 mas estudiados. En este trabajo, se busca
disenar este tipo de robot de forma tal que su area alcanzable sea la maxima posible y
ademas una optima dexteridad. Para ello, se toma ventaja de la tecnica de optimizacion
llamada Algoritmos Geneticos que permite determinar maximos globales sin quedar la
solucion atrapada en un mnimo local.
Para ello se inicia con una introduccion de la estructura de la tesis y sus objetivos.
Luego se presenta una breve introduccion del marco teorico. Tambien se desarrollan las
ecuaciones cinematicas a utilizar en los algoritmos evolutivos (Algoritmos Geneticos AG).
Se desarrollan dos ejemplos de aplicacion donde se optimiza el area de trabajo alcanzable
y el area diestra. Como aplicacion 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 metodo de AG depende de un conjunto de parametros, se ha hecho
un estudio exhaustivo de ellos y como resultado se obtiene el conjunto de parametros que
logran que el algoritmo converja a un mismo punto. Luego al aplicar el algoritmo se ha
encontrado que no se puede optimizar el espacio de area alcanzable por separado porque
el robot conseguido su dexteridad es muy baja siendo un robot torpe.
Finalmente, se presenta un camino a seguir para encontrar los valores del Algoritmo
Genetico para su convergencia al maximo de area alcanzable y maximo de dexteridad
buscando un termino medio entre las dos, es decir que el area de dexteridad sea un area
apreciable.
3
4
Indice general
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1. Introduccion 9
1.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3. Justificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4. Limitaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5.1. Objetivos Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5.2. Objetivos Especficos . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6. Metodologa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7. Extructura de la Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2. Marco Teorico 17
2.1. Algoritmos geneticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2. Por que utilizar algoritmos geneticos en la optimizacion? . . . . . . . . . . 18
2.3. Definicion de algoritmo genetico . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4. Terminologa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.1. Cromosoma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.2. Genotipo y Fenotipo . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.3. Fitness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.4. Poblacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.5. Operadores geneticos . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5. Funcionamiento de una algoritmo genetico . . . . . . . . . . . . . . . . . . 25
2.5.1. Pasos de un Algoritmo genetico Simple . . . . . . . . . . . . . . . . 25
2.6. Un Ejemplo de Implementacion . . . . . . . . . . . . . . . . . . . . . . . . 27
2.7. Cinematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.7.1. Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.7.2. Robot Paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.7.3. Grado de Libertad. . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.7.4. Grados de libertad en mecanismos planos. . . . . . . . . . . . . . . 28
2.7.5. Espacio de trabajo Alcanzable . . . . . . . . . . . . . . . . . . . . . 29
2.7.6. Jacobiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.7.7. Espacio de trabajo Diestro . . . . . . . . . . . . . . . . . . . . . . . 29
2.7.8. Robot paralelo plano . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5
6 INDICE GENERAL
3. Ecuaciones Cinematicas 31
3.1. Robot paralelo plano. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2. Ecuaciones de Cinematica . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.1. Funcion trigonometrica de un angulo cualquiera . . . . . . . . . . . 32
3.3. Jacobiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4. Casos de Estudio 39
4.1. Primer caso de estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2. Area Alcanzable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3. Mallado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.4. Discretizacion del modelo para determinar el Area Alcanzable . . . . . . . 42
4.5. Ajuste del Algoritmo Genetico para area alcanzable . . . . . . . . . . . . . 45
4.5.1. Estudio de PC para area alcanzable . . . . . . . . . . . . . . . . . . 45
4.5.2. Estudio de Porcentaje de Mutacion para area alcanzable . . . . . . 46
4.5.3. Estudio de Longitud de Codigo Binario (SL) para area alcanzable . 46
4.5.4. Estudio del Tamano de la poblacion y de generaciones (iter) para
area alcanzable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.6. Optimizacion del Area Alcanzable . . . . . . . . . . . . . . . . . . . . . . . 48
4.7. Segundo caso de estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.8. Estudio de Dexteridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.8.1. Mallado de dexteridad . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.8.2. Discretizacion del modelo para determinar el Area de Dexteridad . 50
4.9. Ajuste del Algoritmo Genetico para Dexteridad . . . . . . . . . . . . . . . 53
4.9.1. Estudio de PC para Dexteridad . . . . . . . . . . . . . . . . . . . . 53
4.9.2. Estudio de Porcentaje de Mutacion para Dexteridad . . . . . . . . . 53
4.9.3. Estudio de Longitud de Codigo Binario (SL) para Dexteridad . . . 54
4.9.4. Estudio tamano de la poblacion y de generaciones(iter) para Dex-
teridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.10. Optimizacion del Area de Dexteridad primer caso de estudio . . . . . . . . 57
4.11. Optimizacion del Area Dexteridad del segundo caso de estudio . . . . . . . 57
5. Conclusiones 61
5.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2. Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
B. Codigo de GA 65
B.1. Algoritmo Genetico (AG) . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
B.1.1. Encoding (Codificacion) . . . . . . . . . . . . . . . . . . . . . . . . 65
B.2. Decoding (Descodificacion) . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
B.3. Selection(Seleccion) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
B.4. Crossover (Cruce) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
B.5. Mutation(Mutacion) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
INDICE GENERAL 7
Introduccion
En pocos anos, la robotica ha pasado de ser una mera imaginacion de los seres humanos
a una realidad del mundo actual y del mercado productivo. En los primeros anos era algo
incierto su futuro llegando a la era actual a una realidad imprescindible de las industrias.
Dentro de los tipos de robot estan los robot paralelos que consisten en un sistema
mecanico donde dos plataformas estan conectadas por al menos dos cadenas cinematicas
abiertas. De esta forma, las cadenas cinematicas abiertas o piernas proporcionan movi-
miento relativo entre la plataforma movil y la plataforma base fija. Las piernas dan una
mayor rigidez al robot, a expensas de limitar su espacio de trabajo. Haciendo un smil con
el cuerpo humano, un robot serial o cadena cinematica 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 precision el ser humano emplea los dos brazos. Cuando se utilizan
los dos brazos se esta en presencia de un robot paralelo, donde la base es el torso y la pla-
taforma movil es el elemento que esta siendo sujetado con las manos. Siguiendo este smil
puede entenderse que el robot paralelo gana mayor capacidad de carga, mayor precision
pero pierda capacidad de alcance en el movimiento de las brazos (espacio de trabajo o
workspace). Debido las ventajas que presenta (mayor rigidez, precision), los robot parale-
los se han convertido en una alternativa indispensable para el diseno de robots tanto en
el mundo academico como en la industria (Pierrot et al., 2009).
A la par del desarrollo de la robotica y los robot paralelos, ha habido un rapido y
creciente desarrollo en la aplicacion de algoritmos y procesos por computadora en los
siguientes campos de investigacion: 1) la teora mecanismo, 2) analisis de la movilidad,
3) sntesis dimensional, 4) la cinematica y el modelo dinamico, y 5) la optimizacion del
diseno. La optimizacion cinematica del mecanismo consiste en determinar las dimensiones
que permitan obtener un mejor desempeno del robot, como por ejemplo, conseguir un
robot cuyas dimensiones conlleven a obtener un espacio de trabajo maximo. Este es el
problema abordado en este trabajo que se explica en el siguiente parrafo.
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 aplicacion en particular
que el diseno del robot permita abarcar el mayor espacio de trabajo y que
ademas presente un buen desempeno cinematico. Para resolver la tarea se va
a tomar ventaja de tecnicas de optimizacion basadas en algoritmos evolutivos
9
10 CAPITULO 1. INTRODUCCION
1.1. Antecedentes
Merlet (1997) presenta el metodo de un diseno optimo de 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 caracterstica del robot son su
alta presicion y alta carga nominal. Se utiliza muy a menudo como sistema de simulacion
de vuelo. Esta arquitectura muy inusual es dificil lograr un diseno optimo, es decir, la
geometra del Robot que resulte ser la mejor con respecto a algun criterio es una tarea
difcil. En la metodologa de diseno propuesta se propone 1) las especificaciones de diseno
incluyen un requisito el espacio de trabajo 2)Primero se determina todas las posibles
geometras del robot, y 3) de entre todas estas geometras se realiza un analisis numerico
con el objeto de determinar el robot que cumple en el mejor otras especificaciones de diseno
(por lo tanto, la metodologa es espacio de trabajo orientado). Este trabajo ayudara 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 diseno de robot paralelos como lo son: Jacobiano, manipulabilidad, numero
de condicion y precision de robot paralelos. El autor muestra como la metodologa de di-
seno optimo tiene que considerar los indices cinematicos. En el trabajo se revisan tambien
como estos indices son apropiados para robot paralelos. Esto ayudara a la tesis hacer una
revision de distintos indices de cinematica.
Liu et al. (2006) establece que el analisis y el diseno optimo son dos cuestiones impor-
tantes en el desarrollo de un mecanismo paralelo. El analisis de la cinematica y espacio de
trabajo son dos problemas modelo basicos para definir y evaluar la ejecucion de un meca-
nismo. Los problemas involucradas en el diseno optimo del mecanismo son evaluacion de
desempeno y la sntesis dimensional. En el proceso de diseno optimo podran participar
varios criterios de rendimiento para un proposito de diseno tales como espacio de trabajo,
singularidades, destreza y indice de acondicionamiento. Tales mecanismo con estructura
simetrica han atraido a muchos investigadores que han estudiado su analisis de porcion de
espacio de trabajo, los modos de montaje, la singularidad, atlas de rendimiento y diseno
cinematico. Este trabajo permite establecer los distintos criterios de rendimientos que son
usados en el diseno de robot paralelos.
Laribi et al. (2007) realiza un analisis dimensional de un robot Delta para un prescrito
espacio de trabajo donde se muestra la determinacion del espacio de trabajo y la formu-
1.1. ANTECEDENTES 11
1.3. Justificacion
Se realiza esta investigacion porque el diseno de un robot requiere de tecnicas de
optimizacion para determinar las dimensiones geometricas del mecanismo que cumplan
con los requisitos para la cual va ser disenada. Uno de los criterios de diseno 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 funcion objetivo no se
puede calcular el gradiente de una manera explicita y ademas es un problema con maximos
locales y con restricciones no lineales que tampoco se conoce sus derivadas.
Lo que se busca en este trabajo es emplear algoritmos que encuentre el maximo global
y que no dependa del gradiente de la funcion objetivo lo cual justifica el uso de algoritmos
evolutivos que ayudan a solventar este problema.
1.4. Limitaciones
Esta tesis se limitara al tema del diseno optimo de robot paralelos usando unicamente
como criterio el espacio diestro ya que cabe mencionar que existen otros criterios que
no seran abarcados en esta tesis. Luego la tecnica a desarrollar se basan en algoritmos
evolutivos tales como Algoritmos Geneticos.
14 CAPITULO 1. INTRODUCCION
1.5. Objetivos
1.5.1. Objetivos Principal
Desarrollar una estrategia de optimizacion del espacio diestro de robot paralelos ba-
sados en tecnicas en Algoritmos Geneticos.
1.6. Metodologa
1. El proyecto se inicia estudiando en que consiste los Algoritmos Geneticos como se
soluciona un problema de optimizacion con restricciones no lineales.
5. Realizar el codigo de la funcion objetivo de manera que pueda ser usado por Algo-
ritmos Geneticos.
6. Ajustar los parametros del Algoritmo Genetico para distintos metodos de seleccion,
cruce, mutacion y otros.
9. Resultados y conclusiones.
1.7. EXTRUCTURA DE LA TESIS 15
Marco Teorico
17
18 CAPITULO 2. MARCO TEORICO
6. Cuando se usan para problemas de optimizacion, resultan menos afectados por los
maximos locales que las tecnicas tradicionales (i.e., son metodos robustos).
2.4. Terminologa
2.4.1. Cromosoma
En algoritmos geneticos, un cromosoma tpico se refiere a una solucion candidata a
un problema. Un cromosoma esta subdividido en genes. La codificacion suele hacerse
mediante valores binarios. Sin embargo, tambien existen representaciones que codifican
directamente cada parametro con un valor entero, real o en punto flotante.(La figura 2.1
muestra la representacion de un cromosoma).
2.4.3. Fitness
El fitness de un individuo en un algoritmo genetico es el valor de la funcion objetivo
para su fenotipo. Para calcular el fitness, los cromosomas tienen que ser decodificados y
su funcion objetivo tiene que ser evaluada. El fitness no solo indica que tan buena es una
solucion, tambien que tan cerca se encuentra esta de la solucion optima.
2.4.4. Poblacion
Una poblacion es una coleccion de individuos, consiste en una serie de individuos a
ser evaluados.
1. Seleccion:
2.4. TERMINOLOGIA 21
Los algoritmos de seleccion seran los encargados de escoger que individuos van a
disponer de oportunidades de reproducirse y cuales no. Puesto que se trata de imitar
lo que ocurre en la naturaleza, se ha de otorgar un mayor numero de oportunidades
de reproduccion a los individuos mas aptos. Por lo tanto, la seleccion de un individuo
estara relacionada con su valor de ajuste. No se debe, sin embargo, eliminar por
completo las opciones de reproduccion de los individuos menos aptos, pues en pocas
generaciones la poblacion se volvera homogenea.
En cuanto a algoritmos de seleccion se refiere, estos pueden ser divididos en dos
grandes grupos: probabilsticos y determinsticos. Ambos tipos de algoritmos basan
su funcionamiento en el principio indicado anteriormente (permitir escoger una ma-
yor cantidad de veces a los mas 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 seleccion por ruleta
o por torneo que, dado su importancia por ser los mas frecuentemente utilizados, lo
cual seran 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 numero de veces que sera escogido para reproducirse.
Seleccion por ruleta
Propuesto por DeJong, es posiblemente el metodo mas utilizado desde los orgenes
de los Algoritmos geneticos Gestal et al. (2010). A cada uno de los individuos de la
poblacion 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 recibiran
una porcion de la ruleta mayor que la recibida por los peores. Generalmente, la
poblacion esta ordenada en base al ajuste, por lo que las porciones mas grandes se
encuentran al inicio de la ruleta. Para seleccionar un individuo basta con generar un
numero aleatorio del intervalo [0, 1] y devolver el individuo situado en esa posicion
de la ruleta. Esta posicion se suele obtener recorriendo los individuos de la poblacion
y acumulando sus proporciones de ruleta hasta que la suma exceda el valor obtenido.
Seleccion por torneo.
La idea principal de este metodo de seleccion consiste en escoger a los individuos
geneticos en base a comparaciones directas entre sus genotipos.
Existen dos versiones de seleccion mediante torneo, el torneo determinstico y el
torneo probabilstico, que a continuacion pasan a detallarse.
En la version determinstica se selecciona al azar un numero p de individuos (gene-
ralmente se escoge p = 2). De entre los individuos seleccionados se selecciona el mas
apto para pasarlo a la siguiente generacion.
La version probabilstica unicamente se diferencia en el paso de seleccion del ganador
del torneo. En vez de escoger siempre el mejor se genera un numero aleatorio del
intervalo [0, 1], si es mayor que un parametro p (fijado para todo el proceso evolutivo)
se escoge el individuo mas alto y en caso contrario el menos apto. Generalmente p
toma valores en el rango 0.5 < p 1.
22 CAPITULO 2. MARCO TEORICO
2. Cruce.
Una vez seleccionados los individuos, estos son recombinados para producir la des-
cendencia que se insertara en la siguiente generacion. Tal y como se ha indicado
anteriormente, el cruce es una estrategia de reproduccion sexual.
Los diferentes metodos de cruce podran operar de dos formas diferentes. Si se op-
ta por una estrategia destructiva los descendientes se insertaran en la poblacion
temporal aunque sus padres tengan mejor ajuste (trabajando con una unica pobla-
cion esta comparacin se realizara con los individuos a reemplazar). Por el contrario,
utilizando una estrategia no destructiva la descendencia pasara la siguiente genera-
cion unicamente 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 correctamente
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 caractersticas buenas de dos individuos,
la descendencia, o al menos parte de ella, debera tener una bondad mayor que cada
uno de los padres por separado. Si el cruce no agrupa las mejores caractersticas en
uno de los hijos y la descendencia tiene un peor ajuste que los padres no significa
que se este dando un paso atras. Optando por una estrategia de cruce no destructiva
garantizamos que pasen a la siguiente generacion los mejores individuos.Si, aun con
un ajuste peor, se opta por insertar a la descendencia, y puesto que los genes de
los padres continuaran en la poblacin aunque dispersos y posiblemente levemente
modificados por la mutacion, en posteriores cruces se podran volver a obtener estos
padres, recuperando as la bondad previamente perdida.
Existen multitud de algoritmos de cruce. Sin embargo los mas empleados son los
que se detallaran a continuacion:
a) Cruce de 1 punto: Es la mas sencilla de las tecnicas de cruce. Una vez selec-
cionados dos individuos 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 ge-
nerar los nuevos descendientes. De esta manera ambos descendientes heredan
informacion genetica de los padres.(La figura 2.2 muestra el cruce de 1 punto).
b) Cruce de 2 puntos:
2.4. TERMINOLOGIA 23
3. Copia.
La copia es la otra estrategia reproductiva para la obtencion de una nueva gene-
racion a partir de la anterior. A diferencia del cruce, se trata de una estrategia de
reproduccion asexual. Consiste simplemente en la copia de un individuo en la nueva
generacion. El porcentaje de copias de una generacion a la siguiente es relativamente
reducido, pues en caso contrario se corre el riesgo de una convergencia prematura de
la poblacion hacia ese individuo. De esta manera el tamano efectivo de la poblacion
se reducira notablemente y la busqueda en el espacio del problema se focalizara en
el entorno de ese individuo.
24 CAPITULO 2. MARCO TEORICO
[Mutacion]. Con una probabilidad de mutacion, modificar al azar parte del cromo-
soma de los individuos, esto permite alcanzar zonas del espacio de busqueda que no
estaban cubiertas por los individuos de la poblacion actual.
Generar la po-
Inicio
blacion inicial
Evaluar la funcion
de adaptacion de
cada individuo
Seleccionar de la
poblacion a los indi-
viduos a reproducir
Reproducir obteniendo
descendientes (Cuzar)
Si cumple
la
F condicion
de parada
Verdadero
Fin
f (x, y) = x2 + y 2 (2.1)
sujeta a condicion
x+y =3 (2.2)
solucion: Se puede ver este problema como
Un resultado analtico da
(3/2, 3/2) = (1.5, 1.5) (2.4)
Si se usa para la optimizacion el Algoritmo genetico (hecho con el programa Matlab ver
Apendice) da con iter= 100, PC= 0.70, PM= 0.07, SL= 12 y PS= 200, x en el intervalo
[0, 3], x = 1.4996 entonces y = 3 1.4996 = 1.5004.
2.7. Cinematica
Antes de definir que es la cinematica se presentan dos conceptos importantes.
2.7.1. Robot
Se define de manera formal en la Organizacion Internacional para la Estandarizacion
(ISO), como un manipulador multifuncional reprogramable, capaz de mover materiales,
piezas, herramientas o dispositivos especiales, a traves de movimientos variables progra-
mados, para el desempeno de tareas diversas.
de los elementos del robot; el segundo, denominado problema cinematico inverso, resuelve
la configuracion que debe adoptar el robot para una posicion y orientacion del extremos
conocidas.
Otros conceptos importantes que se usaran en esta tesis son:
Este robot tiene 5 eslabones (o barras), 5 juntas (o uniones), cada junta tiene 1 grado
de libertad, por tanto, por ecuacion 2.5, j2 = 0, j1 = 5 y n=5. As
2.7.6. Jacobiano
El Jacobiano de un manipulador se define de la siguiente manera.
La relacion entre el vector n-dimensional de coordenadas articulares y el vector
m-dimensional x de coordenadas cartesianas de la plataforma movil, esta dada por la
ecuacion,
F (, x) = 0 (2.7)
donde F es una funcion n-dimensional de y x y 0 es el vector cero n-dimencional.
Diferenciando la ecuacion anterior se obtiene una relacion entre las velocidades de entrada
y salida.
Jx x = J (2.8)
donde
F
Jx = (2.9)
x
F
J = (2.10)
tanto Jx como J son matrices. De esta relacion podramos intentar invertir Jx o J , en
esta tesis invertiremos J y llamaremos el jacobiano
J = J1 Jx (2.11)
Ecuaciones Cinematicas
31
32 CAPITULO 3. ECUACIONES CINEMATICAS
OP = OC + CD + DP (3.1)
OP = OA + AB + BP (3.2)
con la relacion anterior se tiene que,
x = xC + xD + xO (3.3)
y = yC + yD + yO (3.4)
se tomara en cuenta las siguiente definicion.
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 CINEMATICA 33
x = xA + xB + xO (3.21)
y = yB + yA + yO (3.22)
se tiene que,
d
xO = (3.23)
2
yO = 0 (3.24)
34 CAPITULO 3. ECUACIONES CINEMATICAS
donde,
d2
c = L21 (x2 + y 2 + + xd + L22 ) (3.43)
4
a = (dL2 + 2xL2 ) (3.44)
b = 2yL2 (3.45)
cuya solucion es con la rutina del arcotangente con dos argumentos Atan2 conocida,
4 = Atan2(b, a) Atan2( a2 + b2 c2 , c). (3.46)
donde,
d2
c = L22 (x2 + y 2 + + xd + L21 ) (3.48)
4
a = (dL1 + 2xL1 ) (3.49)
b = 2yL1 (3.50)
cuya solucion 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)
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
36 CAPITULO 3. ECUACIONES CINEMATICAS
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 solucion es,
3 = Atan2(b, a) Atan2( a2 + b2 c2 , c). (3.61)
Para el angulo 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)
cuya solucion es,
1 = Atan2(b, a) Atan2( a2 + b2 c2 , c). (3.67)
Por tanto como se ha hallado de una manera las ecuaciones para hallar los angulos, ahora
se hallara el Jacobiano, para ello se encontrara primero la funcion F.
3.3. Jacobiano
Las 4 ecuaciones que se presentan se obtuvieron de la geometra del robot paralelo, de
ah por suma de vectores existen dos caminos a seleccionar, una que va por el eslabon que
contiene el angulo 1 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 eslabon que contiene al angulo
2 ver figura 3.1 de este camino tambien 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 seccion 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
3.3. JACOBIANO 37
d2
x2 + y 2 + dx + L21 + (dL1 2xL1 ) cos(1 ) 2yL1 sin(1 ) L22 = 0 (3.72)
4
2 2 d2
x +y + + xd + L21 (dL1 + 2xL1 ) cos(2 ) 2yL1 sen(2 ) L22 = 0. (3.73)
4
Se define,
2
x + y 2 + d4 + xd + L21 (dL1 + 2xL1 ) cos(2 ) 2yL1 sin(2 ) L22
2
F (x, y, 2 , 1 ) = 2
x2 + y 2 + d4 dx + L21 + (dL1 2xL1 ) cos(1 ) 2yL1 sin(1 ) L22
de lo anterior se obtiene,
2x + d 2L1 cos(2 ) 2y 2L1 sin(2 )
Jx =
2x d 2L1 cos(1 ) 2y 2L1 sin(1 )
as el jacobiano es,
J = J1 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 funcion de los 4 angulos, si se hace los cam-
bios de x,y de las ecuaciones a conveniencia, simplificando y se aplica las propiedades
trigonometricas se llega
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 = J1 Jx (3.75)
queda,
38 CAPITULO 3. ECUACIONES CINEMATICAS
cos(4 ) sin(4 )
L sin( ) L1 sin(2 4 )
1 2 4
J =
cos(3 ) sin(3 )
L1 sin(1 3 ) L1 sin(1 3 )
Esta ultima matriz se le puede hallar el numero de condicion (cond(J)) puntualmente
con el objeto de determinar la dexteridad de un punto (x,y) del espacio de trabajo del
robot paralelo plano.
Captulo 4
Casos de Estudio
39
40 CAPITULO 4. CASOS DE ESTUDIO
Figura 4.2: Mallado de Area alcanzable a calcular por Metodo Nube de Puntos
El area calculada con la formula 4.1 con los puntos que quedan adentro ver figura 4.3
Y el area que se construye a partir de los puntos que quedan adentro por el Metodo
de Montecarlo ver figura 4.5
4.3. Mallado
Se define un area de trabajo, se discretiza entonces para cada punto (x,y) del area y
junto al punto (L1 ,L2 ,d) se verifica si el punto (x,y) es alcanzable, si satisface lo que la
ecuacion de los angulos exige por ejemplo del angulo 2 ecuacion 3.51 que a2 + b2 c2
(que depende de (x,y) y (L1 ,L2 ,d) ) esto es:
d2
(4y 2 a2 ) + ((2xa da)2 ) (b2 (x2 ) + (xd) (y 2 ) (a2 ))2 (4.2)
4
sea mayor o igual a cero, de manera analoga con el angulo 1 esto es:
d2
(4y 2 a2 ) + ((2xa + da)2 ) (b2 (x2 ) (xd) (y 2 ) (a2 ))2 (4.3)
4
sea mayor o igual a 0. Si se verifica el punto es alcanzable si no, no lo es. Para hallar el
area alcanzable se coloca un 0 si es alcanzable y un 1 si no lo es. Luego se intercambia
los 0 por 1 y se suman y se llega a los puntos que caen dentro del area del robot paralelo
con ello se estima un area con la formula 4.1. Ver flujograma 4.6 donde se muestra la
explicacion mas detallada:
Se discretiza el area 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 1, si son mayores
o iguales a 0 se coloca
0 y el punto es factible
Tabla 4.1: Resultados de los Errores Relativos Porcentuales por nube de puntos
Pts,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
Desviacion estandar(std(x)) 0.0285 0.2129 1.2399 1.8526
Desviacion estandar(std(x,1)) 0.0271 0.202 1.1763 1.7575
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 la media de los errores da menor que el 2 % (entre los
dos metodos, pero da mas alto por Metodo de Montecarlo) de manera que es una buena
opcion trabajar con ese tipo de mallado.
4.5. AJUSTE DEL ALGORITMO GENETICO PARA AREA ALCANZABLE 45
Se realizara un estudio del desempeno del algoritmo para cuando cambia el PC que
es porcentaje de crossover (ver Apendice). Ahora se fijara los parametros del Algoritmo
genetico, se comienza con variar PC cuyos parametros son,
PC= [0.6, 0.65, 0.70, 0.75, 0.85, 0.95]
y se fijara(por ahora) PM(3) = 0.65, iter = 250(generaciones), SL(3) = 12(largo del
string) y PS(5) = 300 (tamano de la poblacion) se ejecutara ciertos numero de veces
para cada PC y la que arroje mejor fitness sera la que se tomara para ser fijada. Del
estudio se obtiene como resultado que PC(4) = 0.75 es el mas adecuado valor y tambien
se recomienda PC= 0.95 ya que no se noto cambios significativo. (La figura 4.7 muestra
la variacion del fitness para varios valores de PC de la cual se concluye que el valor mas
alto de fitness se da 0.75.)
46 CAPITULO 4. CASOS DE ESTUDIO
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
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
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
como mas adecuado valor de iter= 250 y se recomienda cualquier valor mayor que ese
valor. La figura 4.10 y 4.11 muestra la variacion del fitness para varios valores de PS y
iter de la cual se concluye PS= 400 y iter= 250 son los de mayor fitness.
48 CAPITULO 4. CASOS DE ESTUDIO
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)
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
0.8
0.6
0.4
0.2
0
0.4 0.2 0 0.2 0.4 0.6
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
2 2 2 2 2 d2
(4y a ) + ((2xa + da) ) (b (x ) (xd) (y 2 ) (a2 ))2 (4.5)
4
luego para los puntos que satisfacen que las ecuaciones 4.4 y 4.5 son mayores iguales a
cero, son los puntos alcanzable, entonces se calcula 1 ,2 ,3 y 4 (que depende de (x,y) y
(L1 ,L2 ,d)), despues se calcula el Jacobiano, si la matriz es invertible se obtiene el valor
del numero de condicionamiento (cond(J)) de la matriz jacobiana, si no es invertible
colocamos 0 a la evaluacion de ese punto (x,y), si es invertible y se obtiene el numero
de condicion luego verificamos si es menor que cierto valor, si le asigna 1 si es menor
que dicho valor, si no 0, luego se suman todos los 1 y se calcula una area de dexteridad
que mide la dexteridad en conjunto del mallado para el punto (L1 , L2 ,d). Ver flujograma
mostrado en la Figura 4.14
Se utiliza la dis-
Se tiene primero cretizacion(de area
el punto (L1 , L2 ,d) alcanzable) de (x,y)
del espacio de trabajo
Se halla la matriz
Jacobiana que de-
pende de 1 ,2 ,3 y
4 , si es invertible
Se halla el numero
de condicion de la
matriz Jacobiana
Si el numero de con-
dicion de la matriz
Jacobiana es menor que
cierto valor ponemos 1,
si no lo es ponemos 0
Sumamos todos lo
1 y hallamos el
area de dexteridad
donde cond(J) es numero 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.
Se usara los mismos 10 puntos (cada punto es un (L1 ,L2 ,d) y se usa de nube de puntos h=
0.0005 como solucion exacta que son 4804401 puntos que se utilizaran para la dexteridad)
ya usados anteriormente se obtiene por Nube de Puntos, ver tabla 4.4 la cual da los errores
relativo porcentual de comparar con el indice de dexteridad del mallado mas fino y de la
cual se concluye la media y desviacion estandar de los 10 puntos, ver Tabla 4.4.
Tabla 4.4: Resultados de los Errores Relativos Porcentuales por nube de puntos
Ptos,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
Desviacion estandar(std(x)) 0.0439 0.5774 3.3465 6.6112
Desviacion estandar(std(x,1)) 0.0416 0.5477 3.1551 6.2331
Por Metodo de Montecarlo se obtiene (si se usa como solucion exacta la de nube de
puntos para h=0.0005) ver tabla 4.5 la cual da los errores relativo porcentual (por el
Metodo de Montecarlo) de comparar con el indice de dexteridad del mallado mas fino y
de la cual se concluye la media y desviacion estandar de los 10 puntos
4.9. AJUSTE DEL ALGORITMO GENETICO PARA DEXTERIDAD 53
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 opcion usar h= 0.01 y de
tabla 4.5 para 12321 la media supera el 4 % es por eso que es mas seguro usar nube de
puntos que Montecarlo.
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
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
4.17 muestra la variacion del fitness para varios valores de SL, de la cual se concluye que
la de mayor fitness se da SL= 15.)
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
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
8450
8400
Valores de Fitness
8350
8300
8250
8200
50 100 150 200 250 300 350 400 450 500
Valores de la Poblacion
donde L1 = 0.3930, L2 = 0.3998 y d= 0.0005, por fitness da Area = 8468. Graficas del
area alcanzable y el area de dexteridad calculando el indice de dexteridad ver figura 4.20
y 4.21 en la primera figura en color azul muestra los puntos alcanzables y en la ultima
figura mientra se acerca a 1 es decir el color rojo es buena dexteridad, y se acerca a 0 en
color azul es mala dexteridad.
0.8
0.6
0.4
0.2
0
0.4 0.2 0 0.2 0.4 0.6
0.8
0.6
0.4
0.2
0
0.4 0.2 0 0.2 0.4 0.6
1. Los cuadros de los errores porcentuales mostro que trabajar con un mallado tan fino
no tiene importancia ya que hace mas lento el algoritmo. En el cuadro se muestra
que trabajar con un h= 0.01 la media da menor que 2 % con lo cual es un valor que
se puede trabajar y se disminuye el trabajo computacional.
0.8
0.6
0.4
0.2
0
0.4 0.2 0 0.2 0.4 0.6
0.8
0.6
0.4
0.2
0
0.4 0.2 0 0.2 0.4 0.6
Conclusiones
5.1. Conclusiones
La creciente demanda de los Robot Paralelos por el sector industrial, ha permitido que
entes academicos se interesen en el estudio de metodos para resolver problemas actuales
en este tipo de robot debido a la complejidad en su topologa, as como profundizar en
los diferentes temas de estudio como su espacio de trabajo.
En esta tesis se optimizo el espacio de trabajo diestro utilizando algoritmos evolutivos
(Algoritmos Geneticos).
En el presente trabajo se presento uno de los problemas de los robot paralelos su poco
espacio alcanzable que se sabe que es pequeno siendo uno de las pocas virtudes de este
tipo de robot.
Esta tesis se presento primero que todo, una introduccion de los temas abordados, se
abordo primero que todo la parte teorica correspondiente a Algoritmo genetico y como
segunda parte la de cinematica, se mostro as el problema de cinematica inversa con sus
respectivas ecuaciones que ayudaran ha hacer algunos Algoritmos computacionales.
Se mostro 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 enseno un camino de como ajustar los distintos parametros del Algoritmo genetico
para la convergencia del maximo.
El Algoritmo genetico maximiza las dimensiones del diseno del robot paralelo. Primero
se presento rangos de poco limite y despues un segundo ejemplo con rangos mas grandes
para no limitar al disenador del Robot Paralelo. Se mostro una forma de trabajar en
conjunto como maximizar el espacio de trabajo alcanzable con cierta dexteridad.
5.2. Recomendaciones
1. Se deja como futuro trabajo desarrollar las ecuaciones de cinematicas para robot
paralelos espaciales.
61
62 CAPITULO 5. CONCLUSIONES
4. Se deja como futuro trabajo una aplicacion de maxima area alcanzable y dexteridad
de un robot paralelo espacial.
Apendice A
63
64 APENDICE A. SOLUCION ALGEBRAICA POR REDUCCION A POLINOMIOS
Apendice B
Codigo de GA
1 function pop=encoding(popsize,stringlength,dimension)
2 pop=(round(rand(popsize,dimension*stringlength+dimension+2)));
65
66 APENDICE B. CODIGO DE GA
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 ultimas columnas de la variable pop consisten en el valor
de la funcion objetivo y la evaluacion de la funcion de restriccion. As, en este paso, las
restricciones pueden ser incluidas para resolver problemas de optimizacion restringidos
B.3. Selection(Seleccion)
Con el fin de decidir que miembro de la generacion actual tomara parte de la nueva
generacion, el fitnees de cada miembro de la poblacion 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 codigo anterior, la funcion objetivo se desplaza por un valor igual a
minf. Por ejemplo, si minf = 1.01 la funcion se desplaza 1 % del valor mnimo de la funcion
de fitnees (por lo tanto, la funcion de fitnees evita tener valores negativos)
En este proyecto se implementaron tres metodos de seleccion. La primera es la ruleta,
metodo estocastico, 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*i1,:)=pop(find(fitness pointer(1),1),:);
5 selected(2*i,:)=pop(find(fitness pointer(2),1),:);
6 end
El tercer enfoque se basa en el metodo Deb donde se aplica una seleccion de torneos
binarios con un conjunto de reglas para desarrollar el conjunto de acoplamiento para la
nueva generacion. Las siguientes reglas se aplican para comparar dos individuos:
2. Entre dos soluciones factibles, se prefiere el que tiene un mejor valor de funcion
objetivo.
3. Entre dos soluciones inviables, se prefiere el que tenga menor violacion de restriccion
1 case 'deb'
2 for i=1:popsize new
3 j=find(fitnessrand,1);
4 k=find(fitnessrand,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
68 APENDICE B. CODIGO DE GA
3 if rand < pc
4 cross=2;
5 if cross==1
6 cpoint=round(rand*(2*stringlength1))+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((stringlength1)*rand(1,dimension))+1;
12 for j=1:dimension
13 child1((j1)*stringlength+1:j*stringlength)=[parent1((j1)* ...
14 stringlength+1:(j1)*stringlength+cpoint(j)) parent2((j1)* ...
15 stringlength+cpoint(j)+1:j*stringlength)];
16 child2((j1)*stringlength+1:j*stringlength)=[parent2((j1)* ...
17 stringlength+1:(j1)*stringlength+cpoint(j)) parent1((j1)* ...
18 stringlength+cpoint(j)+1:j*stringlength)];
19 end
20 end
21 else
22 child1=parent1;
23 child2=parent2;
24 end
25 end
B.5. Mutation(Mutacion)
De acuerdo con la probabilidad de mutacion, un gen en algunos de los miembros de la
poblacion se cambia de 1 a 0 o viceversa, por lo que se realiza la mutacion. Esto es:
10 end
11 end
Como futuros trabajos recomendamos usar los metodos de Niching extienden AG sim-
ples promoviendo la formacion de subpoblaciones estables en el vecindario de soluciones
optimas. En este proyecto se implementa el metodo de comparticion. El metodo consiste
en buscar en el paisaje reduciendo la rentabilidad en regiones densamente pobladas.
70 APENDICE B. CODIGO DE GA
Apendice C
C.1. MainGA
Programa principal desde donde se ejecuta el Algoritmo Genetico 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];
71
72 APENDICE C. ALGORTIMO PARA EJECUCION DE LA OPTIMIZACION
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))/(nptos1):x bound(1,2)*1.1);
57 zt=150.*xt 175.*yt; %xt.2yt; %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 (EVALUACION EN LA FUNCION OBJETIVO) 73
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(i1))==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
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
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 %no hace nada
28 end
29 end
C.3. MAIN WORKSPACE 75
30 end
31 A=(p*(1.2)/12221);
32 end
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 %Z(j,i)=jaco5R r(xp(j),yp(i),a,b,d);
21 X(j,i)=xp(j);
22 Y(j,i)=yp(i);
23 end
24 end
25
26 % calculamos el area
27 [n1,m1]=size(Z);
28 n56=n1*m1;
29 R1=1Z;
30
31 A=(sum(sum(R1))*(1.2)/n56);
32
33
34
35
36 figure(1);
37 hold on;
38 contourf(X,Y,Z,5);
39 colorbar;
40 colorbar('location','SouthOutside')
41 colormap('winter')
42 axis( [0.6 0.6 0 1]);
43
44
45 %% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
46 Z2=Z;
76 APENDICE C. ALGORTIMO PARA EJECUCION DE LA OPTIMIZACION
47 X2=X;
48 Y2=Y;
49 s(1:length(Z(:,1)))=1;
50 for i=1:length(Z(:,1))
51 if (sum(Z(i,:))==(length(Z(1,:))))
52 s(i)=0;
53 end
54 end
55
56 dummy=find(s==0);
57
58 Z2(dummy,:)=[];
59 X2(dummy,:)=[];
60 Y2(dummy,:)=[];
61
62 %Veamos cual es el 20 % de numero de filas de Z
63 n21=size(Z);
64 m=n21(1)*0.20;
65 e=round(m);
66 %Hacemos otro chequeo sacando las filas que tienen un solo 0
67 s2(1:length(Z2(:,1)))=1;
68 for i=1:length(Z2(:,1))
69 if (sum(Z2(i,:))==(length(Z2(1,:))1))
70 s2(i)=0;
71 end
72 end
73
74 dummy2=find(s2==0);
75
76 Z2(dummy2,:)=[];
77 X2(dummy2,:)=[];
78 Y2(dummy2,:)=[];
79
80 % Ahora verificamos como quedo la matriz es decir si es un espacio de
81 % trabajo apreciable
82 n34=size(Z2);
83
84 % Comparamos
85 n34(1);
86 e;
87 if n34(1)e % yo le agregue una fila mas le exijo mas
88 fsuma=0;
89 else
90 s=[];
91 for j=1:length(Z2(:,1))
92 z=Z2(j,:);
93 x=X2(j,1);
94 y=Y2(j,:);
95 s=find(Z2(j,:));
96 z(s)=[];
97 y(s)=[];
98 max y=max(y);
99 min y=min(y);
C.3. MAIN WORKSPACE 77
102 end
103
104
105 %W([1 length(W(:,1))],:)=[];
106 Nptos=length(W(:,1));
107 %X3=zeros(Nptos,Nptos)
108 %Y3=zeros(Nptos1,Nptos);
109
110
111 for i=1:Nptos
112 step=(W(i,3)W(i,2))/(Nptos1);
113
114 X3(i,1:Nptos)=W(i,1);
115 % W(i,2):step:W(i,3);
116
117 Y3(i,1:Nptos)=(W(i,2):step:W(i,3));
118 end
119
120
121
122 for j=1:length(X3(:,1))
123 for i=1:length(Y3(1,:));
124 %Z3(j,i)=cond jaco5R(X3(j,i),Y3(j,i),a,b,d);
125 Z3(j,i)=jaco5R(X3(j,i),Y3(j,i),a,b,d);
126 end
127 end
128
129 n4=length(find(Z3));
130 fsuma=(sum(sum(Z3)))/n4;
131
132
133 figure(2);
134 hold on;
135 contourf(X3,Y3,Z3,6);
136 colorbar;
137 colorbar('location','SouthOutside')
138 axis( [0.6 0.6 0 1]);
139 colormap('jet')
140
141 end
142 end
4
5 a=x(1);
6 b=x(2);
78 APENDICE C. ALGORTIMO PARA EJECUCION DE LA OPTIMIZACION
7 d=x(3);
8
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 %Z(j,i)=jaco5R r(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
26 [m,n]=size(Z);
27 Z3=zeros(m,n); % contruyo la matriz completa incluyendo los que ...
tienen 1
28 Z12=1Z;
29 for j=1:length(Z3(:,1))
30 [q1,q2]= find(Z12(j,:)); % encuentro los valores distintos de
31 %0 es decir valen 1(los indices de ...
q2 bien
32 % a q1 le pone 1 no me sirve
33 [g12,h12]=size(q1);
34 if (g12*h12 6= 0) % por si es vacio
35 for p=1:length(q1)
36 %Z3(j,i)=cond jaco5R(X3(j,i),Y3(j,i),a,b,d);
37 Z3(j,q2(p))=jaco5R(X(j,q2(p)),Y(j,q2(p)),a,b,d);
38 % Z3 ya esta construidad solo cambia valores
39 end
40 else
41 end
42 end
43
44
45 fsuma=sum(sum(Z3)) ;
46
47 end
C.4. Workspace5R
Es sub-funcion del programa anterior y sirve para hallar que puntos del mallado son
alcanzable.
1
C.5. JACOB5R 79
4 v=0;
5
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-funcion del programa Main workspace para indice de dexteridad y sirve
para calcular el numero de condicion de la matriz jacobiana .
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
80 APENDICE C. ALGORTIMO PARA EJECUCION DE LA OPTIMIZACION
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
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 +
C.5. JACOB5R 81
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
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
1
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 )),
82 APENDICE C. ALGORTIMO PARA EJECUCION DE LA OPTIMIZACION
13 2*xp*a+d*ab2+xp2+xp*d+(1/4)*d2+yp2+a2);
14 q(2)= atan2(ya*sin(q(1)), (1/2)*d+xa*cos(q(1)));
15 q(3)= 2*atan2(2*yp*asqrt((4 * yp 2 * a 2) +
16 ((2 * xp * a d * a) 2) (b 2 (xp 2) + (xp * d)
17 (d 2) / 0.4e1
18 (yp 2) (a 2)) 2),
19 2*xp*ad*ab2+xp2xp*d+(1/4)*d2+yp2+a2);
20 q(4)= atan2(ya*sin(q(3)), x(1/2)*da*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 area dexteridad con el indice dexteridad, con las solucion de
los angulos 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 +
C.5. JACOB5R 83
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
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=(b2xp2yp2(1/4)*d2xp*da2);
23 o2=2*yp*a;
24 h2= d*a+2*xp*a;
25 q(1)= atan2(o2,h2)+atan2(sqrt(h22+o22c22),c2); % hay 2 soluciones
26 %la segunda atan2 puede ser +,
27 q(2)= atan2(ysin(q(1))*a,d/2+xcos(q(1))*a);
28 c1=(b2xp2yp2(1/4)*d2+xp*da2);
29 o1=2*yp*a;
30 h1=d*a+2*xp*a;
31 q(3)=atan2(o1,h1)atan2(sqrt(h12+o12c12),c1);
32 q(4)= atan2(ysin(q(3))*a,xd/2cos(q(3))*a);
33
34
35
36
37
59 f=0;
60 else
61 f=1/cond(J); %Calcula el numero de condicion de J
62 end
63 end
64 end
65 end
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
Bibliografa
Altuzarra, O., Sandru, B., Macho, E., and Amezua, E. (2010). Analisis de indicadores
cinematicos para el diseno de manipuladores paralelos. In XVIII Congreso Interna-
cional de Ingeniera Mecanica. Ciudad Real.
Gestal, M., Rivero, D., Rabunal, J. R., Dorado, J., and Pazos, A. (2010). Introduccion a
los algoritmos geneticos y la programacion genetica. Universidade da Coruna, Servicio
de Publicacions.
Huang, M. Z. (2011). Design of a planar parallel robot for optimal workspace and dexterity.
International Journal of Advanced Robotic Systems, 8(4):49.
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):859870.
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):145169.
Lou, Y., Liu, G., and Li, Z. (2008). Randomized optimal design of parallel manipulators.
Automation Science and Engineering, IEEE Transactions on, 5(2):223233.
Martnez, E., Pena, C. A., and Yime, E. (2010). Diseno optimo de un robot paralelo con
configuracion delta para aplicaciones educativas. Revista Educacion en Ingeniera,
5(10):110119.
85
86 BIBLIOGRAFA
Merlet, J.-P. (2006). Jacobian, manipulability, condition number, and accuracy of parallel
robots. Journal of Mechanical Design, 128(1):199206.
Pena Cortes, C. A., Martinez Oviedo, E., and Cardenas Herrera, P. F. (2011). Optimi-
zacion dimensional de un robot paralelo tipo delta basado en el menor consumo de
energa. Ciencia e Ingeniera Neogranadina,, 21(01):7388.
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):213224.
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):269275.