You do not have permission to edit this page, for the following reason:

You are not allowed to execute the action you have requested.


You can view and copy the source of this page.

x
 
1
==Un Algoritmo memético basado en la colonia artificial de abejas para síntesis óptima de mecanismos==
2
3
'''E. Vega-Alvarado'''<sup>a</sup>, '''E.A. Portilla-Flores'''<sup>a</sup>, '''G.A. Muñoz-Hernández'''<sup>b</sup>, '''E. Mezura-Montes'''<sup>c</sup>, '''G. Sepúlveda-Cervantes'''<sup>a</sup>, '''P. Bautista-Camino'''<sup>a</sup>'''
4
5
<sup>a</sup> Instituto Politécnico Nacional - CIDETEC - México<br />
6
<sup>b</sup> Instituto Tecnológico de Puebla - México<br />
7
<sup>c</sup> Universidad Veracruzana - Centro de Investigación en Inteligencia Artificial - México
8
9
10
<span style="font-size: 75%;">'''Received''': 4 May 2016<br />
11
'''Accepted''': 27 September 2016<br />
12
'''Published''': 2017</span>
13
14
15
16
'''Resumen'''
17
18
En este documento se presenta una propuesta novedosa de un algoritmo híbrido modular, como herramienta para resolver problemas de ingeniería del mundo real. Se implementa y aplica un algoritmo memético, MemMABC, para la solución de dos casos de diseño de mecanismos, con el fin de evaluar su eficiencia y rendimiento. El algoritmo propuesto es simple y flexible debido a su modularidad; estas características lo vuelven altamente reutilizable para ser aplicado en una amplia gama de problemas de optimización. Las soluciones de los casos de estudio también son modulares, siguiendo un esquema de programación estructurada que incluye el uso de variables globales para la configuración, y de subrutinas para la función objetivo y el manejo de las restricciones. Los algoritmos meméticos son una buena opción para resolver problemas duros de optimización, debido a la sinergia derivada de la combinación de sus componentes: una metaheurística poblacional para búsqueda global y un método de refinamiento local. La calidad en los resultados de las simulaciones sugiere que el MemMABC puede aplicarse con éxito para la solución de problemas duros de diseño en ingeniería.
19
20
'''Palabras clave:''' ABC, síntesis dimensional, algoritmos meméticos, metaheurísticas, optimización
21
22
23
==A memetic algorithm based on Artificial Bee   Colony for optimal synthesis of mechanisms==
24
25
'''Abstract'''
26
27
In this paper a novel proposal of a modular hybrid algorithm as a tool for solving real-world engineering problems is presented. A memetic algorithm, MemMABC, is implemented with this approach and applied to solve two case studies of mechanism design, in order to evaluate its efficiency and performance. Because of its modularity, the proposed algorithm is simple and flexible; these features make it quite reusable to be applied on different optimization problems, with a wide scope. The solutions of the optimization problems are also modular, following a scheme of structured programming that includes the use of global variables for configuration, and subroutines for the objective function and the restrictions. Memetic algorithms are a good option to solve hard optimization problems, because of the synergy derived from the combination of their components: a global search population-based metaheuristic and a local refinement method. The quality of simulation results suggests that MemMABC can be successfully applied to solve hard problems in engineering design.
28
29
'''keywords''': ABC, dimensional synthesis, memetic algorithms, metaheuristics, optimization
30
31
32
==1 Introducción==
33
34
Actualmente, la solución de casos de ingeniería del mundo real mediante su planteamiento como problemas de optimización es una práctica de uso extendido en el campo de la ingeniería <span id='citeF-1'></span>[[#cite-1|[1]]], dado que existe una amplia base de métodos para resolver dichos problemas matemáticos. Entre las ventajas derivadas de esta abstracción destacan la alta reconfigurabilidad tanto en la definición de los casos de estudio como en su implementación física, la posibilidad de encontrar más de una solución si el problema es multimodal (cuya prueba representa en sí todo un problema teórico), y la facilidad de evaluación del rendimiento de los sistemas propuestos, entre otras. Existen diversas opciones para resolver estos problemas de optimización, siendo las más empleadas los métodos clásicos y las metaheurísticas.
35
36
Los métodos clásicos de optimización son técnicas analíticas que hacen uso del cálculo diferencial para localizar los valores óptimos <span id='citeF-2'></span>[[#cite-2|[2]]]. Estos métodos tienen un alcance limitado en las aplicaciones prácticas, ya que la mayoría de los problemas de ese tipo están fuertemente restringidos o involucran funciones que no son continuas y/o diferenciables; sin embargo, por su carácter de métodos exactos deben considerarse como la primera opción al resolver problemas de optimización. Por su parte, las metaheurísticas resuelven de forma aproximada los problemas de optimización por medio de técnicas de prueba y error, siendo una de las áreas de la inteligencia artificial con mayor actividad; frecuentemente aparecen mejoras a los algoritmos existentes e incluso nuevos algoritmos, basados en diferentes filosofías <span id='citeF-3'></span>[[#cite-3|[3]]]. La metodología de diseño de las metaheurísticas generalmente es la misma: se estudia un fenómeno de la naturaleza, se abstrae un modelo descriptivo y se simula con un algoritmo <span id='citeF-4'></span>[[#cite-4|[4]]]; después se evalúa el desempeño de dicho algoritmo usando bancos de pruebas con funciones conocidas <span id='citeF-5'></span><span id='citeF-6'></span>[[#cite-5|[5,6]]]. Sin embargo, la mayoría de los casos se quedan en esa etapa experimental, y no se aplican para resolver problemas del mundo real.
37
38
La complejidad ya citada de los problemas en ingeniería hace que por lo general sea impráctico o imposible el usar métodos tradicionales para resolverlos usando recursos de cómputo convencionales. Sin embargo, muchos de estos casos sólo requieren una solución fácilmente alcanzable y suficientemente buena para ser fabricada; así, las metaheurísticas son una opción factible para dichos problemas, con soluciones de calidad tanto desde el punto de vista algorítmico como del diseño.
39
40
La hibridación potencia el desempeño de las metaheurísticas, mediante la combinación sinérgica de algoritmos de población para búsqueda global (GS) con técnicas de búsqueda local (LS) <span id='citeF-7'></span>[[#cite-7|[7]]].  Existe toda una taxonomía para clasificar a las metaheurísticas híbridas (HM), dependiendo de la manera en que se combinen sus elementos básicos <span id='citeF-8'></span>[[#cite-8|[8]]]. Destacan por su diseño simple las HM de tipo integrativo y trabajo en equipo, donde el algoritmo de búsqueda local (subordinado) se convierte en un componente del método de población (maestro); los algoritmos meméticos (MA) son los ejemplos más representativos de esta categoría <span id='citeF-9'></span><span id='citeF-10'></span>[[#cite-9|[9,10]]].
41
42
La aplicación de los MA <span id='citeF-11'></span>[[#cite-11|[11]]] se ha enfocado mayormente a la optimización combinatoria, en casos tales como el del agente viajero (TSP) <span id='citeF-12'></span>[[#cite-12|[12]]], la programación de enfermeras <span id='citeF-13'></span>[[#cite-13|[13]]] y el problema de la mochila (KP) <span id='citeF-14'></span>[[#cite-14|[14]]]. El uso de estos métodos en diseño en ingeniería del mundo real es un campo poco explorado; entre los desarrollos destacan la cinemática inversa de un manipulador robótico <span id='citeF-15'></span>[[#cite-15|[15]]], el diseño de filtros para comunicaciones <span id='citeF-16'></span>[[#cite-16|[16]]], el manejo de redundancia <span id='citeF-17'></span>[[#cite-17|[17]]] y la planificación de tareas en mallas de cómputo <span id='citeF-18'></span>[[#cite-18|[18]]].
43
44
En optimización son bien conocidos los teoremas de ''No Free Lunch ''<span id='citeF-19'></span>[[#cite-19|[19]]], estableciendo que si un algoritmo se desempeña particularmente bien para una clase determinada de problemas entonces su rendimiento es inferior al promedio en los casos restantes. Esto es, no hay un algoritmo que resuelva eficientemente cualquier problema; sin embargo, si se considera la estructura de los problemas y su modelado se pueden diseñar métodos suficientemente generales para que el conjunto de sus aplicaciones sea muy amplio. Adicionalmente, los algoritmos serán altamente reutilizables si se programan de manera modular <span id='citeF-20'></span>[[#cite-20|[20]]].
45
46
En este trabajo se presenta la implementación de un algoritmo memético, desarrollado a partir de los algoritmos de colonia artificial de abejas modificado (MABC) y de caminata aleatoria (RW), aplicado a dos casos de síntesis de mecanismos. El objetivo es mostrar la utilidad de estos métodos para resolver problemas de optimización en ingeniería, si dichos casos se plantean correctamente desde el punto de vista matemático y la programación de los algoritmos se realiza de manera estructurada. La organización del escrito es la siguiente: en la Sección 2 se incluye una introducción a las metaheurísticas y dentro de ésta a los algoritmos meméticos; en la Sección 3 se explica el MA propuesto y sus componentes; la Sección 4 describe los casos de estudio; la Sección 5 corresponde a la implementación computacional del algoritmo; en la Sección 6 se analizan los resultados obtenidos, y en la Sección 7 se presenta la discusión final.
47
48
==2 Algoritmos meméticos==
49
50
===2.1 Metaheurísticas de población===
51
52
Las metaheurísticas basadas en población toman un conjunto inicial de soluciones (individuos) para buscar los valores óptimos, y tratan de ajustar dichas soluciones dentro del área de búsqueda conforme transcurren las ''generaciones''; existen dos grupos generales en estos algoritmos: computación evolutiva e inteligencia de cúmulos. Una metaheurística efectúa su búsqueda mediante dos tareas: la exploración (diversificación) y la explotación (intensificación); generalmente, las técnicas de población son buenas diversificando pero realizan una intensificación deficiente <span id='citeF-3'></span>[[#cite-3|[3]]].
53
54
===2.2 Algoritmo de colonia artificial de abejas===
55
56
Los algoritmos de inteligencia de cúmulos son metaheurísticas del campo de la inteligencia artificial, basadas en modelos sobre la manera en que se organizan diferentes sociedades de organismos vivos. La colonia artificial de abejas (''Artificial Bee Colony'', ABC) es un algoritmo de inteligencia de cúmulos, propuesto por Karaboga en 2005 <span id='citeF-21'></span>[[#cite-21|[21]]], que se basa en la conducta de los enjambres durante dos procesos naturales: el reclutamiento de abejas para la explotación de fuentes de alimento y el abandono de las fuentes agotadas.
57
58
En el algoritmo ABC, las abejas en una colonia se dividen en tres grupos: empleadas, observadoras y exploradoras. El número de empleadas es igual al número de fuentes y cada empleada está asignada a una de ellas; después de alcanzar su fuente, cada abeja calcula una nueva solución a partir de ahí y conserva la mejor entre ambas. El número de observadoras es igual al de las empleadas y su asignación a las fuentes se  determina con base en el rendimiento de las mismas; las observadoras también calculan nuevas soluciones a partir de su fuente asignada. Finalmente, cuando una fuente no mejora después de un determinado número de ciclos, se abandona y es remplazada por otra encontrada por una exploradora. Las tres etapas de evaluación de fuentes del ABC se muestran en la Figura [[#img-1|1]]. <div id='img-1'></div>
59
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
60
|-
61
|[[Image:Draft_Samper_274772883-MABC.png|658px|Proceso de generación y sustitución de fuentes en el algoritmo ''Artificial Bee Colony'' (ABC) <span id='citeF-22'></span>[[#cite-22|[22]]]]
62
|- style="text-align: center; font-size: 75%;"
63
| colspan="1" | '''Figura 1:''' Proceso de generación y sustitución de fuentes en el algoritmo ''Artificial Bee Colony'' (ABC) <span id='citeF-22'></span>[[#cite-22|[22]]]
64
|}
65
66
Se han desarrollado diferentes versiones del algoritmo ABC; la modificación propuesta por Mezura y Cetina <span id='citeF-22'></span>[[#cite-22|[22]]] maneja problemas de optimización numérica con restricciones, con una selección de individuos tipo torneo basada en los criterios propuestos por Deb <span id='citeF-23'></span>[[#cite-23|[23]]]. Dicho algoritmo, denominado ''Modified Artificial Bee Colony'' (MABC), usa tres parámetros definidos por el usuario: el número de fuentes (soluciones posibles) ''SN'', el número total de ciclos ''MCN'', y el número de intentos sucesivos de mejora en una fuente antes de remplazarla.
67
68
===2.3 Búsqueda Local===
69
70
Los algoritmos de búsqueda local parten de un conjunto inicial de soluciones (normalmente con un individuo), iterando para realizar transiciones con los vecinos de la configuración actual; la idea es encontrar mejores poblaciones dentro del vecindario y convertirlas en la siguiente configuración, o en caso contrario conservar la solución inicial <span id='citeF-24'></span>[[#cite-24|[24]]]. En la Figura [[#img-2|2]] se muestra un ejemplo de LS, indicada para el primer individuo de la población, <math display="inline">p_1</math>.
71
72
En los casos de optimización combinatoria el vecindario es el conjunto de soluciones a las que se accede por medio de un cambio unitario en el individuo actual, mientras que en los problemas de tipo continuo es un conjunto compuesto por un número infinito de puntos, por lo que se requiere de una estrategia de modificación para encontrar aquellos que se consideren como vecinos <span id='citeF-25'></span>[[#cite-25|[25]]]. La búsqueda de vecinos puede ser estocástica o determinística, enfocada a encontrar sólo uno o todo un conjunto de ellos. <div id='img-2'></div>
73
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
74
|-
75
|[[Image:Draft_Samper_274772883-LS.png|264px|Búsqueda local basada en vecindarios.]]
76
|- style="text-align: center; font-size: 75%;"
77
| colspan="1" | '''Figura 2:''' Búsqueda local basada en vecindarios.
78
|}
79
80
===2.4 Caminata aleatoria===
81
82
Existen diversos algoritmos que pueden emplearse para implementar una búsqueda local. Entre ellos, la caminata aleatoria (''Random Walk'', RW) es un método directo de fácil implementación ya que no necesita el gradiente ni el hessiano de la función objetivo; el Algoritmo [[#algorithm-1|1]] muestra este método. RW se basa en aproximaciones hacia el óptimo local a partir de un punto inicial <math display="inline">X_i</math>, donde el vecino siguiente <math display="inline">X_{i+1}</math> se genera por ([[#eq-1|1]]):
83
84
<span id="eq-1"></span>
85
{| class="formulaSCP" style="width: 100%; text-align: left;" 
86
|-
87
| 
88
{| style="text-align: left; margin:auto;width: 100%;" 
89
|-
90
| style="text-align: center;" | <math>X_{i+1}=X_i+\lambda u_i   </math>
91
|}
92
| style="width: 5px;text-align: right;white-space: nowrap;" | (1)
93
|}
94
95
donde <math display="inline">\lambda </math> es una longitud preestablecida y <math display="inline">u_i</math> es un vector unitario que requiere de un conjunto con números aleatorios <math display="inline">d_i</math> en el intervalo [-1,1], cuya cardinalidad corresponde al total de variables del vector de diseño. Los valores del conjunto se transforman en direcciones de búsqueda, y se debe evitar que ésta se dirija hacia las diagonales del hipercubo unitario que rodea al punto inicial <span id='citeF-2'></span>[[#cite-2|[2]]]; por ello, los números aleatorios generados se aceptan solamente si <math display="inline">D \le 1</math>, calculando a <math display="inline">D</math> por ([[#eq-2|2]]),
96
97
<span id="eq-2"></span>
98
{| class="formulaSCP" style="width: 100%; text-align: left;" 
99
|-
100
| 
101
{| style="text-align: left; margin:auto;width: 100%;" 
102
|-
103
| style="text-align: center;" | <math>D=(d_1^2+d_2^2+...+d_n^2)^{1/2}  </math>
104
|}
105
| style="width: 5px;text-align: right;white-space: nowrap;" | (2)
106
|}
107
108
109
{| style="margin: 1em auto;border: 1px solid darkgray;font-size: 85%;"
110
|-
111
|
112
:'''begin'''
113
::   '''establecer''' <math>MaxIter, MaxCount</math> y punto inicial <math>X_{0}</math>
114
::   '''evaluar''' función objetivo en <math>X_{0}</math>
115
:: <math>Iteraciones=1</math>, <math>Evaluaciones=1</math>
116
::   '''while''' Continuar==Cierto '''do'''
117
:::    '''repeat''' <math>R\le{1}</math> '''do'''
118
:::: <math>R=0</math>
119
::::     '''for''' <math>J=1</math> to <math>Var</math> '''do'''
120
::::: <math>Dir(J)=-.1+(2*rand(1,J))/10</math>
121
::::: <math>D=D+Dir(J)^2</math>
122
:::::     
123
::::'''end'''
124
:::: <math>D=sqrt(R)</math>
125
::::    
126
:::'''end'''
127
:::     '''for''' <math>J=1</math> to <math>Var</math> '''do'''
128
:::: <math>U(J)=Dir(J)/D</math>
129
:::: <math>X_{T}(J)=X_0(J)+\lambda *U(J)</math>
130
::::    
131
:::'''end'''
132
:::    '''evaluar''' función objetivo en <math>X_{T}</math>
133
::: <math>Evaluaciones=Evaluaciones+1</math> 
134
:::    '''seleccionar''' mejor entre <math>X_{T}</math> y <math>X_{0}</math> y conservarlo en <math>X_{0}</math>
135
:::    '''if''' <math>MaxIter<Iteraciones</math> '''then'''
136
:::: <math>\lambda =\lambda /2</math>
137
:::: <math>Iteraciones=1</math>
138
::::     '''if''' <math>\lambda{<}=\epsilon </math> '''then'''
139
::::: <math>Continuar=Falso</math>
140
:::::     
141
::::'''end'''
142
::::    
143
:::'''else'''
144
:::: <math>Iteraciones=Iteraciones+1</math>
145
::::   
146
:::'''end'''
147
:::    '''if''' <math>Evaluaciones>=MaxCount</math> '''then'''
148
:::: <math>Continuar=Falso</math>
149
::::  
150
:::'''end'''
151
::: 
152
::'''end'''
153
:: 
154
:'''end'''
155
: 
156
|}
157
<div class="center" style="width: auto; margin-left: auto; margin-right: auto;font-size: 90%;">
158
'''Algoritmo 1:''' Algoritmo de caminata aleatoria.</div>
159
160
===2.5 Definición de algoritmo memético===
161
162
Los algoritmos meméticos son métodos híbridos, que combinan sinérgicamente una metaheurística de población como buscador global con el refinamiento de otro algoritmo utilizado como buscador local. La finalidad es compensar la debilidad del algoritmo basado en población para explotar el espacio de soluciones factibles; el buscador local puede ser determinístico o metaheurístico <span id='citeF-10'></span><span id='citeF-26'></span>[[#cite-10|[10,26]]]. El Algoritmo [[#algorithm-2|2]] corresponde a un MA básico, considerando métodos generales para las búsquedas global (línea 8) y local (líneas 6 y 10).  
163
164
{| style="margin: 1em auto;border: 1px solid darkgray;font-size: 85%;"
165
|-
166
|
167
:'''begin'''
168
::   '''inicializar''' ''parámetros propios del algoritmo''
169
:: <math>GenActual</math>=0
170
::   '''iniciar''' poblacion <math>P</math>
171
::   '''evaluar''' <math>P</math>
172
::   '''aplicar''' busqueda local en <math>P</math>
173
::   '''while''' ''<math>GenActual<MaxGeneraciones</math>'' '''do'''
174
:::    '''aplicar''' busqueda global en <math>P</math>
175
:::    '''evaluar''' <math>P</math>
176
:::    '''aplicar''' busqueda local en <math>P</math>
177
::: <math>GenActual=GenActual+1</math>
178
:::  
179
::'''end'''
180
::  
181
:'''end'''
182
|}
183
<div class="center" style="width: auto; margin-left: auto; margin-right: auto;font-size: 90%;">
184
'''Algoritmo 2:''' Modelo básico de un MA.</div>
185
186
==3 Desarrollo del algoritmo propuesto==
187
188
En este trabajo se implementa el algoritmo MemMABC, que combina al MABC como buscador global y a RW como búsqueda local activada por tiempo; el Algoritmo [[#algorithm-3|3]] corresponde al MemMABC. La activación de las etapas de refinamiento se controla con la variable <math display="inline">Disparo</math>, que es el número de generaciones entre cada LS, mientras que su profundidad depende de la variable ''Intensidad''.
189
190
El algoritmo RW fue modificado en MemMABC para reducir tanto el esfuerzo computacional requerido como para permitir el manejo de restricciones, esto último empleando las reglas de Deb. Para la condición de paro se estableció un máximo de evaluaciones de la función objetivo (<math display="inline">MaxEvs</math>); esto permite una comparación justa entre el algoritmo y otros métodos de optimización <span id='citeF-27'></span>[[#cite-27|[27]]]. El MemMABC se implementó de manera modular con programación estructurada, aumentando su reutilizabilidad mediante un diseño simple y flexible; para ello se diseñaron las siguientes funciones: <span style="text-align: center; font-size: 75%;">
191
192
* <math display="inline">inicial( )</math>: configuración de parámetros del algoritmo, contadores y cotas.
193
* <math display="inline">fun\_objetivo( )</math>: entrada: individuo <math display="inline">x</math>; salida: valor de función objetivo en <math display="inline">x</math>.
194
* <math display="inline">svr( )</math>: entrada: individuo <math display="inline">x</math>; salida: suma de violación de restricciones de <math display="inline">x</math>.
195
* <math display="inline">deb( )</math>: entrada: individuos <math display="inline">A</math> y <math display="inline">B</math>; salida: mejor solución aplicando las reglas de Deb.
196
* <math display="inline">best( )</math>: entrada: población total; salida: mejor individuo por función objetivo.
197
* <math display="inline">rw( )</math>: entrada: mejor individuo; salida: mejor individuo en el vecindario.  
198
199
</span> 
200
{| style="margin: 1em auto;border: 1px solid darkgray;font-size: 85%;"
201
|-
202
|
203
:'''begin'''
204
::   '''ejecutar inicial( )''' ''// establecer configuración de inicio''
205
::   '''generar''' <math>x_{i}^0, i=1,...,Fuentes</math> '' //poblacion aleatoria inicial''
206
::                                '''ejecutar fun_objetivo( ), svr( )''' para <math>x_{i}^0, i=1,...,Fuentes</math>
207
::   '''repeat''' <math>Evaluaciones>=MaxEvs</math> '''do'''
208
:::       '''for''' <math>I=1</math>:<math>Fuentes</math> '''do'''
209
::::     '''generar''' <math>v_{i}^G</math> con <math>x_{i}^{G-1}</math>
210
::::     '''ejecutar fun_objetivo( ), svr( )''' sobre <math>v_{i}^G</math>
211
:::: <math>Evs=Evs+1</math> 
212
::::     '''ejecutar deb( )''' sobre <math>v_{i}^G</math> y <math>x_{i}^{G-1}</math> ''// aplicar reglas de Deb''
213
::::     '''if''' <math>v_{i}^G</math> es mejor que <math>x_{i}^{G-1}</math> '''then'''
214
::::: <math>x_{i}^g=v_{i}^{G}</math>
215
:::::     
216
::::'''else'''
217
::::: <math>x_{i}^G</math>=<math>x_{i}^{G-1}</math>
218
:::::    
219
::::'''end'''
220
::::    
221
:::'''end'''
222
:::   '''for''' <math>I=1</math>:<math>Fuentes</math> '''do'''
223
::::    '''seleccionar''' <math>x_{i}^G</math> en una selección tipo torneo
224
::::    '''generar''' <math>v_{i}^G</math> with <math>x_{i}^{G}</math>
225
::::    '''ejecutar fun_objetivo( ), svr( )''' sobre <math>v_{i}^G</math>
226
:::: <math>Evs=Evs+1</math> 
227
::::    '''ejecutar deb( )''' sobre <math>v_{i}^G</math> y <math>x_{i}^{G}</math> ''// aplicar reglas de Deb''
228
::::    '''if''' <math>v_{i}^G</math> es mejor que <math>x_{i}^{G}</math> '''then'''
229
::::: <math>x_{i}^G=v_{i}^{G}</math>
230
:::::    
231
::::'''end'''
232
::::   
233
:::'''end'''
234
:::   '''for''' <math>I=1</math>:<math>Fuentes</math> '''do'''
235
::::    '''aplicar''' operador de vuelo inteligente a fuentes agotadas
236
::::      '''if''' ''fuente mejorada'' '''then'''
237
::::: <math>Evs=Evs+1</math>
238
:::::    
239
::::'''end'''
240
::::   
241
:::'''end'''
242
:::   '''conservar''' <math>x(Mejor)^G</math> '' // mejor solución del ciclo''
243
:::   '''if''' <math>((G) mod (Disparo))==0</math> '''then'''
244
::::    '''ejecutar rw( )''' sobre <math>x(Mejor)^G</math>  ''// búsqueda local'' 
245
::::   
246
:::'''end'''
247
::: <math>G=G+1</math>
248
::'''until''' ''Evaluaciones >= MaxEvs;''
249
:'''end'''
250
|}
251
<div class="center" style="width: auto; margin-left: auto; margin-right: auto;font-size: 85%;">
252
'''Algoritmo 3: MemMABC.</div>
253
254
==4 Casos de estudio==
255
256
Para la prueba de los algoritmos se usaron dos problemas reales de síntesis de mecanismos, los cuales se seleccionaron por su alta complejidad. La medida de dicha complejidad es el parámetro <math display="inline">\rho </math> <span id='citeF-6'></span>[[#cite-6|[6]]], que corresponde a la relación entre la zona factible y el espacio de búsqueda del problema, vista como el porcentaje de soluciones factibles encontradas en un número arbitrariamente grande de soluciones generadas al azar. En cada caso de estudio se tomó un millón de valores, generando <math display="inline">\rho _1</math>=0.0043% y <math display="inline">\rho _2</math>=0002%, respectivamente. Los casos se plantearon como optimización mono-objetivo, definiéndose tanto su función objetivo (<math display="inline">FO</math>) como las cotas y las restricciones asociadas.
257
258
Si bien en el enfoque del diseño mecatrónico normalmente se consideran aspectos tanto cinemáticos como dinámicos para el planteamiento de problemas de optimización (MODOP, ''Multiobjective Dynamic Optimization Problem'') <span id='citeF-1'></span>[[#cite-1|[1]]], para estos casos de estudio el análisis se centró en el comportamiento cinemático de los sistemas porque unicamente se necesita determinar el diseño estructural de los mismos. En etapas posteriores se considerarán otros aspectos, tales como el peso, resistencia de los materiales empleados, estética, diseño del controlador, etc., que convertirán a estos problemas en casos MODOP.
259
260
===4.1 Caso 1: Mecanismo de cuatro barras para   seguimiento de una trayectoria lineal (CE1)===
261
262
El mecanismo de cuatro barras es uno de los más utilizados en el diseño de maquinaria, debido a su simplicidad para movimientos controlados de un grado de libertad <span id='citeF-28'></span><span id='citeF-29'></span>[[#cite-28|[28,29]]]. La Figura [[#img-3|3]] muestra un mecanismo de cuatro barras cuyos elementos son: barra de referencia (<math display="inline">r_1</math>), manivela (<math display="inline">r_2</math>), biela (<math display="inline">r_3</math>) y balancín (<math display="inline">r_4</math>); para realizar el análisis de posición se parte de la ecuación de cierre de circuito, indicada en ([[#eq-3|3]]):
263
264
<span id="eq-3"></span>
265
{| class="formulaSCP" style="width: 100%; text-align: left;" 
266
|-
267
| 
268
{| style="text-align: left; margin:auto;width: 100%;" 
269
|-
270
| style="text-align: center;" | <math>\vec{r}_{1}+\vec{r}_{4}=\vec{r}_{2}+\vec{r}_{3}  </math>
271
|}
272
| style="width: 5px;text-align: right;white-space: nowrap;" | (3)
273
|}
274
275
<div id='img-3'></div>
276
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
277
|-
278
|[[Image:Draft_Samper_274772883-mecanismo.png|682px|Mecanismo de cuatro barras]]
279
|- style="text-align: center; font-size: 75%;"
280
| colspan="1" | '''Figura 3:''' Mecanismo de cuatro barras
281
|}
282
283
El giro de <math display="inline">r_2</math>, dado por el ángulo <math display="inline">\theta _2</math>, provoca que <math display="inline">r_4</math> oscile, desplazando a su vez a <math display="inline">r_3</math>. Cada punto que cruza el mecanismo se determina por el acoplador <math display="inline">C</math>, cuya coordenada de posición se indica en ([[#eq-4|4]]),
284
285
<span id="eq-4"></span>
286
{| class="formulaSCP" style="width: 100%; text-align: left;" 
287
|-
288
| 
289
{| style="text-align: left; margin:auto;width: 100%;" 
290
|-
291
| style="text-align: center;" | <math>\left[\begin{array}{c}C_{x}\\ C_{y} \end{array}\right]= \left[\begin{array}{cc}cos\theta _{0} & -sin\theta _{0} \\ sin\theta _{0} & cos\theta _{0} \end{array}\right]\left[\begin{array}{c}C_{xr} \\ C_{yr} \end{array}\right]+\left[\begin{array}{c}x_{0} \\ y_{0} \end{array} \right]  </math>
292
|}
293
| style="width: 5px;text-align: right;white-space: nowrap;" | (4)
294
|}
295
296
Para este caso el acoplador debe pasar sin sincronización previa por seis puntos alineados verticalmente, cuyas coordenadas están dadas en ([[#eq-5|5]]); el desarrollo detallado de este problema específico se encuentra en <span id='citeF-30'></span>[[#cite-30|[30]]]
297
298
<span id="eq-5"></span>
299
{| class="formulaSCP" style="width: 100%; text-align: left;" 
300
|-
301
| 
302
{| style="text-align: left; margin:auto;width: 100%;" 
303
|-
304
| style="text-align: center;" | <math>\Omega =\left\lbrace \begin{array}{ccc}(20,20) & (20,25) & (20,30) \\ (20,35) & (20,40) & (20,45) \end{array}\right\rbrace </math>
305
|}
306
| style="width: 5px;text-align: right;white-space: nowrap;" | (5)
307
|}
308
309
Se desea minimizar la distancia entre los puntos ideales <math display="inline">C^i_d</math> y los puntos calculados <math display="inline">C^i</math>, por lo que se propone la función objetivo en ([[#eq-6|6]]), correspondiente al error cuadrático entre dichos puntos:
310
311
<span id="eq-6"></span>
312
{| class="formulaSCP" style="width: 100%; text-align: left;" 
313
|-
314
| 
315
{| style="text-align: left; margin:auto;width: 100%;" 
316
|-
317
| style="text-align: center;" | <math>f(\theta _{2}^{i})=\sum _{i=1}^{N}\left[(C_{xd}^{i}-C_{x}^{i})^{2}+(C_{yd}^{i}-C_{y}^{i})^{2} \right]  </math>
318
|}
319
| style="width: 5px;text-align: right;white-space: nowrap;" | (6)
320
|}
321
322
El vector de diseño correspondiente está dado por ([[#eq-7|7]]); para completar la caracterización del problema de optimización numérica se requiere considerar las cotas de las variables de diseño, mismas que se expresan en ([[#eq-8|8]])
323
324
<span id="eq-7"></span>
325
{| class="formulaSCP" style="width: 100%; text-align: left;" 
326
|-
327
| 
328
{| style="text-align: left; margin:auto;width: 100%;" 
329
|-
330
| style="text-align: center;" | <math>\vec{x}=\left[r_{1},...,r_{4},r_{cx},r_{cy},\theta _{0},x_{0},y_{0},\theta _{2}^{1},...,\theta _{2}^{6}\right]^T </math>
331
| style="width: 5px;text-align: right;white-space: nowrap;" | (7)
332
|-
333
| style="text-align: center;" | <math>=\left[x_{1},x_{2},...,x_{15} \right]^{T}  </math>
334
|}
335
|}
336
337
<span id="eq-8"></span>
338
{| class="formulaSCP" style="width: 100%; text-align: left;" 
339
|-
340
| 
341
{| style="text-align: left; margin:auto;width: 100%;" 
342
|-
343
| style="text-align: center;" | <math>0  \leq  x_{i}\leq 60, \quad i=1,2,3,4 </math>
344
| style="width: 5px;text-align: right;white-space: nowrap;" | (8)
345
|-
346
| style="text-align: center;" | <math>  -60  \leq  x_{i}\leq 60, \quad i=5,6,8,9 </math>
347
|-
348
| style="text-align: center;" | <math>  0  \leq  x_{i}\leq 2\pi , \quad i=7,10-15  </math>
349
|}
350
|}
351
352
===4.2 Caso 2: Efector final tipo pinza de dos dedos (CE2)===
353
354
Los robots son sistemas mecatrónicos programados para tareas específicas tales como soldar o perforar, cuya realización requiere de efectores finales <span id='citeF-31'></span>[[#cite-31|[31]]]; dichos efectores se clasifican en herramientas y manipuladores. Los manipuladores emulan manos humanas; el tipo más común tiene dos dedos y un grado de libertad (Figura [[#img-4|4]]). Sus elementos son: 1) base, 2) tornillo de potencia y tuerca, 3) eslabón de agarre y, 4) eslabón de acoplamiento; la Figura [[#img-5|5]] muestra su diagrama esquemático, donde cada vector <math display="inline">r_i</math> se relaciona con el <math display="inline">i</math>-ésimo eslabón del mecanismo. La ecuación de cierre de circuito está dada por ([[#eq-9|9]]), mientras que las expresiones en ([[#eq-10|10]]) corresponden a la posición <math display="inline">P</math> de los extremos del efector:
355
356
<span id="eq-9"></span>
357
{| class="formulaSCP" style="width: 100%; text-align: left;" 
358
|-
359
| 
360
{| style="text-align: left; margin:auto;width: 100%;" 
361
|-
362
| style="text-align: center;" | <math>\vec{r}_{1}+\vec{r}_{3}=\vec{r}_2+\vec{r}_{0}+\vec{r}_{4} </math>
363
|}
364
| style="width: 5px;text-align: right;white-space: nowrap;" | (9)
365
|}
366
367
<span id="eq-10"></span>
368
{| class="formulaSCP" style="width: 100%; text-align: left;" 
369
|-
370
| 
371
{| style="text-align: left; margin:auto;width: 100%;" 
372
|-
373
| style="text-align: center;" | <math>P_{x}= r_{1}cos\theta _{1}+r_{f}cos\theta _{3} </math>
374
| style="width: 5px;text-align: right;white-space: nowrap;" | (10)
375
|-
376
| style="text-align: center;" | <math> P_{y}= r_{1}sen\theta _{1}+r_{f}sen\theta _{3} </math>
377
|}
378
|}
379
380
<div id='img-4'></div>
381
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
382
|-
383
|[[Image:Draft_Samper_274772883-Ensamble.png|180px|Efector final]]
384
|- style="text-align: center; font-size: 75%;"
385
| colspan="1" | '''Figura 4:''' Efector final
386
|}
387
388
Uno de los aspectos más importantes en este diseño corresponde a la fuerza de agarre o a su transmisión; así, <math display="inline">F_T</math> es la fuerza de agarre ejercida por el efector sobre el objeto de interés, y está dada por ([[#eq-11|11]]),
389
390
<span id="eq-11"></span>
391
{| class="formulaSCP" style="width: 100%; text-align: left;" 
392
|-
393
| 
394
{| style="text-align: left; margin:auto;width: 100%;" 
395
|-
396
| style="text-align: center;" | <math>F_{T}=\frac{r_{3}sen(\theta _{4}-\theta _{3})}{2r_{f}sen\theta _{3}sen\theta _{4}}P </math>
397
|}
398
| style="width: 5px;text-align: right;white-space: nowrap;" | (11)
399
|}
400
401
El criterio para evaluar el desempeño de este manipulador es que la fuerza de sujeción sea constante en toda la apertura o espacio de trabajo; una explicación detallada de este problema se encuentra en <span id='citeF-32'></span>[[#cite-32|[32]]]. Como se observa en la Figura [[#img-4|4]], la posición del extremo del efector depende de la altura de la tuerca en el tornillo de potencia; así, se requiere minimizar la función objetivo, la cual debe tender a cero para mantener la fuerza constante como se indica en ([[#eq-12|12]]):
402
403
<span id="eq-12"></span>
404
{| class="formulaSCP" style="width: 100%; text-align: left;" 
405
|-
406
| 
407
{| style="text-align: left; margin:auto;width: 100%;" 
408
|-
409
| style="text-align: center;" | <math>f(r_{2})=(F_{T}(r_{2min})-F_{T}(r_{2max}))^2 </math>
410
|}
411
| style="width: 5px;text-align: right;white-space: nowrap;" | (12)
412
|}
413
414
<div id='img-5'></div>
415
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
416
|-
417
|[[Image:Draft_Samper_274772883-Vector.png|360px|Diagrama esquemático del efector final]]
418
|- style="text-align: center; font-size: 75%;"
419
| colspan="1" | '''Figura 5:''' Diagrama esquemático del efector final
420
|}
421
422
El espacio de trabajo del efector está definido por <span style="text-align: center; font-size: 75%;">
423
424
* <math display="inline">X_{min}, X_{max}</math> : Dimensiones mínima y máxima del objeto de interés.
425
* <math display="inline">X_{G}</math> : Rango de apertura de los extremos del efector.
426
* <math display="inline">r_{2min}, r_{2max}</math> : Valores extremos de la posición de la tuerca.
427
* <math display="inline">R_{2max}</math> : Rango de variación de la posición de la tuerca. 
428
429
</span>
430
431
El vector de diseño se expresa en ([[#eq-13|13]]), con las cotas de ([[#eq-14|14]]),
432
433
<span id="eq-13"></span>
434
{| class="formulaSCP" style="width: 100%; text-align: left;" 
435
|-
436
| 
437
{| style="text-align: left; margin:auto;width: 100%;" 
438
|-
439
| style="text-align: center;" | <math>\vec{x}=\left[r_{1},r_{2min},r_{2max},r_{3},r_{4},r_{0},r_{f},\theta _{1}\right]^T</math>
440
| style="width: 5px;text-align: right;white-space: nowrap;" | (13)
441
|-
442
| style="text-align: center;" | <math>  = \left[x_{1},x_{2},. . .,x_{8}\right]^{T}  </math>
443
|}
444
|}
445
446
<span id="eq-14"></span>
447
{| class="formulaSCP" style="width: 100%; text-align: left;" 
448
|-
449
| 
450
{| style="text-align: left; margin:auto;width: 100%;" 
451
|-
452
| style="text-align: center;" | <math>0  \leq  x_{i}\leq 150, \quad \quad i=1,4-7 </math>
453
| style="width: 5px;text-align: right;white-space: nowrap;" | (14)
454
|-
455
| style="text-align: center;" | <math>  0  \leq  x_{i}\leq R_{2max},   i=2,3 </math>
456
|-
457
| style="text-align: center;" | <math>  \pi /{2}  \leq  x_{i}\leq \pi , \quad \quad \quad i=8 </math>
458
|}
459
|}
460
461
==5 Implementación computacional==
462
463
La implementación de algoritmos se programó en MATLAB R2013a, sobre una plataforma computacional con procesador Intel Core i7 @1.75 GHz, 8Gb de memoria RAM y sistema operativo Windows 8. Para la evaluación del desempeño los casos de estudio se resolvieron usando tanto el algoritmo MABC como el MemMABC, con 30 simulaciones por algoritmo en cada caso. Se usó una condición de paro adicional, con detención anticipada al alcanzar el valor óptimo <math display="inline">FO</math>=0; también se consideró <math display="inline">FO</math>=1000 si en una corrida específica no se generaba alguna solución factible.
464
465
La configuración del MemMABC requiere de seis parámetros: <math display="inline">Vars</math>, número de variables de diseño; <math display="inline">SN</math>, número de fuentes de alimento; <math display="inline">MaxEvs</math>, número máximo de evaluaciones de la función objetivo; <math display="inline">Disparo</math>, número de generaciones para la activación de la LS; <math display="inline">Intensidad</math>, número máximo de evaluaciones de la función objetivo en la LS, y <math display="inline">MaxLimit</math>, número máximo de intentos consecutivos de mejora de una fuente. En el CE1 se consideró <math display="inline">MaxEvs</math>=1,000,000, <math display="inline">SN</math>=50, <math display="inline">Disparo</math>=2,800, <math display="inline">MaxLimit</math>=750, e <math display="inline">Intensidad</math>=10,000, mientras que para el CE2 se tomó <math display="inline">MaxEvs</math>=35,000, <math display="inline">SN</math>=5, <math display="inline">Disparo</math>=1,650, <math display="inline">Intensidad</math>=8,500, y <math display="inline">MaxLimit</math>=40.
466
467
==6 Resultados==
468
469
Para la solución de ambos casos de estudio primeramente se utilizó la programación cuadrática secuencial (''Sequential Quadratic Programming'', SQP) reconocida como uno de los métodos más eficientes de optimización clásica. La implementación se realizó con la función ''fmincon'' de MATLAB, ejecutándose 30 simulaciones para cada caso de estudio y tomando puntos de inicio aleatorios dentro del espacio de búsqueda. Sin embargo, SQP presentó un rendimiento deficiente, ya que en el CE1 se obtuvo solamente una solución factible, con <math display="inline">FO</math>=2.34567 en 1,000,000 de evaluaciones, mientras que para el CE2 solo dos de sus simulaciones generaron resultados factibles, siendo su mejor valor <math display="inline">FO</math>=9.83E-17, con 35,000 evaluaciones; por ello sus resultados no se consideraron para el análisis de desempeño mostrado en las tablas siguientes. La razón de este pobre rendimiento es la alta sensibilidad de SQP al punto de inicio, especialmente cuando la dimensionalidad o las restricciones del problema aumentan.
470
471
===6.1 Caso de estudio CE1===
472
473
La Tabla [[#table-1|1]] contiene los resultados de las treinta simulaciones para el CE1, resaltando el mejor valor generado por cada algoritmo. El análisis estadístico de los resultados obtenidos se presenta en la Tabla [[#table-2|2]]. Como se observa, el valor mínimo de la función objetivo se obtuvo con MemMABC (<math display="inline">FO</math>=0.01466775), con una varianza de <math display="inline">\sigma ^2</math>=0.0704462, significativamente menor que la correspondiente a MABC y que indica un desempeño estable del algoritmo. Adicionalmente, MemMABC requirió un 10% menos evaluaciones e incluso alcanzó su mejor valor antes del límite <math display="inline">MaxEvs</math>.
474
475
La Tabla [[#table-3|3]] contiene la mejor solución para cada algoritmo implementado, representada por el vector de variables de diseño. Como se mencionó anteriormente, MemMABC produjo la mejor solución. La Figura [[#img-6|6]] muestra el mecanismo correspondiente a dicha solución y su trayectoria sobre los puntos de precisión, marcados como <math display="inline">C_1, C_2,...,C_6</math> en una simulación del movimiento realizada con GeoGebra; se puede observar en la figura que el mecanismo pasa sobre todos los puntos en su recorrido ascendente y presenta un lazo de retorno muy pequeño, lo cual implica un tiempo de recuperación corto que puede representar una ventaja si el dispositivo se analiza desde el punto de vista de ingeniería. <div id='img-6'></div>
476
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
477
|-
478
|[[Image:Draft_Samper_274772883-Captura_3.png|390px|Simulación de la mejor solución del MemMABC - CE1]]
479
|- style="text-align: center; font-size: 75%;"
480
| colspan="1" | '''Figura 6:''' Simulación de la mejor solución del MemMABC - CE1
481
|}
482
483
===6.2 Caso de estudio CE2===
484
485
La Tabla [[#table-4|4]] muestra los resultados obtenidos en las treinta corridas para el CE2, resaltando el mejor valor generado por cada método; cuando un algoritmo obtuvo el valor óptimo en más de una corrida se consideró como segundo parámetro el menor número de evaluaciones de la función objetivo. Por su parte, en la Tabla [[#table-5|5]] se presenta el análisis estadístico de los resultados; si bien ambos algoritmos presentan un comportamiento similar, MemMABC tuvo mejores valores y generó el valor óptimo después de 15,839 evaluaciones de la función objetivo, aproximadamente  12% menos que las 17,813 evaluaciones requeridas por el MABC.
486
487
En la Tabla [[#table-6|6]] se muestran los vectores de diseño correspondientes a la mejor solución obtenida por cada algoritmo implementado.  La variedad de soluciones muestra que el problema es multimodal; por su naturaleza poblacional los algoritmos empleados tienen un mejor comportamiento en los casos en que se tiene más de un valor óptimo. Este aspecto se refuerza por el uso de más de un algoritmo para resolver el problema, ya que la gama de soluciones permite al diseñador no sólo escoger un valor óptimo, sino además elegir el que mejor se adapte a aspectos tales como la fabricación o la instalación del mecanismo o sistema real.
488
489
<div class="center" style="width: auto; margin-left: auto; margin-right: auto;"font-size: 75%;">
490
<span style="text-align: center; font-size: 75%;">'''Tabla 1.''' Resultados de las corridas de simulación - CE1.</span></div>
491
492
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;font-size: 85%;"
493
|
494
| style="text-align: left;" |     
495
| colspan='2' | '''MemMABC'''
496
| colspan='2' | '''MABC'''
497
|-
498
| style="text-align: left;" | 2-5    
499
| FO 
500
| Evals  
501
| FO 
502
| style="text-align: right;" | Evals  
503
|-
504
| style="text-align: left;" | 
505
| 
506
| x1000 
507
| 
508
| style="text-align: right;" | x1000 
509
|-
510
| style="text-align: left;" |     '''Sim'''
511
|-
512
| style="text-align: left;" | 1-1    '''1''' 
513
| 0.301461 
514
| 1000 
515
| 0.208516 
516
| style="text-align: right;" | 990  
517
|- style="border-top: 2px solid;"
518
| style="text-align: left;" |     '''2''' 
519
| 0.500330 
520
| 900 
521
| 0.107299 
522
| style="text-align: right;" | 1000 
523
|- style="border-top: 2px solid;"
524
| style="text-align: left;" |     '''3''' 
525
| 0.074992 
526
| 910 
527
| 1.107299 
528
| style="text-align: right;" | 1000  
529
|- style="border-top: 2px solid;"
530
| style="text-align: left;" |     '''4''' 
531
| 0.044517 
532
| 910 
533
| 0.067285 
534
| style="text-align: right;" | 1000 
535
|- style="border-top: 2px solid;"
536
| style="text-align: left;" |      '''5''' 
537
| 0.140069 
538
| 910 
539
| 0.626309 
540
| style="text-align: right;" | 960  
541
|- style="border-top: 2px solid;"
542
| style="text-align: left;" |     '''6''' 
543
| 0.083722 
544
| 910 
545
| 0.062770 
546
| style="text-align: right;" | 1000   
547
|- style="border-top: 2px solid;"
548
| style="text-align: left;" |     '''7''' 
549
| 0.094170 
550
| 910 
551
| 0.118344 
552
| style="text-align: right;" | 990     
553
|- style="border-top: 2px solid;"
554
| style="text-align: left;" |     '''8''' 
555
| 0.301364 
556
| 910 
557
| 1.987648 
558
| style="text-align: right;" | 1000 
559
|- style="border-top: 2px solid;"
560
| style="text-align: left;" |     '''9''' 
561
| 0.130068 
562
| 910 
563
| 0.696017 
564
| style="text-align: right;" | 980     
565
|- style="border-top: 2px solid;"
566
| style="text-align: left;" |     '''10''' 
567
| 0.123883 
568
| 910 
569
| 0.521547 
570
| style="text-align: right;" | 980  
571
|- style="border-top: 2px solid;"
572
| style="text-align: left;" |     '''11''' 
573
| 0.171383 
574
| 910 
575
| 0.330611 
576
| style="text-align: right;" | 970  
577
|- style="border-top: 2px solid;"
578
| style="text-align: left;" |     '''12''' 
579
| 0.029678 
580
| 910 
581
| 1.071400 
582
| style="text-align: right;" | 990     
583
|- style="border-top: 2px solid;"
584
| style="text-align: left;" |      '''13''' 
585
| 0.102760 
586
| 910 
587
| 0.046103 
588
| style="text-align: right;" | 1000 
589
|- style="border-top: 2px solid;"
590
| style="text-align: left;" |     '''14''' 
591
| 0.036344 
592
| 910 
593
| 0.841517 
594
| style="text-align: right;" | 1000    
595
|- style="border-top: 2px solid;"
596
| style="text-align: left;" |     '''15''' 
597
| 1.324383 
598
| 910 
599
| 0.055782 
600
| style="text-align: right;" | 1000    
601
|- style="border-top: 2px solid;"
602
| style="text-align: left;" |     '''16''' 
603
| 0.111527 
604
| 910 
605
| 0.480897 
606
| style="text-align: right;" | 980  
607
|- style="border-top: 2px solid;"
608
| style="text-align: left;" |     '''17''' 
609
| 0.096556 
610
| 910 
611
| 0.690968 
612
| style="text-align: right;" | 1000 
613
|- style="border-top: 2px solid;"
614
| style="text-align: left;" |     '''18''' 
615
| '''0.014667''' 
616
| '''900''' 
617
| 0.047740 
618
| style="text-align: right;" | 1000 
619
|- style="border-top: 2px solid;"
620
| style="text-align: left;" |     '''19''' 
621
| 0.026348 
622
| 910 
623
| 1.191474 
624
| style="text-align: right;" | 980     
625
|- style="border-top: 2px solid;"
626
| style="text-align: left;" |     '''20''' 
627
| 0.039964 
628
| 910 
629
| 0.063390 
630
| style="text-align: right;" | 1000  
631
|- style="border-top: 2px solid;"
632
| style="text-align: left;" |     '''21''' 
633
| 0.150369 
634
| 910 
635
| '''0.029598''' 
636
| style="text-align: right;" | '''1000'''  
637
|- style="border-top: 2px solid;"
638
| style="text-align: left;" |     '''22''' 
639
| 0.224345 
640
| 910 
641
| 0.135714 
642
| style="text-align: right;" | 1000  
643
|- style="border-top: 2px solid;"
644
| style="text-align: left;" |     '''23''' 
645
| 0.281801 
646
| 910 
647
| 6.047393 
648
| style="text-align: right;" | 970     
649
|- style="border-top: 2px solid;"
650
| style="text-align: left;" |     '''24''' 
651
| 0.539555 
652
| 910 
653
| 0.182488 
654
| style="text-align: right;" | 960  
655
|- style="border-top: 2px solid;"
656
| style="text-align: left;" |     '''25''' 
657
| 0.143620 
658
| 910 
659
| 0.308238 
660
| style="text-align: right;" | 1000  
661
|- style="border-top: 2px solid;"
662
| style="text-align: left;" |     '''26''' 
663
| 0.052217 
664
| 910 
665
| 0.238166 
666
| style="text-align: right;" | 920   
667
|- style="border-top: 2px solid;"
668
| style="text-align: left;" |     '''27''' 
669
| 0.321617 
670
| 910 
671
| 0.126951 
672
| style="text-align: right;" | 1000  
673
|- style="border-top: 2px solid;"
674
| style="text-align: left;" |     '''28''' 
675
| 0.505811 
676
| 910 
677
| 0.490899 
678
| style="text-align: right;" | 1000  
679
|- style="border-top: 2px solid;"
680
| style="text-align: left;" |     '''29''' 
681
| 0.686442 
682
| 910 
683
| 0.072311 
684
| style="text-align: right;" | 900   
685
|- style="border-top: 2px solid;"
686
| style="text-align: left;" |     '''30''' 
687
| 0.104808 
688
| 910 
689
| 0.116885 
690
| style="text-align: right;" | 1000   
691
|}
692
693
<div class="center" style="width: auto; margin-left: auto; margin-right: auto;"font-size: 75%;">
694
<span style="text-align: center; font-size: 75%;">'''Tabla 2.''' Comparación estadística del desempeño de los algoritmos implementados - (CE1).</span></div>
695
696
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;font-size: 85%;"
697
|-
698
| style="text-align: left;" |      
699
| 
700
| colspan='1' | '''MemMABC'''
701
| style="text-align: left;" | 
702
| colspan='1' | '''MABC'''
703
|-
704
| style="text-align: left;" |      3-5     '''Parámetro'''
705
|-
706
| style="text-align: left;" |      1-1     Min 
707
| 
708
|  '''0.014667'''  
709
| style="text-align: left;" | 
710
|  0.029598  
711
|-
712
| style="text-align: left;" |      Max 
713
| 
714
|  '''1.324383''' 
715
| style="text-align: left;" | 
716
|  6.047393   
717
|-
718
| style="text-align: left;" |      Mediana 
719
| 
720
|  '''0.126975''' 
721
| style="text-align: left;" | 
722
|  0.223341  
723
|-
724
| style="text-align: left;" |      Promedio 
725
| 
726
|  '''0.225292''' 
727
| style="text-align: left;" | 
728
|  0.602385 
729
|-
730
| style="text-align: left;" |      Varianza 
731
| 
732
|  '''0.070446''' 
733
| style="text-align: left;" | 
734
|  1.222448 
735
|-
736
| style="text-align: left;" |      Desviación Est. 
737
| 
738
|  '''0.265417''' 
739
| style="text-align: left;" | 
740
|  1.105644  
741
|-
742
| style="text-align: left;" |      Evs/Min 
743
| 
744
|  '''900000''' 
745
| style="text-align: left;" | 
746
|  1000000 
747
|-
748
| style="text-align: left;" |       Promedio de Evs 
749
| 
750
|  '''924333''' 
751
| style="text-align: left;" | 
752
|  985300  
753
754
|}
755
756
<div class="center" style="width: auto; margin-left: auto; margin-right: auto;"font-size: 75%;">
757
<span style="text-align: center; font-size: 75%;">'''Tabla 3.''' Mejor vector de solución para cada método - CE1.</span></div>
758
759
{|  class="floating_tableSCP wikitable" style="text-align: right; margin: 1em auto;font-size: 85%;"
760
|
761
| style="text-align: left;" |     
762
| style="text-align: left;" | 
763
| colspan='1' style="text-align: center;" | '''MemMABC'''
764
| style="text-align: left;" | 
765
| colspan='1' style="text-align: center;" | '''MABC'''
766
|-
767
| style="text-align: left;" | 3-5    '''Variable''' 
768
|-
769
| style="text-align: left;" | 1-1 <math display="inline">r_1</math> 
770
| style="text-align: left;" | 
771
| 47.61022 
772
| style="text-align: left;" | 
773
| 48.51296 
774
|- style="border-top: 2px solid;"
775
| style="text-align: left;" | <math display="inline">r_2</math> 
776
| style="text-align: left;" | 
777
| 11.29351 
778
| style="text-align: left;" | 
779
| 10.44436 
780
|- style="border-top: 2px solid;"
781
| style="text-align: left;" | <math display="inline">r_3</math> 
782
| style="text-align: left;" | 
783
| 26.05979 
784
| style="text-align: left;" | 
785
| 23.76895 
786
|- style="border-top: 2px solid;"
787
| style="text-align: left;" | <math display="inline">r_4</math> 
788
| style="text-align: left;" | 
789
| 44.17324 
790
| style="text-align: left;" | 
791
| 44.73566 
792
|- style="border-top: 2px solid;"
793
| style="text-align: left;" | <math display="inline">r_{cx}</math> 
794
| style="text-align: left;" | 
795
| 28.09277 
796
| style="text-align: left;" | 
797
| 24.56259 
798
|- style="border-top: 2px solid;"
799
| style="text-align: left;" | <math display="inline">r_{cy}</math> 
800
| style="text-align: left;" | 
801
| 18.09717 
802
| style="text-align: left;" | 
803
| 15.23919 
804
|- style="border-top: 2px solid;"
805
| style="text-align: left;" | <math display="inline">\theta _0</math> 
806
| style="text-align: left;" | 
807
| 3.70672 
808
| style="text-align: left;" | 
809
| 3.64450  
810
|- style="border-top: 2px solid;"
811
| style="text-align: left;" | <math display="inline">x_0</math> 
812
| style="text-align: left;" | 
813
| -0.72692 
814
| style="text-align: left;" | 
815
| 3.79430  
816
|- style="border-top: 2px solid;"
817
| style="text-align: left;" | <math display="inline">y_0</math> 
818
| style="text-align: left;" | 
819
| 57.39457 
820
| style="text-align: left;" | 
821
| 55.81364
822
|- style="border-top: 2px solid;"
823
| style="text-align: left;" | <math display="inline">\theta _2^1</math> 
824
| style="text-align: left;" | 
825
| 2.03045 
826
| style="text-align: left;" | 
827
| 1.57201 
828
|- style="border-top: 2px solid;"
829
| style="text-align: left;" | <math display="inline">\theta _2^2</math> 
830
| style="text-align: left;" | 
831
| 2.54567 
832
| style="text-align: left;" | 
833
| 2.38873 
834
|- style="border-top: 2px solid;"
835
| style="text-align: left;" | <math display="inline">\theta _2^3</math> 
836
| style="text-align: left;" | 
837
| 2.97677 
838
| style="text-align: left;" | 
839
| 2.87644 
840
|- style="border-top: 2px solid;"
841
| style="text-align: left;" | <math display="inline">\theta _2^4</math> 
842
| style="text-align: left;" | 
843
| 3.40864 
844
| style="text-align: left;" | 
845
| 3.35841   
846
|- style="border-top: 2px solid;"
847
| style="text-align: left;" | <math display="inline">\theta _2^5</math> 
848
| style="text-align: left;" | 
849
| 3.87709 
850
| style="text-align: left;" | 
851
| 3.89958  
852
|- style="border-top: 2px solid;border-bottom: 2px solid;"
853
| style="text-align: left;" | <math display="inline">\theta _2^6</math> 
854
| style="text-align: left;" | 
855
| 4.45365 
856
| style="text-align: left;" | 
857
| 4.65024  
858
859
|}
860
861
<div class="center" style="width: auto; margin-left: auto; margin-right: auto;"font-size: 75%;">
862
<span style="text-align: center; font-size: 75%;">'''Tabla 4.''' Resultados de las corridas de simulación - CE2.</span></div>
863
864
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;font-size: 85%;"
865
|
866
| style="text-align: left;" |    
867
| colspan='2' | '''MemMABC'''
868
| colspan='2' | '''MABC'''
869
|-
870
| style="text-align: left;" | 2-5   
871
| FO 
872
| Evals  
873
| FO 
874
| style="text-align: right;" | Evals 
875
|-
876
| style="text-align: left;" |    '''Sim'''
877
|-
878
| style="text-align: left;" | 1-1   '''1''' 
879
| 0 
880
| 27787 
881
| 0 
882
| style="text-align: right;" | 19589 
883
|- style="border-top: 2px solid;"
884
| style="text-align: left;" |    '''2''' 
885
| 0 
886
| 23058 
887
| 0 
888
| style="text-align: right;" | 25554 
889
|- style="border-top: 2px solid;"
890
| style="text-align: left;" |    '''3''' 
891
| 0 
892
| 23224 
893
| 0 
894
| style="text-align: right;" | 18812 
895
|- style="border-top: 2px solid;"
896
| style="text-align: left;" |    '''4''' 
897
| 0.002451 
898
| 34424 
899
| 0 
900
| style="text-align: right;" | 26722  
901
|- style="border-top: 2px solid;"
902
| style="text-align: left;" |    '''5''' 
903
| 0.000756 
904
| 34228 
905
| 0 
906
| style="text-align: right;" | 34542 
907
|- style="border-top: 2px solid;"
908
| style="text-align: left;" |    '''6''' 
909
| 0 
910
| 23177 
911
| 0 
912
| style="text-align: right;" | 29303 
913
|- style="border-top: 2px solid;"
914
| style="text-align: left;" |    '''7''' 
915
| 0.000664 
916
| 32302 
917
| 0 
918
| style="text-align: right;" | 25965 
919
|- style="border-top: 2px solid;"
920
| style="text-align: left;" |    '''8''' 
921
| 0.002046 
922
| 34167 
923
| 0.005760 
924
| style="text-align: right;" | 35000  
925
|- style="border-top: 2px solid;"
926
| style="text-align: left;" |    '''9''' 
927
| 0 
928
| 23471 
929
| 0 
930
| style="text-align: right;" | 25658 
931
|- style="border-top: 2px solid;"
932
| style="text-align: left;" |    '''10''' 
933
| 0 
934
| 23288 
935
| 0 
936
| style="text-align: right;" | 31758 
937
|- style="border-top: 2px solid;"
938
| style="text-align: left;" |    '''11''' 
939
| 0 
940
| 23398 
941
| 0 
942
| style="text-align: right;" | 20144 
943
|- style="border-top: 2px solid;"
944
| style="text-align: left;" |    '''12''' 
945
| 7.70E-34 
946
| 31999 
947
| 6.95E-30 
948
| style="text-align: right;" | 35000  
949
|- style="border-top: 2px solid;"
950
| style="text-align: left;" |    '''13''' 
951
| '''0''' 
952
| '''15839''' 
953
| 0 
954
| style="text-align: right;" | 26860  
955
|- style="border-top: 2px solid;"
956
| style="text-align: left;" |    '''14''' 
957
| 7.70E-34 
958
| 34230 
959
| 4.64E-07 
960
| style="text-align: right;" | 35000  
961
|- style="border-top: 2px solid;"
962
| style="text-align: left;" |    '''15''' 
963
| 0.001725 
964
| 31810 
965
| 0 
966
| style="text-align: right;" | 31983 
967
|- style="border-top: 2px solid;"
968
| style="text-align: left;" |    '''16''' 
969
| 0.000432 
970
| 31672 
971
| 0.001345 
972
| style="text-align: right;" | 35000 
973
|- style="border-top: 2px solid;"
974
| style="text-align: left;" |    '''17''' 
975
| 0.005217 
976
| 33034 
977
| 0 
978
| style="text-align: right;" | 25001 
979
|- style="border-top: 2px solid;"
980
| style="text-align: left;" |    '''18''' 
981
| 0 
982
| 23294 
983
| 0 
984
| style="text-align: right;" | 26876 
985
|- style="border-top: 2px solid;"
986
| style="text-align: left;" |    '''19''' 
987
| 0 
988
| 22961 
989
| 0 
990
| style="text-align: right;" | 34107 
991
|- style="border-top: 2px solid;"
992
| style="text-align: left;" |    '''20''' 
993
| 0.001381 
994
| 35000 
995
| 0.001704 
996
| style="text-align: right;" | 35000 
997
|- style="border-top: 2px solid;"
998
| style="text-align: left;" |    '''21''' 
999
| 0 
1000
| 23413 
1001
| 0.000262 
1002
| style="text-align: right;" | 35000 
1003
|- style="border-top: 2px solid;"
1004
| style="text-align: left;" |    '''22''' 
1005
| 0 
1006
| 23068 
1007
| '''0''' 
1008
| style="text-align: right;" | '''17813''' 
1009
|- style="border-top: 2px solid;"
1010
| style="text-align: left;" |    '''23''' 
1011
| 7.70E-34 
1012
| 31850 
1013
| 0.001315 
1014
| style="text-align: right;" | 35000 
1015
|- style="border-top: 2px solid;"
1016
| style="text-align: left;" |    '''24''' 
1017
| 0 
1018
| 23385 
1019
| 5.12E-05 
1020
| style="text-align: right;" | 35000 
1021
|- style="border-top: 2px solid;"
1022
| style="text-align: left;" |    '''25''' 
1023
| 3.08E-33 
1024
| 33036 
1025
| 0.000553 
1026
| style="text-align: right;" | 35000 
1027
|- style="border-top: 2px solid;"
1028
| style="text-align: left;" |    '''26''' 
1029
| 0.002821 
1030
| 31974 
1031
| 0.005916 
1032
| style="text-align: right;" | 35000
1033
|- style="border-top: 2px solid;"
1034
| style="text-align: left;" |    '''27''' 
1035
| 0 
1036
| 23350 
1037
| 0 
1038
| style="text-align: right;" | 27485 
1039
|- style="border-top: 2px solid;"
1040
| style="text-align: left;" |    '''28''' 
1041
| 0 
1042
| 23229 
1043
| 0.006262 
1044
| style="text-align: right;" | 35000 
1045
|- style="border-top: 2px solid;"
1046
| style="text-align: left;" |    '''29''' 
1047
| 0 
1048
| 23504 
1049
| 0 
1050
| style="text-align: right;" | 27970 
1051
|- style="border-top: 2px solid;"
1052
| style="text-align: left;" |    '''30''' 
1053
| 7.70E-34 
1054
| 32682 
1055
| 0 
1056
| style="text-align: right;" | 28406  
1057
1058
|}
1059
1060
<div class="center" style="width: auto; margin-left: auto; margin-right: auto;"font-size: 75%;">
1061
<span style="text-align: center; font-size: 75%;">'''Tabla 5.''' Comparación estadística del desempeño de los algoritmos implementados - (CE2).</span></div>
1062
1063
{|  class="floating_tableSCP wikitable" style="text-align: center; margin: 1em auto;font-size: 85%;"
1064
|-
1065
| style="text-align: left;" |       
1066
| 
1067
| colspan='1' | '''MemMABC'''
1068
| style="text-align: left;" | 
1069
| colspan='1' | '''MABC'''
1070
|-
1071
| style="text-align: left;" |      3-5     '''Parámetro'''
1072
|-
1073
| style="text-align: left;" |      1-1     Min 
1074
| 
1075
|  '''0''' 
1076
| style="text-align: left;" | 
1077
|  '''0'''   
1078
|-
1079
| style="text-align: left;" |      Max 
1080
| 
1081
|  '''0.0052177''' 
1082
| style="text-align: left;" | 
1083
|  0.0062623
1084
|-
1085
| style="text-align: left;" |      Mediana 
1086
| 
1087
|  '''0''' 
1088
| style="text-align: left;" | 
1089
|  '''0'''
1090
|-
1091
| style="text-align: left;" |      Promedio 
1092
| 
1093
|  '''0.0005832''' 
1094
| style="text-align: left;" | 
1095
|  0.0007724 
1096
|-
1097
| style="text-align: left;" |      Varianza 
1098
| 
1099
|  '''1.375E-06''' 
1100
| style="text-align: left;" | 
1101
|  3.211E-06 
1102
|-
1103
| style="text-align: left;" |      Desviación Est. 
1104
| 
1105
|  '''0.0011728''' 
1106
| style="text-align: left;" | 
1107
|  0.0017919 
1108
|-
1109
| style="text-align: left;" |      Evs/Min 
1110
| 
1111
|  '''15839''' 
1112
| style="text-align: left;" | 
1113
|  17813 
1114
|-
1115
| style="text-align: left;" |       Promedio de Evs   
1116
| 
1117
|  '''27731''' 
1118
| style="text-align: left;" | 
1119
|  29748 
1120
1121
|}
1122
1123
<div class="center" style="width: auto; margin-left: auto; margin-right: auto;"font-size: 75%;">
1124
<span style="text-align: center; font-size: 75%;">'''Tabla 6.''' Mejor vector de solución por cada método - CE2.</span></div>
1125
1126
{|  class="floating_tableSCP wikitable" style="text-align: right; margin: 1em auto;font-size: 85%;"
1127
|-
1128
| style="text-align: left;" |    
1129
| style="text-align: left;" | 
1130
| colspan='1' style="text-align: center;" | '''MemMABC'''
1131
| style="text-align: left;" | 
1132
| colspan='1' style="text-align: center;" | '''MABC'''
1133
|-
1134
| style="text-align: left;" | 3-5   '''Variable'''
1135
|-
1136
| style="text-align: left;" | 1-1   '''<math>r_{1}</math>''' 
1137
| style="text-align: left;" | 
1138
| 123.7098 
1139
| style="text-align: left;" | 
1140
| 115.4636 
1141
|- style="border-top: 2px solid;"
1142
| style="text-align: left;" |    '''<math>r_{2min}</math>''' 
1143
| style="text-align: left;" | 
1144
| 1.2633 
1145
| style="text-align: left;" | 
1146
| 20.1385 
1147
|- style="border-top: 2px solid;"
1148
| style="text-align: left;" |    '''<math>r_{2max}</math>''' 
1149
| style="text-align: left;" | 
1150
| 44.5135 
1151
| style="text-align: left;" | 
1152
| 49.0498  
1153
|- style="border-top: 2px solid;"
1154
| style="text-align: left;" |    '''<math>r_{3}</math>''' 
1155
| style="text-align: left;" | 
1156
| 59.2174 
1157
| style="text-align: left;" | 
1158
| 31.5840  
1159
|- style="border-top: 2px solid;"
1160
| style="text-align: left;" |    '''<math>r_{4}</math>''' 
1161
| style="text-align: left;" | 
1162
| 131.7432 
1163
| style="text-align: left;" | 
1164
| 112.0447 
1165
|- style="border-top: 2px solid;"
1166
| style="text-align: left;" |    '''<math>r_{0}</math>''' 
1167
| style="text-align: left;" | 
1168
| 18.2780 
1169
| style="text-align: left;" | 
1170
| 5.3617  
1171
|- style="border-top: 2px solid;"
1172
| style="text-align: left;" |    '''<math>r_{f}</math>''' 
1173
| style="text-align: left;" | 
1174
| 149.1273 
1175
| style="text-align: left;" | 
1176
| 149.3967 
1177
|- style="border-top: 2px solid;"
1178
| style="text-align: left;" |    '''<math>\theta _{1}</math>''' 
1179
| style="text-align: left;" | 
1180
| 2.5777 
1181
| style="text-align: left;" | 
1182
| 2.4109  
1183
1184
|}
1185
1186
La Figura [[#img-7|7]] presenta los efectores correspondientes a las tres mejores soluciones obtenidas con MemMABC para el CE2, modeladas en SolidWorks; cada mecanismo se muestra en su mínima y máxima apertura. Las diferencias en la síntesis dimensional sugieren la capacidad del algoritmo de explotar la multimodalidad del problema, ya que las tres soluciones alcanzaron el valor óptimo <math display="inline">FO</math>=0. <div id='img-7'></div>
1187
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
1188
|-
1189
|[[Image:Draft_Samper_274772883-mecanismo1_min.png|204px|]]
1190
|[[Image:Draft_Samper_274772883-mecanismo1_max.png|204px|]]
1191
|[[Image:Draft_Samper_274772883-mecanismo2_min.png|204px|]]
1192
|-
1193
|[[Image:Draft_Samper_274772883-mecanismo2_max.png|204px|]]
1194
|[[Image:Draft_Samper_274772883-mecanismo3_min.png|204px|]]
1195
|[[Image:Draft_Samper_274772883-mecanismo3_max.png|204px|Simulación de mecanismos con los mejores resultados del MemMABC - CE2]]
1196
|- style="text-align: center; font-size: 75%;"
1197
| colspan="3" | '''Figura 7:''' Simulación de mecanismos con los mejores resultados del MemMABC - CE2
1198
|}
1199
1200
Las Figuras [[#img-8|8]] y [[#img-9|9]] muestran la convergencia de los algoritmos implementados para el CE1 y el CE2, respectivamente, considerando la mejor solución de cada método; se incluye tanto el comportamiento de los conjuntos de individuos respecto a la factibilidad como la evolución del mejor valor. Como puede observarse, ambos algoritmos presentan un alto rendimiento; sin embargo, MemMABC tuvo tanto mayor eficacia, reflejada en los valores mínimos y en la varianza, como mayor eficiencia si se considera que el número de evaluaciones de la función objetivo requeridas para alcanzar las soluciones fue en promedio un 10% menor con respecto a MABC.
1201
1202
<div id='img-8'></div>
1203
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
1204
|-
1205
|[[Image:Draft_Samper_274772883-ConvergenciaCS1.png|408px|]]
1206
|[[Image:Draft_Samper_274772883-Convergencia_2CS1.png|400px|Convergencia de la mejor solución (CE1): A) Número de individuos factibles, B) Valor de la función objetivo]]
1207
|- style="text-align: center; font-size: 75%;"
1208
| colspan="2" | '''Figura 8:''' Convergencia de la mejor solución (CE1): A) Número de individuos factibles, B) Valor de la función objetivo
1209
|}
1210
1211
<div id='img-9'></div>
1212
{| class="floating_imageSCP" style="text-align: center; border: 1px solid #BBB; margin: 1em auto; width: 100%;max-width: 100%;"
1213
|-
1214
|[[Image:Draft_Samper_274772883-ConvergenciaCS2.png|408px|]]
1215
|[[Image:Draft_Samper_274772883-Convergencia_2CS2.png|400px|Convergencia de la mejor solución - CE2: A) Número de individuos factibles, B) Valor de la función objetivo]]
1216
|- style="text-align: center; font-size: 75%;"
1217
| colspan="2" | '''Figura 9:''' Convergencia de la mejor solución - CE2: A) Número de individuos factibles, B) Valor de la función objetivo
1218
|}
1219
1220
==7 Discusión final==
1221
1222
Si bien las metaheurísticas han sido ampliamente desarrolladas y estudiadas para optimización, su aplicación para resolver problemas del mundo real aún es muy limitada. Dada su condición de métodos de solución aproximados pueden convertirse en excelentes herramientas para el diseño en ingeniería, donde se buscan buenas soluciones que puedan ser llevadas a la práctica con el menor gasto posible de recursos. Considerando esto, la mejora ofrecida por la hibridación en los algoritmos meméticos satisface no solo dicha necesidad, sino además cumple con los requerimientos derivados de la visión de estos algoritmos como buscadores de soluciones óptimas, ya que la calidad de sus resultados los hace sumamente competitivos ante los métodos clásicos.
1223
1224
El algoritmo MemMABC produce resultados de alta calidad, tanto desde el punto de vista de la algoritmia como desde el de la ingeniería. El uso de algoritmos meméticos implementados en forma modular ofrece una gama amplia de posibilidades de aplicación debido a la reutilizabilidad. Aunque en este trabajo se presentan dos casos de estudio sobre síntesis de mecanismos, la simplicidad y modularidad del MemMABC facilita su uso para resolver otros problemas de ingeniería del mundo real; en este sentido, el principal requerimiento es una adecuada interpretación y formulación matemática del caso particular y de sus restricciones.
1225
1226
==Agradecimientos==
1227
1228
Los autores agradecen el apoyo recibido del Instituto Politécnico Nacional de México, por su Secretaría de Investigación y Posgrado vía el proyecto SIP-20161615.
1229
1230
==Referencias==
1231
1232
<div id="cite-1"></div>
1233
[[#citeF-1|[1]]] Alvarez-Gallegos J., Cruz-Villar C.A.,  Portilla-Flores E.A. Evolutionary dynamic optimization of a continuously variable transmission for mechanical efficiency maximization. In Gelbukh A., de Albornoz Á., Terashima-Marín H. (Eds) MICAI 2005: Advances in Artificial Intelligence. Lecture Notes in Computer Science, Vol. 3789:1093-1102, Springer Verlag, 2005.
1234
1235
<div id=cite-2></div>
1236
[[#citeF-2|[2]]] Rao S.  Engineering optimization: theory and practice. John Wiley & Sons, 4th Edition, 2009.
1237
1238
<div id=cite-3></div>
1239
[[#citeF-3|[3]]] Boussaid I., Lepagnot J., Siarry P. A Survey on optimization metaheuristics. Information Sciences, 237:82-117, 2013.
1240
1241
<div id=cite-4></div>
1242
[[#citeF-4|[4]]] Eiben A.E., Smith J.E.  Introduction to evolutionary computing. Springer Verlag, 2007.
1243
1244
<div id=cite-5></div>
1245
[[#citeF-5|[5]]] Suganthan P.N., Hansen N., Liang J.J., Deb K., Chen Y.P., Auger A., Tiwari S.  Problem definitions and evaluation criteria for the CEC 2005 special session on real-parameter optimization. Technical Report 2005005, Nanyang Technological University, 2005.
1246
1247
<div id=cite-6></div>
1248
[[#citeF-6|[6]]] Liang J., Runarsson T., Mezura Montes E., Clerc M., Suganthan P., Coello C., Deb K.  Problem definitions and evaluation criteria for the cec 2006. Technical report, Nanyang Technological University, 2006.
1249
1250
<div id=cite-7></div>
1251
[[#citeF-7|[7]]] Rodríguez F.J., García C., Lozano M.  Hybrid metaheuristics based on evolutionary algorithms and simulated annealing: Taxonomy, comparison and sinergy test. IEEE Transactions on Evolutionary Computation, 16:787-800, 2012.
1252
1253
<div id=cite-8></div>
1254
[[#citeF-8|[8]]] Krasnogor K., Smith J. (2005) A tutorial for competent memetic algorithms:
1255
Model, taxonomy, and design issues. IEEE Transactions on Evolutionary Computation,  9(5):474-488, 2005.
1256
1257
<div id=cite-9></div>
1258
[[#citeF-9|[9]]] Kumar S., Sharma V.K., Kumari R. Memetic search in differential evolution algorithm. Int. J. Comput. Appli., 90(6):40-47, 2014.
1259
1260
<div id=cite-10></div>
1261
[[#citeF-10|[10]]] Krasnogor N., Aragón A., Pacheco J. Memetic algorithms. Vol. 2, Chap. 12:905-936, Springer Berlin, 2012.
1262
1263
<div id=cite-11></div>
1264
[[#citeF-11|[11]]] Ong Y., Lim M., Chen X. Memetic computation: Past, present
1265
and future. IEEE Computational Inteligence Magazine, 5(2):24-31, 2010.
1266
1267
<div id=cite-12></div>
1268
[[#citeF-12|[12]]] Arango M.D., Serna C.A.  A memetic algorithm for the traveling salesman problem. IEEE Latin America Transactions,  13(8):2674-2679, 2015.
1269
1270
<div id=cite-13></div>
1271
[[#citeF-13|[13]]] Gonsalves T., Kuwata K. Memetic algorithm for the nurse scheduling problem. Int. J. Artif. Intell. Applic. (IJAIA), 6(4):43-52, 2015.
1272
1273
<div id=cite-14></div>
1274
[[#citeF-14|[14]]] Ozcan E., Basaran C. A case study of memetic algorithms for constraint optimization. Soft Computing, 13:871-882, 2009.
1275
1276
<div id=cite-15></div>
1277
[[#citeF-15|[15]]] González C., Blanco D., Moreno L. A memetic approach to the inverse kinematics problem. In Proceedings of 2012 IEEE International
1278
Conference on Mechatronics and Automation, 180-185, 2012.
1279
1280
<div id=cite-16></div>
1281
[[#citeF-16|[16]]] Tagawa K., Masuoka M., Tsukamoto M. Robust optimum design of saw filters with the taguchi method and a memetic algorithm. In 2005 IEEE Congress on Evolutionary Computation, 3:2146-2153, 2005.
1282
1283
<div id=cite-17></div>
1284
[[#citeF-17|[17]]] Wang Z., Tang K., Yao X. A memetic algorithm for multi-level redundancy allocation. IEEE Transactions on Reliability,  59 (4):754-765, 2010.
1285
1286
<div id=cite-18></div>
1287
[[#citeF-18|[18]]] Zhong L., Long Z., Zhang J., Song H. An efficient memetic algorithm for job scheduling in computing grid. Commun. Comput. Inform. Science Series, 86:650-656, Springer Verlag, 2010.
1288
1289
<div id=cite-19></div>
1290
[[#citeF-19|[19]]] Wolpert D., Macready W. No free lunch theorems for optimization. IEEE Transactions on Evolutionary Computation, 1(1):67-82, 1997.
1291
1292
<div id=cite-20></div>
1293
[[#citeF-20|[20]]] Adriaensen S., Brys T., Nowé A. Designing reusable metaheuristic methods: A Semi-automated approach.  In IEEE Congress
1294
on Evolutionary Computation, 2969-2976, 2014.
1295
1296
<div id=cite-21></div>
1297
[[#citeF-21|[21]]] Karaboga D. An idea based on honey bee swarm for numerical optimization. Technical Report TR06, Erciyes University, 2005.
1298
1299
<div id=cite-22></div>
1300
[[#citeF-22|[22]]] Mezura Montes E., Cetina Domínguez O. Empirical analysis of a modified artificial bee colony for constrained numerical optimization. Applied Mathematics and Computation, 218:10943–10973, 2012.
1301
1302
<div id=cite-23></div>
1303
[[#citeF-23|[23]]] Deb K.  An effcient constraint handling method for genetic algorithms. Comput. Methods Appl. Mech. Engrg., 186:311-338, 2000.
1304
1305
<div id=cite-24></div>
1306
[[#citeF-24|[24]]] Moscato P., Cotta C.  A Gentle introduction to memetic algorithms. Kluwer Academic Publishers, 105-144, 2003.
1307
1308
<div id=cite-25></div>
1309
[[#citeF-25|[25]]] Montes de Oca M.A., Cotta C., Neri F.  Local search. Springer Verlag, Vol. 379, 29-42, 2012.
1310
1311
<div id=cite-26></div>
1312
[[#citeF-26|[26]]] Domínguez Isidro S., Mezura Montes E., Leguizamón G.  Memetic differential evolution for constrained numerical optimization
1313
problems. In Proceedings of 2013 IEEE Congress on Evolutionary
1314
Computation, 2996-3003, 2013.
1315
1316
<div id=cite-27></div>
1317
[[#citeF-27|[27]]] Mernik M., Liu S., Karaboga D., Crepinsek M.  On clarifying misconceptions when comparing variants of the artificial bee colony
1318
algorithm by offering a new implementation. Information Sciences, 291:115–127, 2015.
1319
1320
<div id=cite-28></div>
1321
[[#citeF-28|[28]]] Norton R.  Diseño de maquinaria: una introducción a la síntesis y análisis de mecanismos y máquinas. McGraw Hill, México, 1995.
1322
1323
<div id=cite-29></div>
1324
[[#citeF-29|[29]]] Pérez R.  Análisis de mecanismos y problemas resueltos. Alfaomega, México, 2007.
1325
1326
<div id=cite-30></div>
1327
[[#citeF-30|[30]]] Vega-Alvarado E., Santiago-Valentín E., Sánchez-Márquez A., Solano-Palma A., Portilla-Flores E.A., Flores-Pulido L. Síntesis óptima de un mecanismo plano para seguimiento de trayectoria utilizando evolución diferencial. Research in Computing Science, 72:85-89, 2014.
1328
1329
<div id=cite-31></div>
1330
[[#citeF-31|[31]]] De Silva C.W. Mechatronics: an integrated approach. CRC Press, 2005.
1331
1332
<div id=cite-32></div>
1333
[[#citeF-32|[32]]] Santiago-Valentín E., Solano-Palma A., Bautista-Camino P., Rueda-Meléndez J., Portilla-Flores E.A.  Diseño óptimo para transmisión de fuerza en un efector final. Research in Computing Science, 91:117-130, 2015.
1334

Return to Vega-Alvarado et al 2017a.

Back to Top

Document information

Published on 03/01/18
Accepted on 27/09/16
Submitted on 04/05/16

Volume 34, Issue 1, 2018
DOI: 10.23967/j.rimni.2017.5.002
Licence: CC BY-NC-SA license

Document Score

0

Times cited: 1
Views 695
Recommendations 0

Share this document

claim authorship

Are you one of the authors of this document?