build_excitation_span_minimization_model
build_excitation_span_minimization_model(excitations, num_modes, *, objective='multi', mix_delta=0.1)
Crea un modelo de Pyomo para ordenar los modos fermiónicos con el fin de minimizar los intervalos de excitación.
El modelo construye una permutación en la que a cada índice de modo original se le asigna exactamente una posición en un orden lineal. Para cada tupla de excitación de 2 y 4 modos, se minimiza el intervalo de posiciones ocupadas de acuerdo con el objetivo elegido.
La lista excitations se procesa previamente de la siguiente manera:
- Los índices que aparecen dos veces dentro de la misma tupla se anulan
- Las tuplas resultantes de longitud 0 o 1 se ignoran, por lo que no se impone ninguna restricción de distancia en el modelo de minimización resultante
- Por lo tanto, solo se esperan tuplas posprocesadas de longitud 2 o 4
Para obtener un análisis y una explicación más detallados de los fundamentos de este preprocesamiento, véase la sección « III.B » de este artículo.
Parámetros
-
excitations (Sequence[tuple[int, int] | tuple[int, int, int, int]]) – una secuencia de tuplas de índices de excitación sobre índices de modos fermiónicos.
-
num_modes (int) – el número total de modos fermiónicos que hay que ordenar.
-
objective (Literal['minmax', 'multi', 'avg']) –
el modo objetivo seleccionado. Puede tratarse de uno de los siguientes literales:
minmax: minimiza el intervalo máximo de excitación.avg: minimiza la amplitud media de excitación.multi: minimizamax_span + mix_delta * average_span.
-
mix_delta (float) – el peso de mezcla utilizado en el caso de
objective="multi".
Devuelve
Un modelo de optimización Pyomo que codifica las variables de permutación, las variables de intervalo, las restricciones y el objetivo. Resuelve este modelo con un solucionador de Pyomo para obtener un orden optimizado.
Subidas
- ValueError – si una tupla de excitación posprocesada tiene una longitud distinta de 2 o 4.
- ValueError – si
objectivese elige una incógnita.
Tipo de retorno