build_excitation_span_minimization_model
build_excitation_span_minimization_model(excitations, num_modes, *, objective='multi', mix_delta=0.1)
Crie um modelo Pyomo para ordenar os modos fermiónicos a fim de minimizar os intervalos de excitação.
O modelo constrói uma permutação na qual cada índice de modo original é atribuído a exatamente uma posição em uma ordenação linear. Para cada tupla de excitação de 2 modos e 4 modos, o intervalo das posições ocupadas é minimizado de acordo com o objetivo escolhido.
A lista excitations é pré-processada da seguinte forma:
- índices que aparecem duas vezes na mesma tupla são cancelados
- as tuplas resultantes com comprimento 0 ou 1 são ignoradas, não impondo, portanto, uma restrição de distância no modelo de minimização resultante
- consequentemente, espera-se que apenas tuplas pós-processadas de comprimento 2 ou 4 sejam encontradas
Para uma discussão e explicação mais detalhadas sobre o raciocínio por trás desse pré-processamento, consulte a seção “ III.B ” deste artigo.
Parâmetros
-
excitations (Sequence[tuple[int, int] | tuple[int, int, int, int]]) – uma sequência de tuplas de índices de excitação sobre índices de modos fermiónicos.
-
num_modes (int) – o número total de modos fermiônicos a serem ordenados.
-
objective (Literal['minmax', 'multi', 'avg']) –
o modo de objetivo selecionado. Isso pode ser um dos seguintes literais:
minmax: minimiza a amplitude máxima de excitação.avg: minimiza o intervalo médio de excitação.multi: minimizamax_span + mix_delta * average_span.
-
mix_delta (float) – o peso de mistura utilizado no caso de
objective="multi".
Retorna
Um modelo de otimização Pyomo que codifica as variáveis de permutação, as variáveis de intervalo, as restrições e o objetivo. Resolva esse modelo com um solucionador do Pyomo para obter uma sequência otimizada.
Aumentos
- ValueError – se uma tupla de excitação pós-processada tiver comprimento diferente de 2 ou 4.
- ValueError – se
objectivefor escolhida uma incógnita.
Tipo de retorno