Comprender el algoritmo de optimización de líderes de grupo

8

Contexto:

He estado tratando de entender el algoritmo genético discutido en el documento Descomposición de matrices unitarias para encontrar circuitos cuánticos: Aplicación a Hamiltonianos moleculares (Daskin y Kais, 2011) (PDF aquí ) y Algoritmo de optimización de líderes de grupo (Daskin y Kais, 2010) . Trataré de resumir lo que entendí hasta ahora y luego formularé mis consultas.

Consideremos el ejemplo de la puerta de Toffoli en la sección III-A en el primer artículo. Sabemos por otras fuentes como esta , que se necesitan alrededor de 5 puertas cuánticas de dos qubits para simular la puerta Toffoli. Por lo tanto, elegimos arbitrariamente un conjunto de puertas como {V,Z,S,V} . Nos restringimos a un máximo de 5 puertas y nos permitimos usar solo las puertas del conjunto de puertas {V,Z,S,V} . Ahora generamos 25 grupos de 15 cadenas aleatorias como:

1 3 2 0,0; 2 3 1 0,0; 3 2 1 0,0; 4 3 2 0,0; 2 1 3 0.0

En la cadena de números anterior, los primeros números en negrita son el número índice de las puertas (es decir, V=1,Z=2,S=3,Z=4 ), los últimos números son los valores de los ángulos en [0,2π] y los enteros medios son los qubits de destino y los qubits de control, respectivamente. Habría otras 374 cadenas generadas aleatoriamente.

ingrese la descripción de la imagen aquí

Nuestros grupos ahora se ven así (en la imagen de arriba) con n=25 y p=15 . La idoneidad de cada cadena es proporcional a la fidelidad de rastreo F=1N|Tr(UaUt)|dondeUunaes la representación de matriz unitaria correspondiente a cualquier cadena que generamos yUtes la representación de matriz unitaria de la puerta Toffoli de 3 qubits. El líder del grupo en cualquier grupo es el que tiene el valor máximo deF.

Una vez que tengamos los grupos, seguiremos el algoritmo:

ingrese la descripción de la imagen aquí

La ecuación (4) mencionado en la imagen es básicamente:

new string[i]=r1×old string[i]+r2×leader string[i]+r3×random string[i]
(donde1i20 ) str1+r2+r3=1 . El[i] representa eli ésimo número en la cadena, por ejemplo en1 3 2 0.0; 2 3 1 0.0; 3 2 1 0.0; 4 3 2 0.0; 2 1 3 0.0, el 6 elemento es 3. En este contexto, tomamos r1=0.8 y r2,r3=0.2 . Es decir, en cada iteración, todas las 375 cadenas se mutan siguiendo la regla: para cada cadena en cada grupo, los elementos individuales (números) en la cadena se modifican siguiendo la ecuación. (4)

Además,

Además de la mutación, en cada iteración para cada grupo de la población, el cruce unidireccional (también denominado transferencia de parámetros) se realiza entre un miembro aleatorio elegido del grupo y un miembro aleatorio de un grupo aleatorio diferente. Esta operación reemplaza principalmente una parte aleatoria de un miembro con la parte equivalente de un miembro aleatorio de un grupo diferente. La cantidad de la operación de transferencia para cada grupo se define por un parámetro llamado velocidad de transferencia, aquí, que se define como

4×maxgates21
donde el numerador es el número de variables que forman una cadena numérica en la optimización.

Preguntas:

  1. {V,Z,S,V}{X,Z,Rx,Rzz,V}520

  2. Después de la parte (en "Contexto") que discute la selección del conjunto de puertas y el número de puertas, ¿es correcta mi explicación / comprensión (párrafo 3 en adelante) del algoritmo?

  3. 4×maxgates2maxgates520

  4. 0.99

Sanchayan Dutta
fuente
Estoy implementando el mismo algoritmo en python. ¿Lo has implementado por completo? Estoy atascado en algún momento que he explicado en mi publicación .
Santa
@Santa No, pero alguien más aquí podría haberlo hecho. Puede migrar esa pregunta de desbordamiento de pila a Quantum Computing . Marcarlo para un moderador que mencione el problema.
Sanchayan Dutta
1
@Santa Puede encontrar una implementación de una versión modificada del algoritmo GLOA aquí . Tenga en cuenta que: 1. esta es una versión modificada del algoritmo original (traté de hacerlo más flexible), 2. el código es bastante genérico y utiliza mucha estructura de datos que se comparte con otros algoritmos y 3. la licencia no es GPL, míralo si planeas compartir una versión (posiblemente modificada) del código.
Nelimee

Respuestas:

2

Sugiero mirar cómo funciona un algoritmo genético en un contexto de variables discretas para entenderlo. Proporcionan una metodología, pero puede aplicar otras técnicas de mutación / cruce.


Brevemente, en un problema de optimización simple donde las variables son discretas, podemos resolver heurísticamente con algoritmos genéticos (que pertenecen a los algoritmos evolutivos de clase). Generamos una población de candidatos (aleatoriamente) y cambiamos los candidatos en cada iteración para tratar de encontrar una buena solución que minimice / maximice una función objetivo (llamada aptitud). Puede representar a los candidatos mediante una cadena de valores (llamados cromosomas en general). Si ingresa esta cadena de valores a la función objetivo, está evaluando al candidato o está asignando una aptitud. Las operaciones de cruce / mutación están destinadas a cambiar candidatos y esperan alcanzar nuestro objetivo de una manera relacionada con lo que sucede en genética.

El GLOA es solo otro algoritmo genético pero con la diferencia de tener diferentes grupos de población con un óptimo local (líder como el mejor candidato si lo prefiere) para cada uno y, por supuesto, una estrategia ligeramente diferente para la mutación / cruce. Por lo general, tenemos un grupo de candidatos con un mejor candidato en cada iteración.

Ahora para sus preguntas:

1. Puede elegir el conjunto de puertas que desee (como su ejemplo de conjunto). Esto también es cierto para el número máximo de operaciones de puerta que desea restringir su descomposición. Esos son solo parámetros para el algoritmo. Diría que esto es completamente arbitrario (no tanta lógica necesariamente solo heurística), pero tal vez lo que eligieron estaba más adaptado a su ejemplo o configuración de trabajo. En la práctica, deberías probar muchos parámetros.

2. Estás retomando las explicaciones originales y especialmente el diagrama, así que creo que estás resumiendo bien.

ingrese la descripción de la imagen aquí

t14×maxgates52080

Para su visualización, mire la cadena de ejemplo que da:

1 3 2 0,0; 2 3 1 0,0; 3 2 1 0,0; 4 3 2 0,0; 2 1 3 0.0

maxgates55245×4=20

1 3 2 0.0V320.0V

4. Esto también es arbitrario dependiendo de lo que quieras. Puede ser un número fijo de iteraciones, o hasta que alcance un umbral / criterio de convergencia.

canadá
fuente
1
¡Gracias por la respuesta! Agregué una instantánea del pseudocódigo en la Figura 2, para que quede más claro. Sin embargo, siéntase libre de eliminarlo, si lo desea. :)
Sanchayan Dutta
1
HH