The Compiler
Compilation Steps
Setup
ToQUBO.Compiler.reset! — Function
reset!(model::Virtual.Model, arch::AbstractArchitecture)ToQUBO.Compiler.setup! — Function
setup!(model::Virtual.Model, ::AbstractArchitecture)Parsing
ToQUBO.Compiler.parse! — Function
parse!(
model::Virtual.Model{T},
g::PBO.PBF{VI,T},
f::MOI.AbstractFunction,
arch::AbstractArchitecture
) where {T}Parses the given MOI function f into PBF g.
ToQUBO.Compiler._parse — Function
Reformulation
ToQUBO.Compiler.sense! — Function
sense!(model::Virtual.Model, ::AbstractArchitecture)Copies MOI.ObjectiveSense from model.source_model to model.target_model.
ToQUBO.Compiler.variable! — Function
variable!(model::Virtual.Model{T}) where {T}ToQUBO.Compiler.variables! — Function
variables!(model::Virtual.Model{T}) where {T}ToQUBO.Compiler.constraint — Function
constraintReturns the pseudo-boolean function associated to a given constraint from the source model.
ToQUBO.Compiler.constraints! — Function
constraints!(model::Virtual.Model, ::AbstractArchitecture)ToQUBO.Compiler.objective! — Function
objective!(model::Virtual.Model, ::AbstractArchitecture)ToQUBO.Compiler.penalties! — Function
penalties!(model::Virtual.Model, arch::AbstractArchitecture)Copying
ToQUBO.Compiler.isqubo — Function
isqubo(model::MOI.ModelLike)Tells if a given model is ready to be interpreted as a QUBO model.
For it to be true, a few conditions must be met:
- All variables must be binary (
MOI.VariableIndex ∈ MOI.ZeroOne) - No other constraints are allowed
- The objective function must be of type
MOI.ScalarQuadraticFunction,MOI.ScalarAffineFunctionorMOI.VariableIndex - The objective sense must be either
MOI.MIN_SENSEorMOI.MAX_SENSE
ToQUBO.Compiler.copy! — Function
copy!(model::Virtual.Model, arch::AbstractArchitecture)Hamiltonian Assembly
ToQUBO.Compiler.build! — Function
build!(model::Virtual.Model, arch::AbstractArchitecture)ToQUBO.Compiler.quadratize! — Function
quadratize!(model::Virtual.Model, arch::AbstractArchitecture)Quadratizes the objective function from a model.