Skip to main content
IBM Quantum Platform

Referência da API do Aqarios Constrained Quantum Optimizer

  • Qiskit Functions

    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.

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()
Versão de pré-visualização

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 DOcplex export_as_lp_string()
  • MPS (*.mps): Formato de arquivo MPS padrão exportado como uma string, por exemplo, por meio do DOcplex export_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 pp ). 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 > 0ou None utilizar 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
4710O modelo de entrada não é compatível. O modelo contém variáveis inteiras ou contínuas sem restrições de intervalo.
4711A 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.
4712O modelo foi resolvido de forma ótima durante o pré-processamento e não foi realizado nenhum cálculo quântico. O resultado ainda é retornado.
4719Erro inesperado na função interna. Entre em contato com [email protected] informando o número de referência da vaga.
Condições comuns de erro
  • Formato de modelo inválido : Se a string model não puder ser analisada como um modelo LP, MPS ou Luna válido, a tarefa falhará com o código de erro 4711.
  • 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.
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.