# Getting Started

## Introduction

Entropy Quantum Computing (EQC) from Quantum Computing Inc. (QCi) can be used to solve combinatorial optimization problems as well as approximation of continuous solution spaces. The EQC device series developed by QCi utilizes nanophotonic measurement to implement an optimzation solver.

The eqc-models package is provided to support the translation of well known optimization and machine learning models into formulations which run on EQC devices. There are two intended patterns of usage for the classes provided. The optimization models follow a pattern of

1. build the model

2. solve the concrete model

3. analyze the results.

While machine learning models follow the pattern

1. build the model

2. fit the model

3. predict with the fitted model.

Underneath, the same method of interaction is performed. All models have some formulation of an unconstrained (except in domain) polynomial. Sometimes the polynomial is a quadratic, sometimes it is higher order. There are some device specifics that require additional details to be considered.

## Installation

Python package is availble from PyPI repository and can be installed by:

    pip install eqc-models

## Table of Contents

- Getting Started
- Basic Usage
- eqc_models
  - eqc_models.base
    - Subpackages
    - `ConstraintsMixIn`
    - `ConstraintModel`
    - `ConstrainedQuadraticModel`
    - `QuadraticModel`
    - `PolynomialModel`
    - `ConstrainedPolynomialModel`
    - `InequalitiesMixin`
    - `InequalityConstraintModel`
    - `EqcModel`
    - `ModelSolver`
    - `QUBO`
    - `Polynomial`
    - `SolutionResults`
  - eqc_models.solvers
    - `Dirac3DirectSolver`
    - `Dirac3ContinuousDirectSolver`
    - `Dirac3IntegerDirectSolver`
    - `Dirac1CloudSolver`
    - `Dirac3CloudSolver`
    - `QciClientSolver`
    - `Dirac3IntegerCloudSolver`
    - `Dirac3ContinuousCloudSolver`
    - `MIPMixin`
    - `Dirac3MIPCloudSolver`
    - `Dirac3MIPDirectSolver`
  - eqc_models.ml
    - `QBoostClassifier`
    - `QSVMClassifier`
    - `PCA`
    - `ReservoirForecastModel`
  - eqc_models.allocation
    - `AllocationModel`
    - `AllocationModelX`
    - `PortMomentum`
    - `ResourceRuleEnum`
  - eqc_models.assignment
    - `QAPModel`
    - `ResourceAssignmentModel`
  - eqc_models.combinatorics
    - `SetCoverModel`
    - `SetPartitionModel`
  - eqc_models.graph
    - `MaxCutModel`
    - `GraphPartitionModel`
    - `EdgeMixin`
    - `EdgeModel`
    - `GraphModel`
    - `NodeModel`
  - eqc_models.sequence
    - `MTZTSPModel`
  - eqc_models.algorithms
    - `PenaltyMultiplierAlgorithm`
    - `ALMAlgorithm`
    - `ConstraintRegistry`
    - `ALMConfig`
    - `ALMConstraint`
    - `ALMBlock`
  - eqc_models.algorithms.alm
    - Augmented Lagrangian Method
    - `level_decoder()`
    - `ALMConstraint`
    - `ALMBlock`
    - `ALMConfig`
    - `ConstraintRegistry`
    - `ALMAlgorithm`
  - eqc_models.utilities
    - `evaluate_polynomial()`
    - `read_coefficient_file()`
    - `read_index_file()`
    - `read_config_file()`
    - `convert_hamiltonian_to_polynomial()`
    - `create_json_problem()`
  - eqc_models.utilities.qplib
    - `QBBModel`
    - `QGLModel`
    - `file_to_model()`
    - `file_to_polynomial()`
    - `process_file()`
    - `read_line()`
- Dependencies
  - Packages