FoundryProductsTechnologyCompanyInvestor relationsResource libraryNews
Contact us
Resource library
    Resource library home
    Developer resources
      Entropy quantum optimization
        Dirac Quick Start
        Dirac-3 Developer Beginner Guide
        Multibody formulation
        QUBO formulation
        QLCBO formulation
        QBoost formulation
        qci-client software package
        eqc-direct software package
        eqc-models software package
          Getting Started
          Basic Usage
          eqc_models
          Dependencies
      Quantum random number generation
      Reservoir computing
    Applications
    Lessons
    Research and publications
    Support

Couldn’t find what you are looking for? Reach out to technical support.

Contact support
Privacy PolicyCookie PolicyTerms of UseForward Looking StatementsAccessibility Statement
Terms and Conditions of SaleEnd User License Agreement

© 2018-2026 Quantum Computing Inc.

Download

Default

Source code for eqc_models.utilities.general

  • # (C) Quantum Computing Inc., 2024.
  • import numpy as np
  • from eqc_models.utilities.polynomial import convert_hamiltonian_to_polynomial
  • [docs]
  • def create_json_problem(
  • A: np.array,
  • B: np.array,
  • C: np.array,
  • D: np.array,
  • num_vars: int,
  • sum_constraint: float = None,
  • num_levels: int = None,
  • ):
  • """Converts a hamiltonian of up to fourth order to a polynomial.
  • D_{ijkl} x_i x_j x_k x_l + C_{ijk} x_i x_j x_k + B_{ij} x_i x_j
  • + A_i x_i
  • Input:
  • A: First order hamiltonian.
  • B: Second order hamiltonian.
  • C: Third order hamiltonian.
  • D: Fourth order hamiltonian.
  • num_vars: Number of variables.
  • Output:
  • Problem in json format.
  • """
  • if D is not None:
  • assert len(D.shape) == 4, "Incorrect shape!"
  • assert D.shape[0] == num_vars, "Inconsistent dimensions!"
  • assert D.shape[1] == num_vars, "Inconsistent dimensions!"
  • assert D.shape[2] == num_vars, "Inconsistent dimensions!"
  • assert D.shape[3] == num_vars, "Inconsistent dimensions!"
  • degree = 4
  • elif C is not None:
  • assert len(C.shape) == 3, "Incorrect shape!"
  • assert C.shape[0] == num_vars, "Inconsistent dimensions!"
  • assert C.shape[1] == num_vars, "Inconsistent dimensions!"
  • assert C.shape[2] == num_vars, "Inconsistent dimensions!"
  • degree = 3
  • elif B is not None:
  • assert len(B.shape) == 2, "Incorrect shape!"
  • assert B.shape[0] == num_vars, "Inconsistent dimensions!"
  • assert B.shape[1] == num_vars, "Inconsistent dimensions!"
  • degree = 2
  • elif A is not None:
  • assert len(A.shape) in [1, 2], "Incorrect shape!"
  • if len(A.shape) == 2:
  • if A.shape[1] == 1:
  • A = A.reshape((A.shape[0]))
  • else:
  • assert False, "Incorrect shape!"
  • assert A.shape[0] == num_vars, "Inconsistent dimensions!"
  • degree = 1
  • else:
  • assert False, "No hamiltonian provided!"
  • poly_indices, poly_coefs = convert_hamiltonian_to_polynomial(
  • A, B, C, D, num_vars,
  • )
  • json_object = {
  • "degree": degree,
  • "num_variables": num_vars,
  • "poly_indices": poly_indices,
  • "poly_coefficients": poly_coefs,
  • }
  • if num_levels is not None:
  • json_object["levels"] = [num_levels] * num_vars
  • if sum_constraint is not None:
  • json_object["sum_constraint"] = sum_constraint
  • return json_object
Previous page

Content

  • Source code for eqc_models.utilities.general