Referência da API do Aqarios Constrained Quantum Optimizer
Qiskit Functions — ferramentas prontas para uso, criadas por organizações parceiras — abstraem partes do fluxo de trabalho de desenvolvimento de software para simplificar e acelerar a descoberta de algoritmos e o desenvolvimento de aplicativos em escala de serviços públicos. Clique aqui para ver o guia desta função do Qiskit.
Guia do Otimizador Quântico Restrito do Aqarios
O Aqarios Constrained Quantum Optimizer resolve problemas de otimização binária com restrições em hardware d IBM Quantum®. Ele aceita problemas nos formatos LP, MPS ou Luna Model e realiza internamente toda a reformulação, síntese de circuitos, transpilagem e inicialização iterativa, utilizando QAOA de ângulo fixo com misturadores XY.
A função é carregada e chamada da seguinte forma:
optimizer = catalog.load("aqarios/constrained-quantum-optimizer")
job = optimizer.run(model=lp_str, backend_name="ibm_phoenix")
result = job.result()O Otimizador Quântico Restrito da Aqarios está disponível apenas para usuários dos planos “ IBM Quantum® Premium Plan ”, “Flex Plan” e “ On-Prem Plan ”. Está em fase de pré-lançamento e está sujeito a alterações.
Entradas
Consulte a lista a seguir para conhecer todos os parâmetros de entrada aceitos por esta API. Os parâmetros obrigatórios devem ser fornecidos em todas as chamadas; todos os demais são opcionais.
model
Tipo: str
O modelo de otimização serializado a ser resolvido. São suportados três formatos:
- LP (
*.lp): Formato de arquivo LP padrão exportado como uma string, por exemplo, por meio do DOcplexexport_as_lp_string() - MPS (
*.mps): Formato de arquivo MPS padrão exportado como uma string, por exemplo, por meio do DOcplexexport_as_mps_string() - Modelo Luna : Base64-encoded serialização de um objeto do modelo Aqarios Luna, obtida por meio de
model.encode_b64()
O modelo deve representar um problema de otimização binária, seja de maximização, seja de minimização. As restrições podem ser desigualdades ou igualdades sobre variáveis binárias. Variáveis inteiras só são suportadas quando são especificados limites superior e inferior bem definidos. O objetivo e as restrições podem ser de ordem superior e não precisam ser necessariamente lineares.
- Necessário: sim
- Exemplo de LP:
\Problem name: MIS
Minimize
obj: ...
Subject To
c1: ...
...
Binaries
x_0 x_1
End
backend_name
Tipo: str or None
Valor Padrão: None
O nome do backend do IBM Quantum no qual será executado (por exemplo "ibm_phoenix"). Quando configurada para None, a função seleciona automaticamente o dispositivo disponível menos ocupado.
- Obrigatório: Não
- Exemplo:
"ibm_phoenix"
options
Tipo: dict or None
Valor Padrão: None
Opções de configuração do algoritmo que controlam o comportamento do QAOA com inicialização a quente iterativa. As opções são especificadas como um dicionário. Consulte a lista de opções abaixo para ver todas as chaves disponíveis e seus valores padrão.
- Obrigatório: Não
- Exemplo:
{"reps": 2, "num_parallel": 10, "postprocessing": "weak"}
Lista de opções
reps
Tipo: int
Valor Padrão: 1
Número de repetições da camada QAOA (parâmetro de profundidade do circuito ). Valores mais altos aumentam a qualidade da solução, mas resultam em circuitos mais profundos e maior tempo de execução, o que pode causar mais ruído.
- Opções: Número inteiro dentro do intervalo
[1, 10]
num_parallel
Tipo: int
Valor Padrão: 5
Número de cadeias independentes de inicialização a quente executadas em paralelo. Aumentar esse valor melhora a probabilidade de encontrar soluções de alta qualidade, mas aumenta o consumo total do orçamento de tentativas.
- Opções: Número inteiro dentro do intervalo
[1, 100]
shots
Tipo: int
Valor Padrão: 500
Número de medições por iteração por cadeia.
- Opções: Número inteiro dentro do intervalo
[1, 10000]
total_shots
Tipo: int
Valor Padrão: 5000
Orçamento total de disparos em todas as iterações para uma única cadeia de partida a quente. O ciclo de iteração é encerrado para uma cadeia assim que esse orçamento for esgotado.
- Opções: Número inteiro dentro do intervalo
[1, 1000000]
epsilon
Tipo: float
Valor Padrão: 0.1
Parâmetro de regularização para as probabilidades de partida a quente. Impede que a distribuição de probabilidade se reduza a um estado determinístico, preservando a exploração ao longo das iterações.
- Opções: Flutuação dentro do intervalo
(0.01, 1)
beta
Tipo: float
Valor Padrão: 10
Temperatura inversa para a ponderação de Boltzmann utilizada para derivar novos estados de partida quente a partir de amostras de medição. Valores mais altos concentram a massa de probabilidade em amostras de menor energia.
- Opções: Flutuação satisfatória
beta > 0
approximation_degree
Tipo: float
Valor Padrão: 1.0
Controla o nível de aproximação aplicado à função de custo e durante a transpilagem. Valores mais baixos reduzem a profundidade do circuito ao introduzir aproximações, o que pode afetar a qualidade da solução.
- Opções: Flutuação dentro do intervalo
[0.0, 1.0]
postprocessing
Tipo: str
Valor Padrão: "strong"
Estratégia clássica de pós-processamento aplicada após cada etapa de amostragem para melhorar a qualidade da solução. Níveis mais elevados aplicam uma busca local mais agressiva, em troca de um tempo de computação clássico adicional.
- Opções:
"off"/"weak"/"medium"/"strong""off": Desativar o pós-processamento."weak": Pesquisa local de passagem única. Tente inverter cada bit uma vez, em ordem aleatória, e mantenha as inversões que reduzam a energia."medium": Pesquisa local em três passagens. Aplique a estratégia fraca três vezes, em ordens aleatórias diferentes."strong": Pesquisa local gananciosa. Aplique repetidamente a inversão de bits que mais reduz o consumo de energia até que não seja mais possível obter melhorias.
penalty_override
Tipo: float or None
Valor Padrão: None
Substitui manualmente o valor da penalidade utilizado na conversão de restrições em termos de penalidade adicionados ao objetivo. Por padrão, a penalidade é calculada automaticamente a partir da estrutura do problema. Utilize esta opção somente se o valor automático gerar resultados inviáveis.
- Opções: Introduzir um valor adequado
penalty_override > 0ouNoneutilizar o valor automático
use_session
Tipo: bool
Valor Padrão: False
Se deve ser utilizado o modo de sessão do Serviço d IBM Quantum Compute para a execução da tarefa. A ativação de sessões reduz a sobrecarga de execução do circuito ao manter aberta uma conexão dedicada com a QPU ao longo das iterações, o que pode diminuir o tempo total de relógio.
- Opções:
True/False
Saídas
O resultado dessa API é um dicionário retornado por job.result(), contendo as melhores soluções encontradas e os metadados associados.
Tipo: dict[str, Any]
Dicionário de resultados com atribuições de soluções, valor do objetivo, status de viabilidade e metadados de tempo de execução.
- Exemplo:
{"solutions": [{"x_0": 1, "x_1": 0}], "obj_value": 42.0, "feasible": True, "metadata": {...}}
Estrutura de saída
solutions
Tipo: list[dict[str, int]]
Uma lista das melhores soluções encontradas. Cada entrada é um dicionário que mapeia nomes de variáveis (por exemplo, "x_0") para suas atribuições binárias (0 ou 1). A lista contém mais de um item somente quando foram identificados vários ótimos degenerados.
- Exemplo:
[{"x_0": 1, "x_1": 0, "x_2": 1}]
obj_value
Tipo: float
O valor objetivo da melhor solução encontrada, expresso em termos do problema original. Em problemas de maximização, esse valor é maior quando as soluções são melhores; em problemas de minimização, ele é menor.
- Exemplo:
42.0
raw_energy
Tipo: float
A energia QAOA bruta da melhor solução, sempre expressa como um valor de minimização. Isso inclui quaisquer termos de penalidade adicionados durante a reformulação do problema e é útil para diagnosticar violações de restrições.
- Exemplo:
-38.5
feasible
Tipo: bool
Se as soluções retornadas satisfazem todas as restrições do modelo de entrada original. Um resultado pode ser inviável se os valores de penalidade forem insuficientes para garantir o cumprimento de todas as restrições no hardware.
- Exemplo:
True
metadata
resource_usage
Tipo: dict
Consumo de recursos quânticos e clássicos detalhado por fase do algoritmo (mapeamento, otimização de hardware, execução na QPU, pós-processamento).
- Exemplo:
{'RUNNING: MAPPING': {'CPU': 4.57},
'RUNNING: OPTIMIZING_FOR_HARDWARE': {'CPU': 0.177},
'RUNNING: WAITING_FOR_QPU': {'CPU': 9.238},
'RUNNING: EXECUTING_QPU': {'QPU': 30},
'RUNNING: POST_PROCESSING': {'CPU': 0.093}}circuit_metrics
Tipo: dict
Médias do número de portas e da profundidade dos circuitos em todos os circuitos enviados ao dispositivo durante a execução da otimização.
- Exemplo:
{"depth": 48, "gate_count": 312, "num_qubits": 20}
Manipulação de erros
Código | Descrição |
|---|---|
4710 | O modelo de entrada não é compatível. O modelo contém variáveis inteiras ou contínuas sem restrições de intervalo. |
4711 | A sequência de caracteres de entrada não pode ser analisada para formar um modelo. Verifique se a entrada é uma sequência válida do tipo LP, MPS ou Luna Model. |
4712 | O modelo foi resolvido de forma ótima durante o pré-processamento e não foi realizado nenhum cálculo quântico. O resultado ainda é retornado. |
4719 | Erro inesperado na função interna. Entre em contato com [email protected] informando o número de referência da vaga. |
- Formato de modelo inválido : Se a string
modelnão puder ser analisada como um modelo LP, MPS ou Luna válido, a tarefa falhará com o código de erro4711. - Erros de validação de opções : Chaves ou valores de opções fora dos intervalos documentados fazem com que a tarefa falhe imediatamente, com o código de erro
1221.