diff --git a/dev/404.html b/dev/404.html index 4d10450..b790fc9 100644 --- a/dev/404.html +++ b/dev/404.html @@ -8,14 +8,14 @@ - + -
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
- +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
+ \ No newline at end of file diff --git a/dev/assets/app.hk87RSAk.js b/dev/assets/app.BSU7USZU.js similarity index 95% rename from dev/assets/app.hk87RSAk.js rename to dev/assets/app.BSU7USZU.js index b052e2e..8f10936 100644 --- a/dev/assets/app.hk87RSAk.js +++ b/dev/assets/app.BSU7USZU.js @@ -4,4 +4,4 @@ function __vite__mapDeps(indexes) { } return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) } -import{j as o,a8 as p,a9 as u,aa as l,ab as c,ac as f,ad as d,ae as m,af as h,ag as g,ah as A,Y as P,d as _,u as v,l as R,z as w,ai as y,aj as C,ak as E,a6 as b}from"./chunks/framework.RTxADYK2.js";import{R as T}from"./chunks/theme.CUcw3pM6.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(T),S=_({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return R(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&y(),C(),E(),s.setup&&s.setup(),()=>b(s.Layout)}});async function j(){globalThis.__VITEPRESS__=!0;const e=L(),a=D();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return h(S)}function L(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),__vite__mapDeps([]))),o&&(e=!1),r},s.NotFound)}o&&j().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{j as createApp}; +import{j as o,a8 as p,a9 as u,aa as l,ab as c,ac as f,ad as d,ae as m,af as h,ag as g,ah as A,Y as P,d as _,u as v,l as R,z as w,ai as y,aj as C,ak as E,a6 as b}from"./chunks/framework.RTxADYK2.js";import{R as T}from"./chunks/theme.BPFRbdjC.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(T),S=_({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return R(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&y(),C(),E(),s.setup&&s.setup(),()=>b(s.Layout)}});async function j(){globalThis.__VITEPRESS__=!0;const e=L(),a=D();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return h(S)}function L(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),__vite__mapDeps([]))),o&&(e=!1),r},s.NotFound)}o&&j().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{j as createApp}; diff --git a/dev/assets/benchmark_ext.md.Bp6mh-J0.js b/dev/assets/benchmark_ext.md.Bp6mh-J0.js deleted file mode 100644 index 308aeac..0000000 --- a/dev/assets/benchmark_ext.md.Bp6mh-J0.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,c as a,o as t,m as e,a as n}from"./chunks/framework.RTxADYK2.js";const f=JSON.parse('{"title":"BenchmarkTools Extension","description":"","frontmatter":{},"headers":[],"relativePath":"benchmark_ext.md","filePath":"benchmark_ext.md","lastUpdated":null}'),s={name:"benchmark_ext.md"},r=e("h1",{id:"BenchmarkTools-Extension",tabindex:"-1"},[n("BenchmarkTools Extension "),e("a",{class:"header-anchor",href:"#BenchmarkTools-Extension","aria-label":'Permalink to "BenchmarkTools Extension {#BenchmarkTools-Extension}"'},"​")],-1),c=e("p",null,[n("A benchmarking extension, based on "),e("code",null,"BenchmarkTools.jl"),n(", has been interfaced with "),e("code",null,"PerfChecker.jl"),n(". This section (will) provides some usage examples, documentation, and links to related notebooks.")],-1),l=[r,c];function i(d,h,m,_,k,x){return t(),a("div",null,l)}const u=o(s,[["render",i]]);export{f as __pageData,u as default}; diff --git a/dev/assets/benchmark_ext.md.Bp6mh-J0.lean.js b/dev/assets/benchmark_ext.md.Bp6mh-J0.lean.js deleted file mode 100644 index 308aeac..0000000 --- a/dev/assets/benchmark_ext.md.Bp6mh-J0.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,c as a,o as t,m as e,a as n}from"./chunks/framework.RTxADYK2.js";const f=JSON.parse('{"title":"BenchmarkTools Extension","description":"","frontmatter":{},"headers":[],"relativePath":"benchmark_ext.md","filePath":"benchmark_ext.md","lastUpdated":null}'),s={name:"benchmark_ext.md"},r=e("h1",{id:"BenchmarkTools-Extension",tabindex:"-1"},[n("BenchmarkTools Extension "),e("a",{class:"header-anchor",href:"#BenchmarkTools-Extension","aria-label":'Permalink to "BenchmarkTools Extension {#BenchmarkTools-Extension}"'},"​")],-1),c=e("p",null,[n("A benchmarking extension, based on "),e("code",null,"BenchmarkTools.jl"),n(", has been interfaced with "),e("code",null,"PerfChecker.jl"),n(". This section (will) provides some usage examples, documentation, and links to related notebooks.")],-1),l=[r,c];function i(d,h,m,_,k,x){return t(),a("div",null,l)}const u=o(s,[["render",i]]);export{f as __pageData,u as default}; diff --git a/dev/assets/cbls.md.doV2wO36.js b/dev/assets/cbls.md.doV2wO36.js deleted file mode 100644 index 4512eac..0000000 --- a/dev/assets/cbls.md.doV2wO36.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const b=JSON.parse('{"title":"CBLS.jl","description":"","frontmatter":{},"headers":[],"relativePath":"cbls.md","filePath":"cbls.md","lastUpdated":null}'),t={name:"cbls.md"},l=e('

CBLS.jl

Documentation for CBLS.jl.

# CBLS.AllDifferentType.

Global constraint ensuring that all the values of a given configuration are unique.

julia
@constraint(model, X in AllDifferent())

source


# CBLS.AllEqualType.

Global constraint ensuring that all the values of X are all equal.

julia
@constraint(model, X in AllEqual())

source


# CBLS.AllEqualParamType.

Global constraint ensuring that all the values of X are all equal to a given parameter param.

julia
@constraint(model, X in AllEqualParam(param))

source


# CBLS.AlwaysTrueType.

Always return true. Mainly used for testing purpose.

julia
@constraint(model, X in AlwaysTrue())

source


# CBLS.DiscreteSetType.
julia
DiscreteSet(values)

source


# CBLS.DistDifferentType.

Local constraint ensuring that, given a vector X of size 4, |X[1] - X[2]| ≠ |X[3] - X[4]|).

julia
@constraint(model, X in DistDifferent())

source


# CBLS.EqType.

Equality between two variables.

julia
@constraint(model, X in Eq())

source


# CBLS.ErrorType.
julia
Error{F <: Function} <: JuMP.AbstractVectorSet

The solver will compute a straightforward error function based on the concept. To run the solver efficiently, it is possible to provide an error function err instead of concept. err must return a nonnegative real number.

julia
@constraint(model, X in Error(err))

source


# CBLS.LessThanParamType.

Constraint ensuring that the value of x is less than a given parameter param.

julia
@constraint(model, x in LessThanParam(param))

source


# CBLS.MOIAllDifferentType.
julia
MOIAllDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIAllEqualType.
julia
MOIAllEqual <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIAllEqualParamType.
julia
MOIAllEqualParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

source


# CBLS.MOIAlwaysTrueType.
julia
MOIAlwaysTrue <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIDistDifferentType.
julia
MOIDistDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIEqType.
julia
MOIEq <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIErrorType.
julia
MOIError{F <: Function} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

source


# CBLS.MOILessThanParamType.
julia
MOILessThanParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

source


# CBLS.MOIMinusEqualParamType.
julia
MOIMinusEqualParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

source


# CBLS.MOIOrderedType.
julia
MOIOrdered <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIPredicateType.
julia
MOIPredicate{F <: Function} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

source


# CBLS.MOISequentialTasksType.
julia
MOISequentialTasks <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOISumEqualParamType.
julia
MOISumEqualParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

source


# CBLS.MinusEqualParamType.

Constraint ensuring that the value of x is less than a given parameter param.

julia
@constraint(model, x in MinusEqualParam(param))

source


# CBLS.OptimizerType.
julia
Optimizer(model = Model(); options = Options())

DOCSTRING

source


# CBLS.OptimizerType.
julia
Optimizer <: MOI.AbstractOptimizer

DOCSTRING

Arguments:

source


# CBLS.OrderedType.

Global constraint ensuring that all the values of x are ordered.

julia
@constraint(model, X in Ordered())

source


# CBLS.PredicateType.
julia
Predicate{F <: Function} <: JuMP.AbstractVectorSet

Assuming X is a (collection of) variables, concept a boolean function over X, and that a model is defined. In JuMP syntax we can create a constraint based on concept as follows.

julia
@constraint(model, X in Predicate(concept))

source


# CBLS.ScalarFunctionType.
julia
ScalarFunction{F <: Function, V <: Union{Nothing, VOV}} <: MOI.AbstractScalarFunction

A container to express any function with real value in JuMP syntax. Used with the @objective macro.

Arguments:

Given a model, and some (collection of) variables X to optimize. an objective function f can be added as follows. Note that only Min for minimization us currently defined. Max will come soon.

julia
# Applies to all variables in order of insertion.\n# Recommended only when the function argument order does not matter.\n@objective(model, ScalarFunction(f))\n\n# Generic use\n@objective(model, ScalarFunction(f, X))

source


# CBLS.SequentialTasksType.

Local constraint ensuring that, given a vector X of size 4, |X[1] - X[2]| ≠ |X[3] - X[4]|).

julia
@constraint(model, X in SequentialTasks())

source


# CBLS.SumEqualParamType.

Global constraint ensuring that the sum of the values of X is equal to a given parameter param.

julia
@constraint(model, X in SumEqualParam(param))

source


# Base.copyMethod.
julia
Base.copy(set::MOIError) = begin

DOCSTRING

source


# Base.copyMethod.
julia
Base.copy(set::DiscreteSet) = begin

DOCSTRING

source


# JuMP.build_variableMethod.
julia
JuMP.build_variable(::Function, info::JuMP.VariableInfo, set::T) where T <: MOI.AbstractScalarSet

DOCSTRING

Arguments:

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, vars::MOI.VectorOfVariables, set::MOIError)

DOCSTRING

Arguments:

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, v::VI, set::DiscreteSet{T}) where T <: Number

DOCSTRING

Arguments:

source


# MathOptInterface.add_variableMethod.
julia
MOI.add_variable(model::Optimizer) = begin

DOCSTRING

source


# MathOptInterface.empty!Method.
julia
MOI.empty!(opt) = begin

DOCSTRING

source


# MathOptInterface.getMethod.
julia
MOI.get(::Optimizer, ::MOI.SolverName) = begin

DOCSTRING

source


# MathOptInterface.is_emptyMethod.
julia
MOI.is_empty(model::Optimizer) = begin

DOCSTRING

source


# MathOptInterface.optimize!Method.
julia
MOI.optimize!(model::Optimizer)

source


# MathOptInterface.setFunction.
julia
MOI.set(::Optimizer, ::MOI.Silent, bool = true) = begin

DOCSTRING

Arguments:

source


# MathOptInterface.setMethod.
julia
MOI.set(model::Optimizer, p::MOI.RawOptimizerAttribute, value)

Set a RawOptimizerAttribute to value

source


# MathOptInterface.setMethod.
julia
MOI.set(model::Optimizer, ::MOI.TimeLimitSec, value::Union{Nothing,Float64})

Set the time limit

source


# MathOptInterface.supports_constraintMethod.
julia
MOI.supports_constraint(::Optimizer, ::Type{VOV}, ::Type{MOIError}) = begin

DOCSTRING

Arguments:

source


# MathOptInterface.supports_incremental_interfaceMethod.

Copy constructor for the optimizer

source


',92),r=[l];function p(n,h,d,o,k,c){return a(),s("div",null,r)}const g=i(t,[["render",p]]);export{b as __pageData,g as default}; diff --git a/dev/assets/cbls.md.doV2wO36.lean.js b/dev/assets/cbls.md.doV2wO36.lean.js deleted file mode 100644 index 460a946..0000000 --- a/dev/assets/cbls.md.doV2wO36.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const b=JSON.parse('{"title":"CBLS.jl","description":"","frontmatter":{},"headers":[],"relativePath":"cbls.md","filePath":"cbls.md","lastUpdated":null}'),t={name:"cbls.md"},l=e("",92),r=[l];function p(n,h,d,o,k,c){return a(),s("div",null,r)}const g=i(t,[["render",p]]);export{b as __pageData,g as default}; diff --git a/dev/assets/chunks/@localSearchIndexroot.ChQxPsl0.js b/dev/assets/chunks/@localSearchIndexroot.ChQxPsl0.js deleted file mode 100644 index ab0b7c8..0000000 --- a/dev/assets/chunks/@localSearchIndexroot.ChQxPsl0.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":17,"nextId":17,"documentIds":{"0":"/dev/benchmark_ext#BenchmarkTools-Extension","1":"/dev/cbls#CBLS.jl","2":"/dev/compositional_networks#CompositionalNetworks.jl","3":"/dev/constraint_commons#ConstraintCommons.jl","4":"/dev/constraint_domains#ConstraintDomains.jl","5":"/dev/constraint_models#ConstraintModels.jl","6":"/dev/constraint_learning#ConstraintLearning.jl","7":"/dev/constraints#Constraints.jl","8":"/dev/getting_started#Getting-Started","9":"/dev/index copy#JuliaConstraints","10":"/dev/index copy#Operational-Research-vs-Constraint-Programming","11":"/dev/index copy#Constraint-Based-Local-Search","12":"/dev/local_search_solvers#LocalSearchSolvers.jl","13":"/dev/meta_strategist#MetaStrategist.jl","14":"/dev/perf_checker#PerfChecker.jl","15":"/dev/perf_interface#Interfacing-PerfChecker","16":"/dev/qubo_constraints#QUBOConstraints.jl"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,26],"1":[2,1,251],"2":[2,1,403],"3":[2,1,167],"4":[2,1,308],"5":[2,1,5],"6":[2,1,232],"7":[2,1,181],"8":[2,1,11],"9":[1,1,122],"10":[5,2,93],"11":[4,2,80],"12":[2,1,506],"13":[2,1,5],"14":[2,1,5],"15":[2,1,18],"16":[2,1,106]},"averageFieldLength":[2.235294117647059,1.1176470588235294,148.1764705882353],"storedFields":{"0":{"title":"BenchmarkTools Extension","titles":[]},"1":{"title":"CBLS.jl","titles":[]},"2":{"title":"CompositionalNetworks.jl","titles":[]},"3":{"title":"ConstraintCommons.jl","titles":[]},"4":{"title":"ConstraintDomains.jl","titles":[]},"5":{"title":"ConstraintModels.jl","titles":[]},"6":{"title":"ConstraintLearning.jl","titles":[]},"7":{"title":"Constraints.jl","titles":[]},"8":{"title":"Getting Started","titles":[]},"9":{"title":"JuliaConstraints","titles":[null]},"10":{"title":"Operational Research vs Constraint Programming","titles":[null,"JuliaConstraints"]},"11":{"title":"Constraint-Based Local Search","titles":[null,"JuliaConstraints"]},"12":{"title":"LocalSearchSolvers.jl","titles":[]},"13":{"title":"MetaStrategist.jl","titles":[]},"14":{"title":"PerfChecker.jl","titles":[]},"15":{"title":"Interfacing PerfChecker","titles":[]},"16":{"title":"QUBOConstraints.jl","titles":[]}},"dirtCount":0,"index":[["σ",{"2":{"16":2}}],["`function",{"2":{"12":1}}],["`struct",{"2":{"12":1}}],["`",{"2":{"6":1}}],["```julia",{"2":{"4":1}}],["``",{"2":{"1":6}}],["η",{"2":{"6":1}}],["quot",{"2":{"9":4}}],["quboconstraints",{"0":{"16":1},"2":{"6":1,"16":8}}],["qubooptimizer",{"2":{"6":2}}],["qubo",{"2":{"6":4,"16":5}}],["qubogradientoptimizer",{"2":{"6":4}}],["q",{"2":{"6":7}}],["yes",{"2":{"12":1}}],["yet",{"2":{"4":2}}],["you",{"2":{"9":1}}],["y",{"2":{"6":4,"9":1,"12":2}}],["heuristic",{"2":{"11":2}}],["helps",{"2":{"9":1}}],["help",{"2":{"9":2,"10":1}}],["hot",{"2":{"16":3}}],["hosts",{"2":{"9":1}}],["holds",{"2":{"9":1}}],["hold",{"2":{"6":1}}],["high",{"2":{"9":1}}],["highest",{"2":{"4":1,"12":1}}],["https",{"2":{"7":1}}],["hand",{"2":{"7":1,"10":1}}],["handled",{"2":{"4":1}}],["handle",{"2":{"4":1,"12":2}}],["half",{"2":{"4":1}}],["have",{"2":{"2":4,"11":1}}],["hamming",{"2":{"2":4,"6":3}}],["has",{"2":{"0":1,"2":1,"3":1,"12":10,"16":1}}],["∪",{"2":{"4":1}}],["9",{"2":{"4":1}}],["86",{"2":{"4":1}}],["89",{"2":{"4":2,"12":1}}],["69",{"2":{"4":1}}],["≤",{"2":{"4":4}}],["δ",{"2":{"3":1,"6":1}}],["∈",{"2":{"3":1,"4":5,"12":3}}],["keep",{"2":{"16":1}}],["keyword",{"2":{"12":1}}],["keywords",{"2":{"2":1}}],["kind=",{"2":{"12":1}}],["kind",{"2":{"4":2,"12":6}}],["kargs",{"2":{"3":1,"6":6}}],["known",{"2":{"2":2,"12":1}}],["k",{"2":{"2":2,"12":1}}],["+",{"2":{"2":7,"9":1}}],["was",{"2":{"12":1,"15":1}}],["warning",{"2":{"7":1}}],["wrappers",{"2":{"9":1}}],["wrapping",{"2":{"9":1}}],["write",{"2":{"2":2,"9":1}}],["worse",{"2":{"12":3}}],["works",{"2":{"7":1}}],["word",{"2":{"3":5,"4":1}}],["while",{"2":{"10":2,"11":1,"12":5}}],["which",{"2":{"2":2,"4":1}}],["whole",{"2":{"7":1,"12":1}}],["where",{"2":{"1":2,"2":3,"4":10,"7":1,"10":1,"11":2,"12":69}}],["when",{"2":{"1":1,"2":17,"3":2,"6":2,"12":2}}],["w",{"2":{"2":2,"3":2,"6":2}}],["weight",{"2":{"16":1}}],["weigthing",{"2":{"6":1}}],["weigth",{"2":{"2":1}}],["weigths",{"2":{"2":17,"6":5}}],["weigths=nothing",{"2":{"2":1}}],["weigthed",{"2":{"2":1}}],["we",{"2":{"1":1}}],["will",{"2":{"0":1,"1":2,"2":6,"4":1,"6":1,"7":1,"15":1,"16":1}}],["within",{"2":{"12":1}}],["without",{"2":{"2":17}}],["with",{"2":{"0":1,"1":2,"2":28,"3":1,"6":3,"7":4,"9":3,"10":3,"11":1,"12":8}}],["56",{"2":{"12":1}}],["53",{"2":{"4":1}}],["5",{"2":{"1":6,"4":3,"9":1,"12":1}}],["00514",{"2":{"7":1}}],["0",{"2":{"1":6,"2":16,"4":7,"7":4,"12":9}}],["==",{"2":{"4":1,"16":1}}],["=",{"2":{"1":35,"2":19,"3":3,"4":20,"6":12,"7":2,"9":1,"12":49,"16":4}}],["i`",{"2":{"4":1}}],["improving",{"2":{"12":1}}],["improvement",{"2":{"12":1}}],["improve",{"2":{"10":1,"11":1}}],["impossible",{"2":{"11":1}}],["implemented",{"2":{"9":1}}],["implement",{"2":{"4":2}}],["implementation",{"2":{"3":2}}],["immutable",{"2":{"4":1}}],["id",{"2":{"3":1,"12":13}}],["identity",{"2":{"2":10}}],["i",{"2":{"2":43,"4":11,"12":1}}],["iff",{"2":{"2":2}}],["if",{"2":{"2":14,"3":3,"4":10,"6":1,"7":3,"12":14,"16":4}}],["icns",{"2":{"6":1}}],["icnlocalsearchoptimizer",{"2":{"6":3}}],["icngeneticoptimizer",{"2":{"6":4}}],["icnoptimizer",{"2":{"6":3}}],["icnconfig",{"2":{"6":4}}],["icn=icn",{"2":{"2":1}}],["icn",{"2":{"2":35,"6":12,"7":1}}],["isempty",{"2":{"3":3,"4":3}}],["is",{"2":{"1":8,"2":48,"3":2,"4":8,"6":5,"7":7,"9":5,"10":5,"11":4,"12":17,"16":5}}],["ith",{"2":{"4":1}}],["itv",{"2":{"4":9}}],["its",{"2":{"2":3,"4":1,"12":2}}],["itself",{"2":{"2":1}}],["iterate",{"2":{"12":1}}],["iterations",{"2":{"12":3}}],["iteration",{"2":{"2":2,"12":8}}],["iter=100",{"2":{"2":2}}],["iter",{"2":{"2":8,"6":3,"12":1}}],["it",{"2":{"1":1,"2":3,"4":1,"6":1,"7":3,"9":2,"11":2,"12":6,"16":1}}],["inf",{"2":{"12":1}}],["information",{"2":{"2":1,"6":1,"12":1}}],["info",{"2":{"1":2,"12":6}}],["initial",{"2":{"11":1}}],["involves",{"2":{"9":1}}],["invalid",{"2":{"7":1}}],["inner",{"2":{"6":1,"12":1}}],["index",{"2":{"12":1}}],["independent",{"2":{"12":1}}],["independently",{"2":{"12":1}}],["industry",{"2":{"9":1}}],["indice",{"2":{"12":1}}],["indices",{"2":{"12":6}}],["indicate",{"2":{"12":2}}],["indicates",{"2":{"7":2}}],["individuals",{"2":{"6":1}}],["ind",{"2":{"3":1,"12":2}}],["inc",{"2":{"12":6}}],["increment",{"2":{"12":3}}],["incremental",{"2":{"1":1}}],["increase",{"2":{"3":1}}],["incsert",{"2":{"3":1}}],["include",{"2":{"9":1}}],["includes",{"2":{"2":2}}],["inclusive",{"2":{"2":3}}],["instance",{"2":{"12":2,"16":1}}],["instead",{"2":{"1":1,"2":2,"12":1,"16":1}}],["insert",{"2":{"3":1,"12":3}}],["insertion",{"2":{"1":1,"3":1}}],["introduce",{"2":{"12":1}}],["intend",{"2":{"12":1}}],["intensional",{"2":{"7":1}}],["intension",{"2":{"7":2}}],["integer",{"2":{"9":1}}],["interfacing",{"0":{"15":1}}],["interface",{"2":{"1":1,"3":2,"4":1,"9":3,"15":1,"16":1}}],["interfaced",{"2":{"0":1}}],["interdiction",{"2":{"12":2}}],["intersect",{"2":{"4":1}}],["intersections",{"2":{"4":1}}],["intersection",{"2":{"3":1}}],["interval",{"2":{"4":6}}],["intervals",{"2":{"4":10}}],["internals",{"2":{"4":1}}],["internally",{"2":{"2":1}}],["internal",{"2":{"2":2,"3":1,"4":1,"12":4}}],["interpretable",{"2":{"2":1}}],["into",{"2":{"2":4,"4":1,"6":1,"12":1,"16":1}}],["int",{"2":{"1":6,"2":8,"4":1,"12":30}}],["in",{"2":{"1":16,"2":22,"3":6,"4":19,"6":3,"7":3,"8":1,"9":7,"11":3,"12":16}}],["round",{"2":{"12":1}}],["routing",{"2":{"10":1}}],["r",{"2":{"4":2}}],["ranges",{"2":{"4":1}}],["rangedomain",{"2":{"4":5}}],["range",{"2":{"4":3}}],["randomly",{"2":{"4":1,"12":1}}],["random",{"2":{"4":2,"12":2}}],["rand",{"2":{"4":13,"12":2}}],["rawoptimizerattribute",{"2":{"1":2}}],["right",{"2":{"2":15}}],["runtime",{"2":{"12":1}}],["run",{"2":{"1":1,"6":1,"12":5}}],["replace",{"2":{"12":1}}],["repositories",{"2":{"9":1}}],["remote",{"2":{"12":2}}],["remotely",{"2":{"12":1}}],["ref",{"2":{"12":6}}],["resume",{"2":{"12":1}}],["result",{"2":{"2":18}}],["restart",{"2":{"12":6}}],["restricting",{"2":{"12":2}}],["restriction",{"2":{"7":2}}],["restricted",{"2":{"12":4}}],["research",{"0":{"10":1},"2":{"9":1,"10":1}}],["re",{"2":{"7":1,"12":1}}],["required",{"2":{"4":1,"15":1,"16":1}}],["requirements",{"2":{"3":2}}],["reinforcement",{"2":{"4":1,"9":1}}],["rev",{"2":{"2":4}}],["regularization",{"2":{"2":2}}],["reach",{"2":{"2":1}}],["real",{"2":{"1":2,"4":6,"7":1}}],["relatively",{"2":{"2":1,"12":1}}],["related",{"2":{"0":1,"6":1}}],["reduced",{"2":{"4":1}}],["reduce",{"2":{"2":3,"10":1}}],["recommended",{"2":{"1":1,"12":1}}],["returns",{"2":{"3":2,"4":3,"12":1}}],["return",{"2":{"1":2,"2":23,"3":3,"4":10,"6":4,"7":6,"12":21}}],["few",{"2":{"15":1}}],["fetch",{"2":{"12":1}}],["feasible",{"2":{"11":1}}],["f2",{"2":{"12":2}}],["framework",{"2":{"9":1}}],["from",{"2":{"2":2,"4":3,"6":1,"7":1,"10":1,"12":17,"16":1}}],["find",{"2":{"11":5,"12":2}}],["finding",{"2":{"9":1,"10":1,"11":2}}],["fields",{"2":{"7":1}}],["first",{"2":{"6":1,"12":1}}],["file",{"2":{"2":7}}],["future",{"2":{"4":1}}],["func",{"2":{"12":6}}],["funcs",{"2":{"2":2}}],["functions",{"2":{"2":3}}],["function",{"2":{"1":14,"2":22,"3":4,"4":1,"6":4,"7":8,"12":16,"16":2}}],["faster",{"2":{"12":1}}],["fake",{"2":{"4":1}}],["fakeautomaton",{"2":{"4":5}}],["fa",{"2":{"4":3}}],["fallback",{"2":{"4":4}}],["false",{"2":{"2":2,"3":3,"4":5,"7":1,"12":2}}],["floor",{"2":{"4":1}}],["float64",{"2":{"1":1,"12":5}}],["flexible",{"2":{"2":2,"4":2}}],["fold",{"2":{"9":1}}],["following",{"2":{"2":3,"4":1,"7":1,"12":1,"16":1}}],["follows",{"2":{"1":2}}],["focuses",{"2":{"9":1,"10":2}}],["forwarded",{"2":{"12":1}}],["formal",{"2":{"12":1}}],["format",{"2":{"4":1,"16":1}}],["formated",{"2":{"2":1}}],["formatted",{"2":{"2":1}}],["for",{"2":{"1":4,"2":6,"3":3,"4":15,"5":1,"6":8,"7":3,"9":5,"10":1,"11":3,"12":18,"13":1,"14":1,"16":5}}],["f",{"2":{"1":20,"2":10,"3":3,"7":3,"12":7}}],["3",{"2":{"1":2,"4":4,"12":1}}],["≠",{"2":{"1":2}}],["|",{"2":{"1":4}}],["|x",{"2":{"1":4}}],["28",{"2":{"12":1}}],["225",{"2":{"2":1}}],["2009",{"2":{"7":1}}],["200",{"2":{"2":2,"6":1}}],["2",{"2":{"1":2,"4":2,"12":1}}],["123",{"2":{"4":1}}],["12",{"2":{"4":1}}],["10^6",{"2":{"4":1}}],["10000",{"2":{"12":1}}],["1000",{"2":{"4":1}}],["100",{"2":{"2":2,"4":2,"12":1}}],["10",{"2":{"2":2,"9":1,"12":2}}],["1",{"2":{"1":2,"2":2,"3":2,"4":6,"12":4,"16":2}}],["42",{"2":{"4":3}}],["4",{"2":{"1":4,"4":1,"12":1}}],["verbose",{"2":{"12":4}}],["verbosity",{"2":{"12":1}}],["very",{"2":{"10":1}}],["vectors",{"2":{"2":3}}],["vectorofvariables",{"2":{"1":1}}],["vector",{"2":{"1":2,"2":23,"3":1,"4":6,"12":1,"16":2}}],["vs",{"0":{"10":1}}],["viable",{"2":{"2":6}}],["vi",{"2":{"1":1}}],["vov",{"2":{"1":2}}],["v",{"2":{"1":4,"2":3,"12":3}}],["valid",{"2":{"4":1,"10":2,"16":5}}],["vals",{"2":{"2":8,"3":1}}],["val",{"2":{"2":20,"3":3,"4":1,"12":8}}],["value",{"2":{"1":6,"2":5,"4":10,"7":3,"12":20,"16":1}}],["values",{"2":{"1":6,"4":3,"7":2,"12":11}}],["var",{"2":{"12":12}}],["variety",{"2":{"11":1}}],["various",{"2":{"4":1,"11":1}}],["variableinfo",{"2":{"1":1}}],["variable",{"2":{"1":4,"2":2,"12":40}}],["variables",{"2":{"1":5,"2":6,"7":1,"9":1,"12":26,"16":2}}],["vars=dictionary",{"2":{"12":1}}],["vars",{"2":{"1":2,"2":6,"3":1,"12":24}}],["lst",{"2":{"12":5}}],["lt",{"2":{"3":2,"4":6,"12":3}}],["loop",{"2":{"12":8}}],["log",{"2":{"12":1}}],["loggingextra",{"2":{"12":1}}],["logging",{"2":{"12":1}}],["loss",{"2":{"6":2}}],["low",{"2":{"4":1,"9":1}}],["lowest",{"2":{"4":1}}],["lower",{"2":{"2":1}}],["localsearchsolvers",{"0":{"12":1},"2":{"6":1,"9":1,"12":139}}],["local",{"0":{"11":1},"2":{"1":2,"2":5,"6":1,"11":1,"12":7}}],["l",{"2":{"2":12}}],["launch",{"2":{"12":1}}],["last",{"2":{"12":1}}],["large",{"2":{"10":1,"11":1}}],["lazy",{"2":{"2":2}}],["lang",{"2":{"2":3}}],["language=",{"2":{"2":1}}],["language",{"2":{"2":6,"3":1}}],["lang=",{"2":{"2":1}}],["layered",{"2":{"2":1}}],["layers",{"2":{"2":8}}],["layer",{"2":{"2":41,"6":4}}],["level",{"2":{"9":2,"12":9}}],["leadsolvers",{"2":{"12":3}}],["leadsolver",{"2":{"12":1}}],["least",{"2":{"6":2}}],["learn",{"2":{"2":6,"6":5,"16":1}}],["learning",{"2":{"2":3,"4":1,"6":1,"9":1}}],["learned",{"2":{"2":1,"6":1}}],["left",{"2":{"2":15,"7":1}}],["length",{"2":{"2":6,"4":10,"7":7,"12":12}}],["lesser",{"2":{"2":8}}],["less",{"2":{"1":2}}],["lessthanparam",{"2":{"1":2}}],["linear",{"2":{"16":3}}],["links",{"2":{"0":1,"12":1}}],["list",{"2":{"3":1,"4":2,"7":2,"12":11}}],["littledict",{"2":{"2":1}}],["limited",{"2":{"4":1}}],["limit",{"2":{"1":1,"2":2,"4":7,"12":10}}],["data",{"2":{"12":1}}],["datatype",{"2":{"12":1}}],["dataframe",{"2":{"6":1}}],["df",{"2":{"6":2}}],["ds",{"2":{"6":2}}],["d₂",{"2":{"4":2}}],["d₁",{"2":{"4":2}}],["d1",{"2":{"4":2}}],["d5",{"2":{"4":1}}],["d4",{"2":{"4":1}}],["d3",{"2":{"4":1}}],["d2",{"2":{"4":3}}],["draw",{"2":{"4":1,"12":5}}],["dynamic",{"2":{"4":2,"12":11}}],["d",{"2":{"3":1,"4":49,"6":2,"12":9}}],["during",{"2":{"2":1}}],["do",{"2":{"2":1}}],["domains",{"2":{"2":6,"4":22,"6":2,"12":3}}],["domain",{"2":{"2":3,"4":30,"6":3,"9":1,"12":20,"16":4}}],["dom",{"2":{"2":8,"6":2}}],["does",{"2":{"1":1}}],["docstring",{"2":{"1":26,"12":29}}],["documentation",{"2":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"12":1,"13":1,"14":1,"16":1}}],["debinarize",{"2":{"16":1}}],["debugging",{"2":{"12":1}}],["decrement",{"2":{"12":1}}],["decrease",{"2":{"12":2}}],["decay",{"2":{"12":3}}],["decisions",{"2":{"10":1}}],["decision",{"2":{"3":3}}],["deepcopy",{"2":{"12":1}}],["delta",{"2":{"12":6}}],["delete",{"2":{"4":4,"7":1,"12":13}}],["describe",{"2":{"12":3}}],["description",{"2":{"1":36,"2":1,"12":10}}],["descent",{"2":{"6":1}}],["density",{"2":{"4":1}}],["denotes",{"2":{"2":2}}],["depends",{"2":{"4":1,"12":1}}],["deterministic",{"2":{"3":1}}],["determined",{"2":{"12":1}}],["determine",{"2":{"2":1}}],["define",{"2":{"2":1,"7":1}}],["defines",{"2":{"2":1,"4":1}}],["defined",{"2":{"1":2,"2":2,"4":2,"6":2,"7":4,"12":1}}],["defaults",{"2":{"3":2,"6":2}}],["default",{"2":{"2":2,"4":2,"6":4,"7":1,"12":2,"16":2}}],["dict",{"2":{"7":1}}],["dictionaryview",{"2":{"12":1}}],["dictionary",{"2":{"3":1,"7":2,"12":6}}],["diagram",{"2":{"3":1}}],["diagrams",{"2":{"3":2}}],["different",{"2":{"7":1,"10":1,"12":1}}],["difference",{"2":{"2":10,"3":1,"4":1}}],["diff",{"2":{"2":4}}],["dim",{"2":{"1":12,"3":1,"12":4}}],["dimension",{"2":{"1":6,"12":1}}],["dispatch",{"2":{"6":1,"12":2}}],["discretedomain",{"2":{"4":6}}],["discrete",{"2":{"4":5,"6":1,"12":1}}],["discreteset",{"2":{"1":3}}],["dist",{"2":{"12":1}}],["distributed",{"2":{"12":1}}],["distance",{"2":{"2":3,"4":2,"12":1}}],["distdifferent",{"2":{"1":2}}],["x2",{"2":{"12":2}}],["x1",{"2":{"12":2}}],["xcsp",{"2":{"7":1}}],["xcsp3",{"2":{"3":1,"7":1}}],["x``or",{"2":{"6":1}}],["x̅",{"2":{"6":4}}],["xto",{"2":{"2":1}}],["x3c",{"2":{"1":29,"2":2,"3":3,"4":26,"6":1,"12":91}}],["x",{"2":{"1":31,"2":168,"3":4,"4":7,"6":33,"7":7,"9":2,"12":68,"16":8}}],["mts",{"2":{"12":7}}],["mixed",{"2":{"9":1}}],["mincut",{"2":{"12":2}}],["minkowski",{"2":{"2":1}}],["minus",{"2":{"2":24}}],["minusequalparam",{"2":{"1":2}}],["minimum",{"2":{"3":1}}],["minimal",{"2":{"2":2,"3":2,"12":3}}],["minimization",{"2":{"1":1}}],["min",{"2":{"1":1}}],["m",{"2":{"3":2,"12":139}}],["mdd",{"2":{"3":5}}],["mdash",{"2":{"1":45,"2":77,"3":15,"4":41,"6":28,"7":10,"12":142,"16":7}}],["means",{"2":{"7":2}}],["measurement",{"2":{"12":1}}],["measure",{"2":{"2":2}}],["merge",{"2":{"4":2,"12":1}}],["metastrategist",{"0":{"13":1},"2":{"13":1}}],["metasolver",{"2":{"12":4}}],["metadata",{"2":{"9":1}}],["metric=hamming",{"2":{"2":1,"6":1}}],["metric",{"2":{"2":8,"6":6}}],["methods",{"2":{"2":2,"4":2,"12":3}}],["method",{"2":{"1":14,"2":86,"3":10,"4":38,"6":26,"7":7,"12":128,"15":1,"16":6}}],["mutable",{"2":{"12":2}}],["mutually",{"2":{"2":4,"6":1}}],["much",{"2":{"11":1}}],["multithreading",{"2":{"12":1}}],["multithreaded",{"2":{"12":1}}],["multiplication",{"2":{"3":1}}],["multivalued",{"2":{"3":3}}],["must",{"2":{"1":1,"4":2,"10":1}}],["may",{"2":{"11":1}}],["making",{"2":{"11":1}}],["makes",{"2":{"9":1}}],["make",{"2":{"6":3,"9":1,"10":1,"12":1}}],["made",{"2":{"7":1}}],["manages",{"2":{"12":1}}],["manage",{"2":{"12":1}}],["managed",{"2":{"12":1}}],["manufacturing",{"2":{"10":1}}],["many",{"2":{"3":1}}],["manhattan",{"2":{"2":1}}],["mainsolver",{"2":{"12":7}}],["main",{"2":{"2":1,"12":5}}],["mainly",{"2":{"1":1}}],["map",{"2":{"2":1}}],["matrix",{"2":{"6":2,"16":2}}],["matrices",{"2":{"6":1,"16":1}}],["mathematical",{"2":{"10":2,"11":1}}],["maths",{"2":{"2":1}}],["mathoptinterface",{"2":{"1":12}}],["matter",{"2":{"1":1}}],["maximum",{"2":{"2":1,"3":1,"4":1,"12":6}}],["max",{"2":{"1":1,"2":3,"4":2,"12":10}}],["macro",{"2":{"1":1}}],["most",{"2":{"16":1}}],["move",{"2":{"12":3}}],["more",{"2":{"2":1}}],["moisumequalparam",{"2":{"1":2}}],["moisequentialtasks",{"2":{"1":1}}],["moipredicate",{"2":{"1":2}}],["moiordered",{"2":{"1":1}}],["moiminusequalparam",{"2":{"1":2}}],["moilessthanparam",{"2":{"1":2}}],["moierror",{"2":{"1":5}}],["moieq",{"2":{"1":1}}],["moidistdifferent",{"2":{"1":1}}],["moialwaystrue",{"2":{"1":1}}],["moiallequalparam",{"2":{"1":2}}],["moiallequal",{"2":{"1":1}}],["moialldifferent",{"2":{"1":1}}],["moi",{"2":{"1":22}}],["modeled",{"2":{"12":1}}],["models",{"2":{"9":2,"10":2}}],["modeling",{"2":{"9":1}}],["model",{"2":{"1":25,"12":75}}],["jacop",{"2":{"9":1}}],["jump",{"2":{"1":6,"9":1,"12":1}}],["juliabinarize",{"2":{"16":1}}],["juliabase",{"2":{"1":2,"2":1,"3":3,"4":16}}],["juliax",{"2":{"12":1}}],["juliaxcsp",{"2":{"7":1}}],["juliavar",{"2":{"12":1}}],["juliavariable",{"2":{"12":3}}],["juliausual",{"2":{"7":2}}],["juliaqubo",{"2":{"6":1,"16":2}}],["juliaqubogradientoptimizer",{"2":{"6":1}}],["juliapost",{"2":{"12":1}}],["juliaparams",{"2":{"7":1}}],["juliaparameter",{"2":{"6":1}}],["juliapreliminaries",{"2":{"6":1}}],["juliapredict",{"2":{"6":1}}],["juliapredicate",{"2":{"1":1}}],["juliano",{"2":{"6":1}}],["julianbits",{"2":{"2":2}}],["juliato",{"2":{"4":1}}],["juliatrain",{"2":{"6":2,"16":1}}],["juliatransformation",{"2":{"2":1}}],["juliatr",{"2":{"2":19}}],["juliageneralstate",{"2":{"12":1}}],["juliagenerate",{"2":{"2":3,"4":1,"6":1}}],["juliaget",{"2":{"4":1,"12":12}}],["juliad",{"2":{"12":1}}],["juliadist",{"2":{"12":1}}],["juliadiscretedomain",{"2":{"4":1}}],["juliadiscreteset",{"2":{"1":1}}],["juliadraw",{"2":{"12":1}}],["juliadebinarize",{"2":{"16":1}}],["juliadescribe",{"2":{"12":1}}],["juliadelete",{"2":{"12":2}}],["juliad1",{"2":{"4":1}}],["juliadomain",{"2":{"4":6,"6":1,"12":1}}],["juliarangedomain",{"2":{"4":1}}],["juliaremote",{"2":{"12":2}}],["juliaregularization",{"2":{"2":1}}],["juliareduce",{"2":{"2":1}}],["juliafake",{"2":{"4":1}}],["juliafakeautomaton",{"2":{"4":1}}],["juliafunctions",{"2":{"2":1}}],["juliaδ",{"2":{"3":1,"6":1}}],["juliao",{"2":{"12":1}}],["juliaoptions",{"2":{"12":1}}],["juliaoptimize",{"2":{"6":1}}],["juliaoptimizer",{"2":{"1":2}}],["juliaobjective",{"2":{"12":4}}],["juliaoversample",{"2":{"3":1}}],["juliaweigths",{"2":{"2":3}}],["juliamodel",{"2":{"12":1}}],["juliamoi",{"2":{"1":11}}],["juliamoisumequalparam",{"2":{"1":1}}],["juliamoisequentialtasks",{"2":{"1":1}}],["juliamoipredicate",{"2":{"1":1}}],["juliamoiordered",{"2":{"1":1}}],["juliamoiminusequalparam",{"2":{"1":1}}],["juliamoilessthanparam",{"2":{"1":1}}],["juliamoierror",{"2":{"1":1}}],["juliamoieq",{"2":{"1":1}}],["juliamoidistdifferent",{"2":{"1":1}}],["juliamoialwaystrue",{"2":{"1":1}}],["juliamoiallequalparam",{"2":{"1":1}}],["juliamoiallequal",{"2":{"1":1}}],["juliamoialldifferent",{"2":{"1":1}}],["juliamts",{"2":{"12":1}}],["juliamutually",{"2":{"6":1}}],["juliamerge",{"2":{"4":1}}],["juliamdd",{"2":{"3":1}}],["juliaminkowski",{"2":{"2":1}}],["juliamax",{"2":{"12":1}}],["juliamainsolver",{"2":{"12":1}}],["juliamake",{"2":{"6":3}}],["juliamap",{"2":{"2":1}}],["juliamanhattan",{"2":{"2":1}}],["juliaintersect",{"2":{"4":1}}],["juliaintervals",{"2":{"4":1}}],["juliaincsert",{"2":{"3":1}}],["juliais",{"2":{"2":1,"12":2,"16":1}}],["juliaicnlocalsearchoptimizer",{"2":{"6":1}}],["juliaicngeneticoptimizer",{"2":{"6":1}}],["juliaicnconfig",{"2":{"6":1}}],["juliaicn",{"2":{"2":1,"6":1}}],["juliahamming",{"2":{"2":1}}],["juliaempty",{"2":{"12":2}}],["juliaemptydomain",{"2":{"4":1}}],["juliaextract",{"2":{"3":1}}],["juliaexploresettings",{"2":{"4":1}}],["juliaexplore",{"2":{"2":1,"4":1}}],["juliaexclu",{"2":{"2":1}}],["juliaerror",{"2":{"1":1,"7":1}}],["juliaconcept",{"2":{"7":1}}],["juliacontinuousdomain",{"2":{"4":1}}],["juliaconstriction",{"2":{"12":1}}],["juliaconstraints",{"0":{"9":1},"1":{"10":1,"11":1},"2":{"9":6}}],["juliaconstraint",{"2":{"7":1,"12":3}}],["juliaconstraintcommons",{"2":{"4":1}}],["juliaconst",{"2":{"3":2,"6":2}}],["juliacompose",{"2":{"2":2}}],["juliacompositionalnetworks",{"2":{"6":2}}],["juliacomposition",{"2":{"2":3}}],["juliacomparison",{"2":{"2":1}}],["juliacode",{"2":{"2":1}}],["juliaco",{"2":{"2":9}}],["juliaadd",{"2":{"4":1,"12":2}}],["juliaat",{"2":{"3":1}}],["juliaaccept",{"2":{"3":1}}],["juliaautomaton",{"2":{"3":2}}],["juliaabstractoptimizer",{"2":{"16":1}}],["juliaabstractsolver",{"2":{"12":1}}],["juliaabstractdomain",{"2":{"4":1}}],["juliaabstractmultivalueddecisiondiagram",{"2":{"3":1}}],["juliaabstractautomaton",{"2":{"3":1}}],["juliaas",{"2":{"2":2}}],["juliaargs",{"2":{"7":1}}],["juliaarithmetic",{"2":{"2":1}}],["juliaar",{"2":{"2":2}}],["juliaaggregation",{"2":{"2":1}}],["juliaag",{"2":{"2":2}}],["julialoss",{"2":{"6":1}}],["julialeadsolver",{"2":{"12":1}}],["julialearn",{"2":{"2":1}}],["julialength",{"2":{"2":1,"12":5}}],["julialazy",{"2":{"2":2}}],["julialayers",{"2":{"2":1}}],["julialayer",{"2":{"2":1}}],["juliastop",{"2":{"12":1}}],["juliastatus",{"2":{"12":1}}],["juliastruct",{"2":{"2":1,"6":1}}],["juliaspecialize",{"2":{"12":2}}],["juliasolve",{"2":{"12":2}}],["juliasolution",{"2":{"12":1}}],["juliasymmetries",{"2":{"7":1}}],["juliasymbols",{"2":{"2":1}}],["juliasymbol",{"2":{"2":1}}],["juliashrink",{"2":{"7":1}}],["juliashow",{"2":{"2":2}}],["juliasub",{"2":{"6":1}}],["juliasetdomain",{"2":{"4":1}}],["juliaselected",{"2":{"2":1}}],["juliascalarfunction",{"2":{"1":1}}],["juliajump",{"2":{"1":1}}],["julia",{"2":{"1":14,"2":6,"3":2,"4":2,"6":1,"7":1,"8":1,"9":8,"12":81}}],["jl",{"0":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"12":1,"13":1,"14":1,"16":1},"2":{"0":2,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":2,"9":8,"12":2,"13":1,"14":1,"16":1}}],["up",{"2":{"12":1}}],["understanding",{"2":{"10":1}}],["unless",{"2":{"7":1}}],["unordered",{"2":{"4":1}}],["until",{"2":{"3":1}}],["unrolled",{"2":{"2":1}}],["union",{"2":{"1":2,"3":4,"4":3,"12":69}}],["unique",{"2":{"1":1}}],["using",{"2":{"6":1,"9":1}}],["usually",{"2":{"7":1,"12":1}}],["usual",{"2":{"3":5,"7":4}}],["user",{"2":{"12":2}}],["useful",{"2":{"11":2,"12":1}}],["uses",{"2":{"6":1,"10":2,"11":2}}],["use",{"2":{"1":1,"2":1,"4":1,"11":2,"12":2}}],["used",{"2":{"1":2,"2":2,"3":3,"4":1,"6":2,"10":1,"12":1,"16":1}}],["us",{"2":{"1":1}}],["usage",{"2":{"0":1}}],["good",{"2":{"11":1}}],["goal",{"2":{"9":1}}],["gt",{"2":{"9":1}}],["guide",{"2":{"8":1}}],["graph",{"2":{"12":1}}],["gradient",{"2":{"6":1}}],["greater",{"2":{"2":8}}],["g",{"2":{"2":12}}],["give",{"2":{"2":1}}],["given",{"2":{"1":8,"2":6,"3":1,"6":6,"7":1,"16":2}}],["genetic",{"2":{"2":4,"6":3}}],["generalstate",{"2":{"12":2}}],["general",{"2":{"12":1}}],["generation",{"2":{"2":2}}],["generates",{"2":{"2":2,"4":1}}],["generated",{"2":{"2":18}}],["generate",{"2":{"2":13,"4":2,"6":2}}],["generic",{"2":{"1":1,"7":1,"9":1,"12":2}}],["getting",{"0":{"8":1}}],["get",{"2":{"1":2,"4":1,"12":17}}],["global",{"2":{"1":5,"2":5,"6":2}}],["objs=dictionary",{"2":{"12":1}}],["objs",{"2":{"12":7}}],["objectives",{"2":{"12":10}}],["objective",{"2":{"1":4,"12":24}}],["own",{"2":{"12":1}}],["other",{"2":{"9":1,"10":1,"11":2,"12":2}}],["others",{"2":{"9":1}}],["otherwise",{"2":{"2":8,"3":1,"4":1,"7":2,"12":1}}],["ouput",{"2":{"6":1}}],["outputs",{"2":{"7":1}}],["output",{"2":{"2":2}}],["o",{"2":{"6":1,"12":16}}],["organizations",{"2":{"10":1}}],["org",{"2":{"7":1}}],["or",{"2":{"2":5,"3":2,"4":2,"7":2,"9":2,"10":4,"11":2,"12":6,"16":1}}],["order",{"2":{"1":2}}],["ordered",{"2":{"1":3,"2":2,"12":1}}],["op",{"2":{"2":1,"3":1}}],["operational",{"0":{"10":1},"2":{"10":1}}],["operation",{"2":{"2":3,"6":2}}],["operations",{"2":{"2":18,"6":3}}],["optmizers",{"2":{"6":1}}],["opt",{"2":{"1":1}}],["optimizing",{"2":{"10":1,"12":7}}],["optimization",{"2":{"10":2,"12":2}}],["optimize",{"2":{"1":3,"2":1,"6":11,"10":1}}],["optimizers",{"2":{"6":1}}],["optimizer",{"2":{"1":17,"6":6,"9":1,"12":3}}],["optimisation",{"2":{"9":1}}],["optionally",{"2":{"7":2}}],["optional",{"2":{"2":8,"4":1,"6":1,"7":1,"12":2,"16":1}}],["options",{"2":{"1":4,"6":2,"12":32}}],["oversampling",{"2":{"6":1}}],["oversample",{"2":{"3":2}}],["over",{"2":{"1":1,"2":1,"3":1,"4":1,"6":1,"7":2,"12":1}}],["often",{"2":{"10":1}}],["of",{"2":{"1":16,"2":91,"3":7,"4":31,"6":14,"7":14,"9":7,"10":2,"11":4,"12":78,"16":3}}],["one",{"2":{"2":6,"6":2,"12":3,"16":5}}],["only",{"2":{"1":2,"2":4,"12":1,"16":1}}],["on",{"2":{"0":1,"1":2,"3":2,"4":3,"6":3,"7":1,"9":1,"10":3,"12":2,"16":1}}],["epoch",{"2":{"12":1}}],["evaluated",{"2":{"12":1}}],["evaluation",{"2":{"6":1}}],["evolves",{"2":{"12":1}}],["especially",{"2":{"11":1}}],["efficiency",{"2":{"10":1}}],["efficient",{"2":{"2":1}}],["efficiently",{"2":{"1":1}}],["easy",{"2":{"9":1,"15":1}}],["each",{"2":{"2":1,"4":1,"7":1,"12":1}}],["ecosystem",{"2":{"9":1}}],["element",{"2":{"6":2,"12":1}}],["elements",{"2":{"2":16,"3":1,"4":1}}],["eltype",{"2":{"4":3,"6":2}}],["e",{"2":{"2":1,"12":1}}],["either",{"2":{"2":3,"4":1,"9":1}}],["euclidian",{"2":{"2":6}}],["emptydomain",{"2":{"4":2}}],["empty",{"2":{"1":4,"6":2,"7":1,"12":11}}],["ensure",{"2":{"16":1}}],["ensuring",{"2":{"1":9,"6":3}}],["entry",{"2":{"12":1}}],["enabled",{"2":{"12":1}}],["encapsulate",{"2":{"12":2}}],["encapsuler",{"2":{"4":1}}],["encoding",{"2":{"16":5}}],["encode",{"2":{"6":1}}],["encompass",{"2":{"7":1}}],["enough",{"2":{"4":1}}],["end``",{"2":{"12":1}}],["end",{"2":{"1":6,"3":2,"12":4}}],["err",{"2":{"1":3}}],["error",{"2":{"1":4,"2":1,"6":1,"7":10,"12":4}}],["equivalent",{"2":{"4":1}}],["equality",{"2":{"1":1}}],["equal",{"2":{"1":3,"2":4}}],["eq",{"2":{"1":2,"2":16}}],["exact",{"2":{"11":4}}],["examples",{"2":{"0":1}}],["existing",{"2":{"9":1,"10":1}}],["externally",{"2":{"12":1}}],["extend",{"2":{"4":2,"15":1}}],["extends",{"2":{"3":3,"4":4,"6":3}}],["extended",{"2":{"2":19}}],["extension",{"0":{"0":1},"2":{"0":1}}],["extrema",{"2":{"3":2,"6":1,"12":3}}],["extracts",{"2":{"3":1}}],["extract",{"2":{"3":1}}],["exclu",{"2":{"2":3}}],["exclusive",{"2":{"2":8,"6":3}}],["exploration",{"2":{"4":3}}],["exploresettings",{"2":{"4":1}}],["explored",{"2":{"2":1}}],["explore",{"2":{"2":3,"4":4}}],["expansion",{"2":{"2":1}}],["expected",{"2":{"2":1,"7":2}}],["export",{"2":{"2":1,"12":1}}],["express",{"2":{"1":1}}],["cut",{"2":{"12":1}}],["current",{"2":{"2":2,"12":1}}],["currently",{"2":{"1":1,"4":1}}],["clear",{"2":{"11":1}}],["csps",{"2":{"9":1}}],["cplex",{"2":{"9":1}}],["cp",{"2":{"9":9,"10":4}}],["choose",{"2":{"12":1}}],["chains",{"2":{"10":1}}],["changes",{"2":{"4":2,"11":1}}],["chuffed",{"2":{"9":1}}],["check",{"2":{"2":1,"7":1,"12":10,"16":1}}],["c",{"2":{"2":8,"7":14,"12":31}}],["capacited",{"2":{"12":1}}],["capacity",{"2":{"12":1}}],["called",{"2":{"2":1,"12":2}}],["can",{"2":{"1":2,"2":3,"4":1,"7":1,"11":1,"12":1,"16":1}}],["created",{"2":{"12":1}}],["create",{"2":{"1":1,"2":1}}],["cover",{"2":{"15":1}}],["cosntraints",{"2":{"12":1}}],["cosntriction",{"2":{"12":1}}],["cost",{"2":{"12":19}}],["costs",{"2":{"10":1,"12":20}}],["cops",{"2":{"9":1}}],["copy",{"2":{"1":5}}],["core",{"2":{"3":1,"7":1}}],["code",{"2":{"2":5}}],["co",{"2":{"2":9}}],["counter",{"2":{"3":2,"12":1}}],["count",{"2":{"2":68}}],["combinatorial",{"2":{"10":1}}],["common",{"2":{"9":1}}],["complex",{"2":{"10":2,"11":1}}],["completely",{"2":{"2":1}}],["complete",{"2":{"2":4,"4":2}}],["components",{"2":{"2":2}}],["composed",{"2":{"2":2,"4":1}}],["compose",{"2":{"2":12}}],["compositions",{"2":{"2":1}}],["compositional",{"2":{"2":1}}],["compositionalnetworks",{"0":{"2":1},"2":{"2":76,"6":3}}],["composition",{"2":{"2":24}}],["comparison",{"2":{"2":6}}],["computes",{"2":{"12":1}}],["computed",{"2":{"2":17,"7":1}}],["compute",{"2":{"1":1,"2":3,"3":1,"4":1,"6":1,"12":17,"16":1}}],["come",{"2":{"1":1}}],["collections",{"2":{"3":1}}],["collection",{"2":{"1":2,"2":3,"3":1,"4":3,"6":3,"9":1,"12":5}}],["cons=dictionary",{"2":{"12":1}}],["considered",{"2":{"12":1}}],["cons",{"2":{"12":31}}],["constant",{"2":{"3":1,"7":2}}],["constriction",{"2":{"12":4}}],["constrained",{"2":{"12":2}}],["constrains",{"2":{"12":1}}],["constraintprogrammingextensions",{"2":{"9":1}}],["constraintlearning",{"0":{"6":1},"2":{"6":27}}],["constraintmodels",{"0":{"5":1},"2":{"5":1,"9":1}}],["constraintdomains",{"0":{"4":1},"2":{"4":26,"9":1}}],["constraintsolver",{"2":{"9":1}}],["constraints",{"0":{"7":1},"2":{"3":4,"6":1,"7":14,"9":4,"10":3,"11":2,"12":20,"16":1}}],["constraintcommons",{"0":{"3":1},"2":{"3":13,"4":2}}],["constraint",{"0":{"10":1,"11":1},"2":{"1":29,"2":6,"3":4,"4":2,"6":4,"7":19,"8":1,"9":5,"10":1,"11":5,"12":33,"16":1}}],["construct",{"2":{"2":2,"3":1,"4":4,"12":3}}],["constructor",{"2":{"1":1,"6":3,"12":1}}],["conditions",{"2":{"10":1,"12":1}}],["concerned",{"2":{"10":2}}],["concept",{"2":{"1":5,"2":6,"4":3,"7":9}}],["connecting",{"2":{"3":1}}],["connector",{"2":{"3":1}}],["contraints",{"2":{"12":2}}],["contrast",{"2":{"11":1}}],["context",{"2":{"4":1}}],["contiuous",{"2":{"4":1}}],["continuousdomain",{"2":{"4":2}}],["continuous",{"2":{"4":3}}],["contiguous",{"2":{"2":8}}],["containing",{"2":{"12":1}}],["contains",{"2":{"2":1,"7":2}}],["container",{"2":{"1":1,"2":1}}],["convert",{"2":{"2":3,"4":4}}],["configurations",{"2":{"3":1,"4":2,"6":1,"12":1}}],["configuration",{"2":{"1":1,"2":2,"6":4,"12":3}}],["cbls",{"0":{"1":1},"2":{"1":31,"6":1,"9":3,"11":3,"12":1}}],["nature",{"2":{"4":1}}],["name",{"2":{"2":6,"7":7,"12":8}}],["name=",{"2":{"2":1}}],["nbits",{"2":{"2":2}}],["nbsp",{"2":{"1":45,"2":77,"3":15,"4":41,"6":28,"7":10,"12":142,"16":7}}],["n",{"2":{"2":4,"16":3}}],["neighbours",{"2":{"12":2}}],["neighbourhood",{"2":{"12":2}}],["never",{"2":{"12":1}}],["necessary",{"2":{"12":3}}],["needs",{"2":{"2":1,"4":1,"7":1}}],["networks",{"2":{"10":1}}],["network",{"2":{"2":1}}],["new",{"2":{"1":6,"7":1,"9":1,"12":2}}],["nvars",{"2":{"2":12}}],["numbers",{"2":{"2":2}}],["number",{"2":{"1":6,"2":28,"4":7,"6":2,"7":2,"12":12,"16":3}}],["no",{"2":{"2":2,"6":1,"7":1}}],["normalized",{"2":{"2":1}}],["norm",{"2":{"2":2}}],["not",{"2":{"1":1,"2":2,"4":1,"12":1,"16":1}}],["note",{"2":{"1":1,"7":1}}],["notebooks",{"2":{"0":1}}],["nothing",{"2":{"1":2,"2":4,"3":4,"4":1,"6":2,"7":4}}],["non",{"2":{"4":2,"6":4,"12":1}}],["none",{"2":{"1":6,"16":1}}],["nonnegative",{"2":{"1":1}}],["tasks",{"2":{"12":1}}],["tabu",{"2":{"12":46}}],["take",{"2":{"11":1}}],["targeted",{"2":{"2":1,"4":1,"12":3}}],["typically",{"2":{"10":1}}],["typemax",{"2":{"12":1}}],["types",{"2":{"12":8}}],["typeof",{"2":{"1":6}}],["type",{"2":{"1":32,"2":3,"3":4,"4":13,"6":7,"7":1,"11":2,"12":17,"16":2}}],["tbw",{"2":{"6":4}}],["tuple",{"2":{"4":5}}],["try",{"2":{"11":1}}],["tries",{"2":{"11":1}}],["tr",{"2":{"2":58}}],["transform",{"2":{"16":1}}],["transformations",{"2":{"2":3}}],["transformation",{"2":{"2":5}}],["transportation",{"2":{"10":1}}],["train",{"2":{"6":2,"16":3}}],["training",{"2":{"2":1,"6":7}}],["true",{"2":{"1":2,"2":2,"3":5,"4":4,"6":1,"7":1,"12":3}}],["timestamps",{"2":{"12":1}}],["time",{"2":{"1":1,"2":1,"11":1,"12":27}}],["timelimitsec",{"2":{"1":1}}],["temporary",{"2":{"12":1}}],["techniques",{"2":{"10":2,"11":2}}],["test",{"2":{"6":2}}],["testing",{"2":{"1":1,"6":1}}],["terminationstatuscode",{"2":{"1":1}}],["t",{"2":{"1":12,"3":2,"4":15,"12":7}}],["two",{"2":{"1":1,"4":3,"9":1}}],["threads",{"2":{"12":8}}],["through",{"2":{"2":3,"6":2}}],["th",{"2":{"2":1}}],["than",{"2":{"1":2,"2":8}}],["that",{"2":{"1":11,"2":11,"4":7,"6":3,"7":7,"9":3,"10":4,"11":5,"12":10,"16":1}}],["these",{"2":{"11":1}}],["they",{"2":{"9":1,"10":1,"11":1}}],["them",{"2":{"9":1,"12":1}}],["then",{"2":{"4":1,"12":2}}],["the",{"2":{"1":17,"2":133,"3":12,"4":33,"6":17,"7":21,"9":4,"10":3,"11":3,"12":120,"15":1,"16":2}}],["this",{"2":{"0":1,"4":1,"12":3,"15":1}}],["too",{"2":{"11":1}}],["todo",{"2":{"7":1,"12":1}}],["together",{"2":{"7":1}}],["towards",{"2":{"2":1}}],["total",{"2":{"2":1}}],["to",{"2":{"0":1,"1":10,"2":59,"3":3,"4":15,"6":12,"7":5,"8":2,"9":3,"10":5,"11":9,"12":49,"15":1,"16":3}}],["swap",{"2":{"12":2}}],["switch",{"2":{"2":1}}],["smaller",{"2":{"11":1}}],["small",{"2":{"11":1}}],["scheduling",{"2":{"10":1}}],["scalars",{"2":{"2":1}}],["scalar",{"2":{"2":3}}],["scalarfunction",{"2":{"1":3}}],["shrink",{"2":{"7":1}}],["should",{"2":{"2":2,"12":3}}],["show",{"2":{"2":4}}],["say",{"2":{"16":1}}],["sat",{"2":{"12":3}}],["satisfaction",{"2":{"9":1,"12":3}}],["satisfying",{"2":{"12":2}}],["satisfy",{"2":{"9":1,"10":1,"11":1}}],["satisfied",{"2":{"7":1,"10":1,"12":1}}],["satisfies",{"2":{"7":1,"11":1}}],["same",{"2":{"4":1}}],["samplings",{"2":{"4":2}}],["sltns",{"2":{"6":2}}],["sqrt",{"2":{"4":1}}],["s2",{"2":{"3":1}}],["s1",{"2":{"3":1}}],["s",{"2":{"3":6,"4":2,"7":2,"12":109}}],["split",{"2":{"6":1}}],["span",{"2":{"4":1}}],["space",{"2":{"2":4,"4":4,"7":1,"10":1,"12":1}}],["specialize",{"2":{"12":10}}],["specialized",{"2":{"2":2,"12":10}}],["specializing",{"2":{"12":1}}],["specified",{"2":{"4":1}}],["specifications",{"2":{"7":1}}],["specifically",{"2":{"4":1}}],["specific",{"2":{"2":1,"6":2}}],["systems",{"2":{"10":2}}],["symmetry",{"2":{"7":1}}],["symmetries",{"2":{"7":5}}],["symᵢ",{"2":{"7":1}}],["sym₂",{"2":{"7":1}}],["sym₁",{"2":{"7":1}}],["symbol",{"2":{"2":1,"3":2,"7":1,"12":3,"16":1}}],["symbols",{"2":{"2":9,"3":2}}],["syntax",{"2":{"1":2,"12":1}}],["since",{"2":{"12":1}}],["single",{"2":{"2":3}}],["simple",{"2":{"4":1,"7":1}}],["simply",{"2":{"4":1,"7":1}}],["similar",{"2":{"4":1}}],["sig",{"2":{"2":17}}],["signature",{"2":{"2":2}}],["silent",{"2":{"1":1,"12":1}}],["size",{"2":{"1":2,"2":16,"4":12,"6":7,"12":4}}],["sudoku",{"2":{"12":1}}],["such",{"2":{"7":1,"9":1,"10":2,"12":4}}],["subs",{"2":{"12":3}}],["subsolvers",{"2":{"12":4}}],["subsolver",{"2":{"12":6}}],["subset",{"2":{"1":1}}],["sub",{"2":{"6":1,"12":1}}],["supply",{"2":{"10":1}}],["supplies",{"2":{"9":1}}],["supports",{"2":{"1":3}}],["supertype",{"2":{"4":2}}],["super",{"2":{"4":1}}],["summary",{"2":{"11":1}}],["sum",{"2":{"1":1,"2":5,"4":2,"16":3}}],["sumequalparam",{"2":{"1":2}}],["see",{"2":{"12":1}}],["serie",{"2":{"12":1}}],["select",{"2":{"12":4}}],["selected",{"2":{"2":8,"6":2,"12":1}}],["sec",{"2":{"12":1}}],["seconds",{"2":{"12":1}}],["section",{"2":{"0":1,"15":1}}],["seaperl",{"2":{"9":1}}],["searching",{"2":{"7":1}}],["search",{"0":{"11":1},"2":{"2":11,"4":9,"10":1,"11":3,"12":1}}],["several",{"2":{"9":1}}],["sequence",{"2":{"7":1}}],["sequentialtasks",{"2":{"1":2}}],["separates",{"2":{"2":1}}],["sep",{"2":{"2":2}}],["setting",{"2":{"12":1}}],["settings",{"2":{"4":1,"12":1}}],["sets",{"2":{"6":3}}],["setdomain",{"2":{"4":5}}],["set",{"2":{"1":16,"2":4,"3":3,"4":4,"6":11,"10":1,"12":22,"16":2}}],["stop",{"2":{"12":5}}],["storing",{"2":{"9":1}}],["stores",{"2":{"4":1}}],["store",{"2":{"2":3,"4":1,"12":3}}],["step",{"2":{"12":3}}],["stamp",{"2":{"12":4}}],["static",{"2":{"12":1}}],["statistical",{"2":{"10":1}}],["state",{"2":{"12":36}}],["status",{"2":{"1":1,"12":4}}],["standard",{"2":{"9":1}}],["started",{"0":{"8":1}}],["starts",{"2":{"7":1,"11":1,"12":2}}],["starting",{"2":{"7":1,"8":1,"12":1}}],["stucture",{"2":{"7":1}}],["str",{"2":{"12":1}}],["struct",{"2":{"4":1,"12":4}}],["structure",{"2":{"2":1,"3":2,"4":3,"6":1,"11":1,"12":5}}],["string",{"2":{"2":3,"4":4,"7":1,"12":1}}],["strictly",{"2":{"2":2,"7":3}}],["straightforward",{"2":{"1":1}}],["so",{"2":{"10":1}}],["solving",{"2":{"10":4,"12":4}}],["solve",{"2":{"9":2,"10":1,"12":3}}],["solvers",{"2":{"9":10,"11":3,"12":2}}],["solvername",{"2":{"1":1}}],["solver",{"2":{"1":4,"6":1,"9":1,"11":2,"12":29}}],["sol",{"2":{"4":1}}],["sols",{"2":{"2":1,"6":4}}],["solution",{"2":{"2":1,"10":1,"11":4,"12":4}}],["solutions",{"2":{"2":4,"4":10,"6":8,"9":1,"10":2,"11":4,"12":9}}],["soon",{"2":{"1":1,"8":1}}],["source",{"2":{"1":45,"2":77,"3":15,"4":41,"6":28,"7":10,"12":142,"16":7}}],["something",{"2":{"7":1}}],["some",{"2":{"0":1,"1":1,"2":1,"6":1,"9":1}}],["pure",{"2":{"9":3}}],["purely",{"2":{"9":1}}],["purposes",{"2":{"6":1}}],["purpose",{"2":{"1":1}}],["please",{"2":{"7":1}}],["per",{"2":{"16":1}}],["performance",{"2":{"12":1}}],["perform",{"2":{"12":1}}],["perfchecker",{"0":{"14":1,"15":1},"2":{"0":1,"14":1,"15":1}}],["penalty",{"2":{"6":9}}],["pôpulation",{"2":{"6":1}}],["pseudo",{"2":{"4":1}}],["pool",{"2":{"12":1}}],["point",{"2":{"4":2}}],["points",{"2":{"4":5}}],["pop",{"2":{"6":2}}],["population",{"2":{"2":2,"6":2}}],["popsize=100",{"2":{"6":1}}],["popsize=200",{"2":{"2":1}}],["popsize",{"2":{"2":4}}],["post",{"2":{"12":1}}],["positive",{"2":{"2":11,"7":4}}],["possible",{"2":{"1":1,"7":1,"10":1,"12":2}}],["packages",{"2":{"3":2,"9":4}}],["patternfolds",{"2":{"4":1}}],["pattern",{"2":{"2":1}}],["path",{"2":{"2":5,"12":5}}],["pair",{"2":{"2":1,"3":1,"4":1,"6":3}}],["paradigm",{"2":{"10":1}}],["params",{"2":{"7":1}}],["param=nothing",{"2":{"2":1}}],["paramater",{"2":{"2":1}}],["parametric",{"2":{"2":2,"6":1,"7":1}}],["parameters",{"2":{"3":9,"4":4,"6":5,"7":3}}],["parameter",{"2":{"1":4,"2":4,"4":2,"6":1,"16":1}}],["param",{"2":{"1":24,"2":87,"4":4,"7":4}}],["part",{"2":{"4":1,"7":1,"9":1}}],["partially",{"2":{"2":1}}],["partial",{"2":{"2":2,"4":1,"12":1}}],["phase",{"2":{"2":1}}],["p",{"2":{"1":1,"2":1,"7":3}}],["printing",{"2":{"12":2}}],["print",{"2":{"12":8}}],["pretty",{"2":{"12":2}}],["preferences",{"2":{"7":1}}],["precision",{"2":{"6":1}}],["preliminaries",{"2":{"6":2}}],["predict",{"2":{"6":1}}],["predictions",{"2":{"6":1}}],["prediction",{"2":{"6":1}}],["predicate",{"2":{"1":2,"2":1,"7":2}}],["problem",{"2":{"10":2,"11":1,"12":3}}],["problems",{"2":{"9":4,"10":3,"11":6,"12":1}}],["programming",{"0":{"10":1},"2":{"8":1,"9":3,"10":2,"11":4}}],["processes",{"2":{"10":1}}],["process",{"2":{"4":1,"6":1,"10":1,"12":3}}],["properly",{"2":{"4":1}}],["proportional",{"2":{"2":1}}],["produce",{"2":{"2":1}}],["product",{"2":{"2":1}}],["prod",{"2":{"2":2}}],["provided",{"2":{"2":17}}],["provide",{"2":{"1":1,"9":1}}],["provides",{"2":{"0":1,"9":1}}],["bariable",{"2":{"12":1}}],["basic",{"2":{"6":1,"16":1}}],["base",{"2":{"1":2,"2":2,"3":5,"4":23,"12":4,"16":2}}],["based",{"0":{"11":1},"2":{"0":1,"1":2,"3":3,"4":1,"6":2,"7":1,"11":1,"16":1}}],["b",{"2":{"4":9}}],["binary",{"2":{"16":1}}],["binarize",{"2":{"16":2}}],["binarized",{"2":{"16":1}}],["binarization",{"2":{"6":2,"16":4}}],["bias",{"2":{"2":3}}],["bit",{"2":{"2":1,"16":1}}],["bits",{"2":{"2":3}}],["bitvector",{"2":{"2":5}}],["both",{"2":{"3":1,"4":1,"7":2,"10":1}}],["bounds",{"2":{"4":1}}],["bounded",{"2":{"2":1}}],["bounding",{"2":{"2":4}}],["bool",{"2":{"1":2,"3":1,"4":4,"12":4}}],["boolean",{"2":{"1":1,"3":1,"7":1}}],["by",{"2":{"2":7,"3":3,"4":2,"6":4,"11":1,"12":10}}],["build",{"2":{"1":2,"9":1,"15":1}}],["belongs",{"2":{"12":2}}],["better",{"2":{"10":1,"12":2}}],["between",{"2":{"1":1,"2":4,"3":2,"4":3,"12":1}}],["best",{"2":{"6":1,"12":1}}],["beware",{"2":{"4":1}}],["behavior",{"2":{"4":1}}],["be",{"2":{"1":2,"2":7,"4":3,"6":2,"7":3,"8":1,"10":2,"11":2,"12":3,"16":1}}],["begin",{"2":{"1":14,"12":23}}],["been",{"2":{"0":1,"12":7}}],["benchmarking",{"2":{"0":1}}],["benchmarktools",{"0":{"0":1},"2":{"0":1}}],["approach",{"2":{"10":2}}],["apply",{"2":{"7":3}}],["application",{"2":{"2":1}}],["applies",{"2":{"1":1,"2":1}}],["applied",{"2":{"1":1,"2":1,"12":2}}],["about",{"2":{"9":1,"12":1}}],["absolute",{"2":{"2":2}}],["abs",{"2":{"2":4,"7":1}}],["abstractrange",{"2":{"4":2}}],["abstractdomain",{"2":{"4":17,"12":6}}],["abstractdictionary",{"2":{"3":1}}],["abstractdict",{"2":{"3":1}}],["abstractstring",{"2":{"12":2}}],["abstractstring=",{"2":{"3":1}}],["abstractstate",{"2":{"12":1}}],["abstractsolver",{"2":{"12":70}}],["abstractscalarset",{"2":{"1":1}}],["abstractscalarfunction",{"2":{"1":1}}],["abstractmultivalueddecisiondiagram",{"2":{"3":3}}],["abstract",{"2":{"3":2,"4":3,"6":2,"12":2,"16":1}}],["abstractautomaton",{"2":{"3":3,"4":1}}],["abstractvector",{"2":{"2":19,"12":1}}],["abstractvectorset",{"2":{"1":15}}],["abstractoptimizer",{"2":{"1":1,"6":2,"16":2}}],["avoid",{"2":{"7":1,"12":1}}],["available",{"2":{"7":1,"9":1,"12":1}}],["among",{"2":{"6":1,"12":1}}],["adjusted",{"2":{"4":1}}],["adding",{"2":{"7":1}}],["addtionally",{"2":{"4":1}}],["add",{"2":{"1":6,"4":3,"7":1,"12":20}}],["added",{"2":{"1":1}}],["automatic",{"2":{"4":1}}],["automatically",{"2":{"4":1}}],["automaton",{"2":{"3":7,"4":3}}],["automata",{"2":{"3":1}}],["affect",{"2":{"2":1}}],["accepted",{"2":{"7":2}}],["accepts",{"2":{"3":3}}],["accept",{"2":{"3":4,"4":3}}],["access",{"2":{"2":4,"4":1,"12":20}}],["action",{"2":{"2":2}}],["actual",{"2":{"2":1}}],["aggregate",{"2":{"2":1}}],["aggregations",{"2":{"2":1}}],["aggregation",{"2":{"2":4}}],["ag",{"2":{"2":2}}],["attribution",{"2":{"12":1}}],["attributed",{"2":{"12":6}}],["attribute",{"2":{"12":2}}],["attached",{"2":{"12":1}}],["at",{"2":{"2":2,"3":1,"6":2,"7":1,"12":1,"16":1}}],["assert",{"2":{"2":1}}],["assignements",{"2":{"7":1}}],["assignment",{"2":{"7":1}}],["assign",{"2":{"2":1,"12":1}}],["assuming",{"2":{"1":1}}],["as",{"2":{"1":2,"2":5,"3":1,"4":3,"6":1,"7":4,"9":1,"10":2,"12":6,"15":1}}],["arxiv",{"2":{"7":1}}],["arrangement",{"2":{"6":1}}],["argmax",{"2":{"12":3}}],["args",{"2":{"4":5,"6":3,"7":1,"16":1}}],["argument",{"2":{"1":1}}],["arguments",{"2":{"1":13,"2":4,"4":2,"7":3,"12":8}}],["ar",{"2":{"2":2}}],["arithmetic",{"2":{"2":5}}],["are",{"2":{"1":4,"2":21,"4":3,"7":2,"9":2,"10":2,"12":2}}],["analyze",{"2":{"10":1}}],["analysis",{"2":{"10":1}}],["angles",{"2":{"10":1}}],["another",{"2":{"9":1}}],["anonymous",{"2":{"2":1}}],["any",{"2":{"1":1,"2":2,"3":1,"4":3,"7":4,"12":1,"16":1}}],["an",{"2":{"1":2,"2":25,"3":4,"4":7,"6":7,"7":2,"11":3,"12":11,"15":1,"16":1}}],["and",{"2":{"0":1,"1":2,"2":19,"3":4,"4":5,"6":10,"7":6,"9":3,"10":8,"11":3,"12":11,"16":2}}],["alone",{"2":{"7":1}}],["algorithms",{"2":{"11":1}}],["algorithm",{"2":{"2":4,"6":3,"11":2}}],["also",{"2":{"2":2}}],["already",{"2":{"2":2,"6":1,"12":1}}],["always",{"2":{"1":1}}],["alwaystrue",{"2":{"1":2}}],["allocation",{"2":{"10":1}}],["allocations",{"2":{"2":17}}],["allequalparam",{"2":{"1":2}}],["allequal",{"2":{"1":2}}],["all",{"2":{"1":7,"2":5,"3":1,"4":1,"7":1,"9":1,"11":1,"12":4}}],["alldifferent",{"2":{"1":2}}],["a",{"2":{"0":1,"1":17,"2":55,"3":15,"4":34,"6":23,"7":18,"8":1,"9":7,"10":4,"11":7,"12":51,"16":10}}]],"serializationVersion":2}';export{e as default}; diff --git a/dev/assets/chunks/@localSearchIndexroot.SauVQhyg.js b/dev/assets/chunks/@localSearchIndexroot.SauVQhyg.js new file mode 100644 index 0000000..23487ef --- /dev/null +++ b/dev/assets/chunks/@localSearchIndexroot.SauVQhyg.js @@ -0,0 +1 @@ +const e='{"documentCount":18,"nextId":18,"documentIds":{"0":"/dev/constraints/constraint_commons#ConstraintCommons.jl","1":"/dev/constraints/constraint_domains#ConstraintDomains.jl","2":"/dev/constraints/constraint_models#ConstraintModels.jl","3":"/dev/constraints/constraints#Constraints.jl","4":"/dev/cp/intro#Getting-Started","5":"/dev/cp/opt#The-World-of-Optimization","6":"/dev/index-old#JuliaConstraints","7":"/dev/index-old#Operational-Research-vs-Constraint-Programming","8":"/dev/index-old#Constraint-Based-Local-Search","9":"/dev/learning/compositional_networks#CompositionalNetworks.jl","10":"/dev/learning/constraint_learning#ConstraintLearning.jl","11":"/dev/learning/qubo_constraints#QUBOConstraints.jl","12":"/dev/meta/meta_strategist#MetaStrategist.jl","13":"/dev/perf/benchmark_ext#BenchmarkTools-Extension","14":"/dev/perf/perf_checker#PerfChecker.jl","15":"/dev/perf/perf_interface#Interfacing-PerfChecker","16":"/dev/solvers/cbls#CBLS.jl","17":"/dev/solvers/local_search_solvers#LocalSearchSolvers.jl"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,167],"1":[2,1,308],"2":[2,1,5],"3":[2,1,181],"4":[2,1,11],"5":[4,1,11],"6":[1,1,122],"7":[5,2,93],"8":[4,2,80],"9":[2,1,403],"10":[2,1,232],"11":[2,1,106],"12":[2,1,5],"13":[2,1,26],"14":[2,1,5],"15":[2,1,18],"16":[2,1,251],"17":[2,1,506]},"averageFieldLength":[2.3333333333333335,1.1111111111111112,140.55555555555554],"storedFields":{"0":{"title":"ConstraintCommons.jl","titles":[]},"1":{"title":"ConstraintDomains.jl","titles":[]},"2":{"title":"ConstraintModels.jl","titles":[]},"3":{"title":"Constraints.jl","titles":[]},"4":{"title":"Getting Started","titles":[]},"5":{"title":"The World of Optimization","titles":[]},"6":{"title":"JuliaConstraints","titles":[null]},"7":{"title":"Operational Research vs Constraint Programming","titles":[null,"JuliaConstraints"]},"8":{"title":"Constraint-Based Local Search","titles":[null,"JuliaConstraints"]},"9":{"title":"CompositionalNetworks.jl","titles":[]},"10":{"title":"ConstraintLearning.jl","titles":[]},"11":{"title":"QUBOConstraints.jl","titles":[]},"12":{"title":"MetaStrategist.jl","titles":[]},"13":{"title":"BenchmarkTools Extension","titles":[]},"14":{"title":"PerfChecker.jl","titles":[]},"15":{"title":"Interfacing PerfChecker","titles":[]},"16":{"title":"CBLS.jl","titles":[]},"17":{"title":"LocalSearchSolvers.jl","titles":[]}},"dirtCount":0,"index":[["≠",{"2":{"16":2}}],["|",{"2":{"16":4}}],["|x",{"2":{"16":4}}],["σ",{"2":{"11":2}}],["`function",{"2":{"17":1}}],["`struct",{"2":{"17":1}}],["``",{"2":{"16":6}}],["```julia",{"2":{"1":1}}],["`",{"2":{"10":1}}],["η",{"2":{"10":1}}],["q",{"2":{"10":7}}],["quboconstraints",{"0":{"11":1},"2":{"10":1,"11":8}}],["qubooptimizer",{"2":{"10":2}}],["qubo",{"2":{"10":4,"11":5}}],["qubogradientoptimizer",{"2":{"10":4}}],["quot",{"2":{"6":4}}],["+",{"2":{"6":1,"9":7}}],["yes",{"2":{"17":1}}],["yet",{"2":{"1":2}}],["y",{"2":{"6":1,"10":4,"17":2}}],["you",{"2":{"6":1}}],["heuristic",{"2":{"8":2}}],["helps",{"2":{"6":1}}],["help",{"2":{"6":2,"7":1}}],["hot",{"2":{"11":3}}],["hold",{"2":{"10":1}}],["holds",{"2":{"6":1}}],["hosts",{"2":{"6":1}}],["high",{"2":{"6":1}}],["highest",{"2":{"1":1,"17":1}}],["https",{"2":{"3":1}}],["hamming",{"2":{"9":4,"10":3}}],["have",{"2":{"8":1,"9":4}}],["hand",{"2":{"3":1,"7":1}}],["handled",{"2":{"1":1}}],["handle",{"2":{"1":1,"17":2}}],["half",{"2":{"1":1}}],["has",{"2":{"0":1,"9":1,"11":1,"13":1,"17":10}}],["∪",{"2":{"1":1}}],["9",{"2":{"1":1}}],["86",{"2":{"1":1}}],["89",{"2":{"1":2,"17":1}}],["42",{"2":{"1":3}}],["4",{"2":{"1":1,"16":4,"17":1}}],["3",{"2":{"1":4,"16":2,"17":1}}],["28",{"2":{"17":1}}],["225",{"2":{"9":1}}],["200",{"2":{"9":2,"10":1}}],["2009",{"2":{"3":1}}],["2",{"2":{"1":2,"16":2,"17":1}}],["69",{"2":{"1":1}}],["56",{"2":{"17":1}}],["53",{"2":{"1":1}}],["5",{"2":{"1":3,"6":1,"16":6,"17":1}}],["keyword",{"2":{"17":1}}],["keywords",{"2":{"9":1}}],["keep",{"2":{"11":1}}],["known",{"2":{"9":2,"17":1}}],["k",{"2":{"9":2,"17":1}}],["kind=",{"2":{"17":1}}],["kind",{"2":{"1":2,"17":6}}],["kargs",{"2":{"0":1,"10":6}}],["00514",{"2":{"3":1}}],["0",{"2":{"1":7,"3":4,"9":16,"16":6,"17":9}}],["≤",{"2":{"1":4}}],["graph",{"2":{"17":1}}],["gradient",{"2":{"10":1}}],["greater",{"2":{"9":8}}],["g",{"2":{"9":12}}],["give",{"2":{"9":1}}],["given",{"2":{"0":1,"3":1,"9":6,"10":6,"11":2,"16":8}}],["global",{"2":{"9":5,"10":2,"16":5}}],["good",{"2":{"8":1}}],["goal",{"2":{"6":1}}],["gt",{"2":{"6":1}}],["guidelines",{"2":{"5":1}}],["guide",{"2":{"4":1}}],["genetic",{"2":{"9":4,"10":3}}],["generalstate",{"2":{"17":2}}],["general",{"2":{"17":1}}],["generation",{"2":{"9":2}}],["generated",{"2":{"9":18}}],["generates",{"2":{"1":1,"9":2}}],["generate",{"2":{"1":2,"9":13,"10":2}}],["generic",{"2":{"3":1,"6":1,"16":1,"17":2}}],["getting",{"0":{"4":1}}],["get",{"2":{"1":1,"16":2,"17":17}}],["cut",{"2":{"17":1}}],["current",{"2":{"9":2,"17":1}}],["currently",{"2":{"1":1,"16":1}}],["created",{"2":{"17":1}}],["create",{"2":{"9":1,"16":1}}],["capacited",{"2":{"17":1}}],["capacity",{"2":{"17":1}}],["called",{"2":{"9":1,"17":2}}],["can",{"2":{"1":1,"3":1,"8":1,"9":3,"11":1,"16":2,"17":1}}],["clear",{"2":{"8":1}}],["cbls",{"0":{"16":1},"2":{"6":3,"8":3,"10":1,"16":31,"17":1}}],["csps",{"2":{"6":1}}],["cplex",{"2":{"6":1}}],["cp",{"2":{"6":9,"7":4}}],["choose",{"2":{"17":1}}],["chains",{"2":{"7":1}}],["changes",{"2":{"1":2,"8":1}}],["chuffed",{"2":{"6":1}}],["check",{"2":{"3":1,"9":1,"11":1,"17":10}}],["c",{"2":{"3":14,"9":8,"17":31}}],["cosntraints",{"2":{"17":1}}],["cosntriction",{"2":{"17":1}}],["cost",{"2":{"17":19}}],["costs",{"2":{"7":1,"17":20}}],["copy",{"2":{"16":5}}],["cops",{"2":{"6":1}}],["cover",{"2":{"15":1}}],["code",{"2":{"9":5}}],["co",{"2":{"9":9}}],["count",{"2":{"9":68}}],["counter",{"2":{"0":2,"17":1}}],["come",{"2":{"16":1}}],["combinatorial",{"2":{"7":1}}],["common",{"2":{"6":1}}],["components",{"2":{"9":2}}],["compose",{"2":{"9":12}}],["composed",{"2":{"1":1,"9":2}}],["compositions",{"2":{"9":1}}],["compositional",{"2":{"9":1}}],["compositionalnetworks",{"0":{"9":1},"2":{"9":76,"10":3}}],["composition",{"2":{"9":24}}],["complex",{"2":{"7":2,"8":1}}],["completely",{"2":{"9":1}}],["complete",{"2":{"1":2,"9":4}}],["comparison",{"2":{"5":1,"9":6}}],["computes",{"2":{"17":1}}],["computed",{"2":{"3":1,"9":17}}],["compute",{"2":{"0":1,"1":1,"9":3,"10":1,"11":1,"16":1,"17":17}}],["collections",{"2":{"0":1}}],["collection",{"2":{"0":1,"1":3,"6":1,"9":3,"10":3,"16":2,"17":5}}],["cons=dictionary",{"2":{"17":1}}],["considered",{"2":{"17":1}}],["cons",{"2":{"17":31}}],["constriction",{"2":{"17":4}}],["constrained",{"2":{"17":2}}],["constrains",{"2":{"17":1}}],["constraintlearning",{"0":{"10":1},"2":{"10":27}}],["constraintprogrammingextensions",{"2":{"6":1}}],["constraintmodels",{"0":{"2":1},"2":{"2":1,"6":1}}],["constraintdomains",{"0":{"1":1},"2":{"1":26,"6":1}}],["constraintsolver",{"2":{"6":1}}],["constraints",{"0":{"3":1},"2":{"0":4,"3":14,"6":4,"7":3,"8":2,"10":1,"11":1,"17":20}}],["constraint",{"0":{"7":1,"8":1},"2":{"0":4,"1":2,"3":19,"4":1,"6":5,"7":1,"8":5,"9":6,"10":4,"11":1,"16":29,"17":33}}],["constraintcommons",{"0":{"0":1},"2":{"0":13,"1":2}}],["constructor",{"2":{"10":3,"16":1,"17":1}}],["construct",{"2":{"0":1,"1":4,"9":2,"17":3}}],["constant",{"2":{"0":1,"3":2}}],["configuration",{"2":{"9":2,"10":4,"16":1,"17":3}}],["configurations",{"2":{"0":1,"1":2,"10":1,"17":1}}],["conditions",{"2":{"7":1,"17":1}}],["concerned",{"2":{"7":2}}],["concept",{"2":{"1":3,"3":9,"9":6,"16":5}}],["convert",{"2":{"1":4,"9":3}}],["contraints",{"2":{"17":2}}],["contrast",{"2":{"8":1}}],["containing",{"2":{"17":1}}],["container",{"2":{"9":1,"16":1}}],["contains",{"2":{"3":2,"9":1}}],["contiguous",{"2":{"9":8}}],["contiuous",{"2":{"1":1}}],["continuousdomain",{"2":{"1":2}}],["continuous",{"2":{"1":3}}],["context",{"2":{"1":1}}],["connecting",{"2":{"0":1}}],["connector",{"2":{"0":1}}],["core",{"2":{"0":1,"3":1}}],["round",{"2":{"17":1}}],["routing",{"2":{"7":1}}],["rawoptimizerattribute",{"2":{"16":2}}],["ranges",{"2":{"1":1}}],["rangedomain",{"2":{"1":5}}],["range",{"2":{"1":3}}],["randomly",{"2":{"1":1,"17":1}}],["random",{"2":{"1":2,"17":2}}],["rand",{"2":{"1":13,"17":2}}],["runtime",{"2":{"17":1}}],["run",{"2":{"10":1,"16":1,"17":5}}],["right",{"2":{"9":15}}],["r",{"2":{"1":2}}],["replace",{"2":{"17":1}}],["repositories",{"2":{"6":1}}],["remote",{"2":{"17":2}}],["remotely",{"2":{"17":1}}],["ref",{"2":{"17":6}}],["recommended",{"2":{"16":1,"17":1}}],["related",{"2":{"10":1,"13":1}}],["relatively",{"2":{"9":1,"17":1}}],["rev",{"2":{"9":4}}],["regularization",{"2":{"9":2}}],["reach",{"2":{"9":1}}],["real",{"2":{"1":6,"3":1,"16":2}}],["reduce",{"2":{"7":1,"9":3}}],["reduced",{"2":{"1":1}}],["resume",{"2":{"17":1}}],["result",{"2":{"9":18}}],["restart",{"2":{"17":6}}],["restricting",{"2":{"17":2}}],["restriction",{"2":{"3":2}}],["restricted",{"2":{"17":4}}],["research",{"0":{"7":1},"2":{"6":1,"7":1}}],["re",{"2":{"3":1,"17":1}}],["required",{"2":{"1":1,"11":1,"15":1}}],["requirements",{"2":{"0":2}}],["reinforcement",{"2":{"1":1,"6":1}}],["returns",{"2":{"0":2,"1":3,"17":1}}],["return",{"2":{"0":3,"1":10,"3":6,"9":23,"10":4,"16":2,"17":21}}],["performance",{"2":{"17":1}}],["perform",{"2":{"17":1}}],["perfchecker",{"0":{"14":1,"15":1},"2":{"13":1,"14":1,"15":1}}],["per",{"2":{"11":1}}],["penalty",{"2":{"10":9}}],["pôpulation",{"2":{"10":1}}],["purpose",{"2":{"16":1}}],["purposes",{"2":{"10":1}}],["pure",{"2":{"6":3}}],["purely",{"2":{"6":1}}],["phase",{"2":{"9":1}}],["printing",{"2":{"17":2}}],["print",{"2":{"17":8}}],["pretty",{"2":{"17":2}}],["precision",{"2":{"10":1}}],["preliminaries",{"2":{"10":2}}],["predict",{"2":{"10":1}}],["predictions",{"2":{"10":1}}],["prediction",{"2":{"10":1}}],["predicate",{"2":{"3":2,"9":1,"16":2}}],["preferences",{"2":{"3":1}}],["proportional",{"2":{"9":1}}],["properly",{"2":{"1":1}}],["produce",{"2":{"9":1}}],["product",{"2":{"9":1}}],["prod",{"2":{"9":2}}],["problem",{"2":{"7":2,"8":1,"17":3}}],["problems",{"2":{"6":4,"7":3,"8":6,"17":1}}],["provided",{"2":{"9":17}}],["provides",{"2":{"6":1,"13":1}}],["provide",{"2":{"6":1,"16":1}}],["programming",{"0":{"7":1},"2":{"4":1,"6":3,"7":2,"8":4}}],["processes",{"2":{"7":1}}],["process",{"2":{"1":1,"7":1,"10":1,"17":3}}],["please",{"2":{"3":1}}],["pool",{"2":{"17":1}}],["pop",{"2":{"10":2}}],["population",{"2":{"9":2,"10":2}}],["popsize=100",{"2":{"10":1}}],["popsize=200",{"2":{"9":1}}],["popsize",{"2":{"9":4}}],["post",{"2":{"17":1}}],["positive",{"2":{"3":4,"9":11}}],["possible",{"2":{"3":1,"7":1,"16":1,"17":2}}],["point",{"2":{"1":2}}],["points",{"2":{"1":5}}],["p",{"2":{"3":3,"9":1,"16":1}}],["pseudo",{"2":{"1":1}}],["pattern",{"2":{"9":1}}],["patternfolds",{"2":{"1":1}}],["path",{"2":{"9":5,"17":5}}],["paradigm",{"2":{"7":1}}],["param=nothing",{"2":{"9":1}}],["paramater",{"2":{"9":1}}],["params",{"2":{"3":1}}],["parametric",{"2":{"3":1,"9":2,"10":1}}],["parameter",{"2":{"1":2,"9":4,"10":1,"11":1,"16":4}}],["parameters",{"2":{"0":9,"1":4,"3":3,"10":5}}],["param",{"2":{"1":4,"3":4,"9":87,"16":24}}],["part",{"2":{"1":1,"3":1,"6":1}}],["partially",{"2":{"9":1}}],["partial",{"2":{"1":1,"9":2,"17":1}}],["packages",{"2":{"0":2,"6":4}}],["pair",{"2":{"0":1,"1":1,"9":1,"10":3}}],["δ",{"2":{"0":1,"10":1}}],["10",{"2":{"6":1,"9":2,"17":2}}],["100",{"2":{"1":2,"9":2,"17":1}}],["10000",{"2":{"17":1}}],["1000",{"2":{"1":1}}],["10^6",{"2":{"1":1}}],["123",{"2":{"1":1}}],["12",{"2":{"1":1}}],["1",{"2":{"0":2,"1":6,"9":2,"11":2,"16":2,"17":4}}],["epoch",{"2":{"17":1}}],["evaluated",{"2":{"17":1}}],["evaluation",{"2":{"10":1}}],["evolves",{"2":{"17":1}}],["err",{"2":{"16":3}}],["error",{"2":{"3":10,"9":1,"10":1,"16":4,"17":4}}],["efficiently",{"2":{"16":1}}],["efficient",{"2":{"9":1}}],["efficiency",{"2":{"7":1}}],["equality",{"2":{"16":1}}],["equal",{"2":{"9":4,"16":3}}],["equivalent",{"2":{"1":1}}],["eq",{"2":{"9":16,"16":2}}],["e",{"2":{"9":1,"17":1}}],["euclidian",{"2":{"9":6}}],["especially",{"2":{"8":1}}],["easy",{"2":{"6":1,"15":1}}],["each",{"2":{"1":1,"3":1,"9":1,"17":1}}],["ecosystem",{"2":{"6":1}}],["empty",{"2":{"3":1,"10":2,"16":4,"17":11}}],["emptydomain",{"2":{"1":2}}],["either",{"2":{"1":1,"6":1,"9":3}}],["element",{"2":{"10":2,"17":1}}],["elements",{"2":{"0":1,"1":1,"9":16}}],["eltype",{"2":{"1":3,"10":2}}],["entry",{"2":{"17":1}}],["enabled",{"2":{"17":1}}],["ensure",{"2":{"11":1}}],["ensuring",{"2":{"10":3,"16":9}}],["encapsulate",{"2":{"17":2}}],["encapsuler",{"2":{"1":1}}],["encoding",{"2":{"11":5}}],["encode",{"2":{"10":1}}],["encompass",{"2":{"3":1}}],["enough",{"2":{"1":1}}],["end``",{"2":{"17":1}}],["end",{"2":{"0":2,"16":6,"17":4}}],["examples",{"2":{"13":1}}],["exact",{"2":{"8":4}}],["exclu",{"2":{"9":3}}],["exclusive",{"2":{"9":8,"10":3}}],["existing",{"2":{"6":1,"7":1}}],["express",{"2":{"16":1}}],["expansion",{"2":{"9":1}}],["export",{"2":{"9":1,"17":1}}],["expected",{"2":{"3":2,"9":1}}],["explored",{"2":{"9":1}}],["explore",{"2":{"1":4,"9":3}}],["exploresettings",{"2":{"1":1}}],["exploration",{"2":{"1":3}}],["externally",{"2":{"17":1}}],["extension",{"0":{"13":1},"2":{"13":1}}],["extended",{"2":{"9":19}}],["extend",{"2":{"1":2,"15":1}}],["extends",{"2":{"0":3,"1":4,"10":3}}],["extrema",{"2":{"0":2,"10":1,"17":3}}],["extracts",{"2":{"0":1}}],["extract",{"2":{"0":1}}],["we",{"2":{"16":1}}],["weight",{"2":{"11":1}}],["weigthing",{"2":{"10":1}}],["weigth",{"2":{"9":1}}],["weigths",{"2":{"9":17,"10":5}}],["weigths=nothing",{"2":{"9":1}}],["weigthed",{"2":{"9":1}}],["write",{"2":{"6":1,"9":2}}],["wrappers",{"2":{"6":1}}],["wrapping",{"2":{"6":1}}],["was",{"2":{"15":1,"17":1}}],["way",{"2":{"5":1}}],["warning",{"2":{"3":1}}],["worse",{"2":{"17":3}}],["world",{"0":{"5":1}}],["works",{"2":{"3":1}}],["word",{"2":{"0":5,"1":1}}],["will",{"2":{"1":1,"3":1,"9":6,"10":1,"11":1,"13":1,"15":1,"16":2}}],["within",{"2":{"17":1}}],["without",{"2":{"9":17}}],["with",{"2":{"0":1,"3":4,"6":3,"7":3,"8":1,"9":28,"10":3,"13":1,"16":2,"17":8}}],["while",{"2":{"7":2,"8":1,"17":5}}],["which",{"2":{"1":1,"9":2}}],["whole",{"2":{"3":1,"17":1}}],["where",{"2":{"1":10,"3":1,"7":1,"8":2,"9":3,"16":2,"17":69}}],["when",{"2":{"0":2,"9":17,"10":2,"16":1,"17":2}}],["w",{"2":{"0":2,"9":2,"10":2}}],["∈",{"2":{"0":1,"1":5,"17":3}}],["nbits",{"2":{"9":2}}],["nbsp",{"2":{"0":15,"1":41,"3":10,"9":77,"10":28,"11":7,"16":45,"17":142}}],["n",{"2":{"9":4,"11":3}}],["nvars",{"2":{"9":12}}],["name=",{"2":{"9":1}}],["name",{"2":{"3":7,"9":6,"17":8}}],["nature",{"2":{"1":1}}],["neighbours",{"2":{"17":2}}],["neighbourhood",{"2":{"17":2}}],["never",{"2":{"17":1}}],["necessary",{"2":{"17":3}}],["network",{"2":{"9":1}}],["networks",{"2":{"7":1}}],["new",{"2":{"3":1,"6":1,"16":6,"17":2}}],["needs",{"2":{"1":1,"3":1,"9":1}}],["normalized",{"2":{"9":1}}],["norm",{"2":{"9":2}}],["no",{"2":{"3":1,"9":2,"10":1}}],["nonnegative",{"2":{"16":1}}],["none",{"2":{"11":1,"16":6}}],["non",{"2":{"1":2,"10":4,"17":1}}],["notebooks",{"2":{"13":1}}],["note",{"2":{"3":1,"16":1}}],["not",{"2":{"1":1,"9":2,"11":1,"16":1,"17":1}}],["nothing",{"2":{"0":4,"1":1,"3":4,"9":4,"10":2,"16":2}}],["numbers",{"2":{"9":2}}],["number",{"2":{"1":7,"3":2,"9":28,"10":2,"11":3,"16":6,"17":12}}],["vi",{"2":{"16":1}}],["viable",{"2":{"9":6}}],["vov",{"2":{"16":2}}],["v",{"2":{"9":3,"16":4,"17":3}}],["verbose",{"2":{"17":4}}],["verbosity",{"2":{"17":1}}],["very",{"2":{"7":1}}],["vectorofvariables",{"2":{"16":1}}],["vectors",{"2":{"9":3}}],["vector",{"2":{"0":1,"1":6,"9":23,"11":2,"16":2,"17":1}}],["vs",{"0":{"7":1}}],["var",{"2":{"17":12}}],["variableinfo",{"2":{"16":1}}],["variable",{"2":{"9":2,"16":4,"17":40}}],["variables",{"2":{"3":1,"6":1,"9":6,"11":2,"16":5,"17":26}}],["variety",{"2":{"8":1}}],["various",{"2":{"1":1,"8":1}}],["vars=dictionary",{"2":{"17":1}}],["vars",{"2":{"0":1,"9":6,"16":2,"17":24}}],["valid",{"2":{"1":1,"7":2,"11":5}}],["value",{"2":{"1":10,"3":3,"9":5,"11":1,"16":6,"17":20}}],["values",{"2":{"1":3,"3":2,"16":6,"17":11}}],["vals",{"2":{"0":1,"9":8}}],["val",{"2":{"0":3,"1":1,"9":20,"17":8}}],["up",{"2":{"17":1}}],["unique",{"2":{"16":1}}],["union",{"2":{"0":4,"1":3,"16":2,"17":69}}],["unrolled",{"2":{"9":1}}],["understanding",{"2":{"7":1}}],["unless",{"2":{"3":1}}],["unordered",{"2":{"1":1}}],["until",{"2":{"0":1}}],["us",{"2":{"16":1}}],["usage",{"2":{"13":1}}],["using",{"2":{"6":1,"10":1}}],["user",{"2":{"17":2}}],["useful",{"2":{"8":2,"17":1}}],["uses",{"2":{"7":2,"8":2,"10":1}}],["use",{"2":{"1":1,"8":2,"9":1,"16":1,"17":2}}],["used",{"2":{"0":3,"1":1,"7":1,"9":2,"10":2,"11":1,"16":2,"17":1}}],["usually",{"2":{"3":1,"17":1}}],["usual",{"2":{"0":5,"3":4}}],["x2",{"2":{"17":2}}],["x1",{"2":{"17":2}}],["x``or",{"2":{"10":1}}],["x̅",{"2":{"10":4}}],["xto",{"2":{"9":1}}],["xcsp",{"2":{"3":1}}],["xcsp3",{"2":{"0":1,"3":1}}],["x",{"2":{"0":4,"1":7,"3":7,"6":2,"9":168,"10":33,"11":8,"16":31,"17":68}}],["x3c",{"2":{"0":3,"1":26,"9":2,"10":1,"16":29,"17":91}}],["f2",{"2":{"17":2}}],["fetch",{"2":{"17":1}}],["few",{"2":{"15":1}}],["feasible",{"2":{"8":1}}],["framework",{"2":{"6":1}}],["from",{"2":{"1":3,"3":1,"7":1,"9":2,"10":1,"11":1,"17":17}}],["first",{"2":{"10":1,"17":1}}],["file",{"2":{"9":7}}],["find",{"2":{"8":5,"17":2}}],["finding",{"2":{"6":1,"7":1,"8":2}}],["fields",{"2":{"3":1}}],["func",{"2":{"17":6}}],["funcs",{"2":{"9":2}}],["functions",{"2":{"9":3}}],["function",{"2":{"0":4,"1":1,"3":8,"9":22,"10":4,"11":2,"16":14,"17":16}}],["future",{"2":{"1":1}}],["faster",{"2":{"17":1}}],["fake",{"2":{"1":1}}],["fakeautomaton",{"2":{"1":5}}],["fa",{"2":{"1":3}}],["fallback",{"2":{"1":4}}],["false",{"2":{"0":3,"1":5,"3":1,"9":2,"17":2}}],["float64",{"2":{"16":1,"17":5}}],["floor",{"2":{"1":1}}],["flexible",{"2":{"1":2,"9":2}}],["follows",{"2":{"16":2}}],["following",{"2":{"1":1,"3":1,"9":3,"11":1,"17":1}}],["fold",{"2":{"6":1}}],["focuses",{"2":{"6":1,"7":2}}],["forwarded",{"2":{"17":1}}],["formal",{"2":{"17":1}}],["formated",{"2":{"9":1}}],["formatted",{"2":{"9":1}}],["format",{"2":{"1":1,"11":1}}],["for",{"2":{"0":3,"1":15,"2":1,"3":3,"6":5,"7":1,"8":3,"9":6,"10":8,"11":5,"12":1,"14":1,"16":4,"17":18}}],["f",{"2":{"0":3,"3":3,"9":10,"16":20,"17":7}}],["swap",{"2":{"17":2}}],["switch",{"2":{"9":1}}],["sltns",{"2":{"10":2}}],["scalarfunction",{"2":{"16":3}}],["scalars",{"2":{"9":1}}],["scalar",{"2":{"9":3}}],["scheduling",{"2":{"7":1}}],["should",{"2":{"9":2,"17":3}}],["show",{"2":{"9":4}}],["shrink",{"2":{"3":1}}],["smaller",{"2":{"8":1}}],["small",{"2":{"8":1}}],["syntax",{"2":{"16":2,"17":1}}],["systems",{"2":{"7":2}}],["symmetry",{"2":{"3":1}}],["symmetries",{"2":{"3":5}}],["symᵢ",{"2":{"3":1}}],["sym₂",{"2":{"3":1}}],["sym₁",{"2":{"3":1}}],["symbols",{"2":{"0":2,"9":9}}],["symbol",{"2":{"0":2,"3":1,"9":1,"11":1,"17":3}}],["sat",{"2":{"17":3}}],["satisfaction",{"2":{"6":1,"17":3}}],["satisfying",{"2":{"17":2}}],["satisfy",{"2":{"6":1,"7":1,"8":1}}],["satisfied",{"2":{"3":1,"7":1,"17":1}}],["satisfies",{"2":{"3":1,"8":1}}],["say",{"2":{"11":1}}],["same",{"2":{"1":1}}],["samplings",{"2":{"1":2}}],["split",{"2":{"10":1}}],["specialize",{"2":{"17":10}}],["specialized",{"2":{"9":2,"17":10}}],["specializing",{"2":{"17":1}}],["specific",{"2":{"9":1,"10":2}}],["specifications",{"2":{"3":1}}],["specifically",{"2":{"1":1}}],["specified",{"2":{"1":1}}],["span",{"2":{"1":1}}],["space",{"2":{"1":4,"3":1,"7":1,"9":4,"17":1}}],["stop",{"2":{"17":5}}],["storing",{"2":{"6":1}}],["stores",{"2":{"1":1}}],["store",{"2":{"1":1,"9":3,"17":3}}],["step",{"2":{"17":3}}],["stamp",{"2":{"17":4}}],["static",{"2":{"17":1}}],["statistical",{"2":{"7":1}}],["state",{"2":{"17":36}}],["status",{"2":{"16":1,"17":4}}],["standard",{"2":{"6":1}}],["started",{"0":{"4":1}}],["starts",{"2":{"3":1,"8":1,"17":2}}],["starting",{"2":{"3":1,"4":1,"17":1}}],["stucture",{"2":{"3":1}}],["str",{"2":{"17":1}}],["straightforward",{"2":{"16":1}}],["strictly",{"2":{"3":3,"9":2}}],["string",{"2":{"1":4,"3":1,"9":3,"17":1}}],["struct",{"2":{"1":1,"17":4}}],["structure",{"2":{"0":2,"1":3,"8":1,"9":1,"10":1,"17":5}}],["sqrt",{"2":{"1":1}}],["so",{"2":{"7":1}}],["some",{"2":{"6":1,"9":1,"10":1,"13":1,"16":1}}],["something",{"2":{"3":1}}],["soon",{"2":{"4":1,"16":1}}],["sols",{"2":{"9":1,"10":4}}],["solution",{"2":{"7":1,"8":4,"9":1,"17":4}}],["solutions",{"2":{"1":10,"6":1,"7":2,"8":4,"9":4,"10":8,"17":9}}],["solving",{"2":{"7":4,"17":4}}],["solvername",{"2":{"16":1}}],["solver",{"2":{"6":1,"8":2,"10":1,"16":4,"17":29}}],["solvers",{"2":{"6":10,"8":3,"17":2}}],["solve",{"2":{"6":2,"7":1,"17":3}}],["sol",{"2":{"1":1}}],["source",{"2":{"0":15,"1":41,"3":10,"9":77,"10":28,"11":7,"16":45,"17":142}}],["since",{"2":{"17":1}}],["single",{"2":{"9":3}}],["silent",{"2":{"16":1,"17":1}}],["sig",{"2":{"9":17}}],["signature",{"2":{"9":2}}],["simple",{"2":{"1":1,"3":1}}],["simply",{"2":{"1":1,"3":1}}],["similar",{"2":{"1":1}}],["size",{"2":{"1":12,"9":16,"10":7,"16":2,"17":4}}],["sudoku",{"2":{"17":1}}],["subs",{"2":{"17":3}}],["subsolvers",{"2":{"17":4}}],["subsolver",{"2":{"17":6}}],["subset",{"2":{"16":1}}],["sub",{"2":{"10":1,"17":1}}],["supports",{"2":{"16":3}}],["supply",{"2":{"7":1}}],["supplies",{"2":{"6":1}}],["supertype",{"2":{"1":2}}],["super",{"2":{"1":1}}],["such",{"2":{"3":1,"6":1,"7":2,"17":4}}],["sumequalparam",{"2":{"16":2}}],["summary",{"2":{"8":1}}],["sum",{"2":{"1":2,"9":5,"11":3,"16":1}}],["see",{"2":{"17":1}}],["serie",{"2":{"17":1}}],["select",{"2":{"17":4}}],["selected",{"2":{"9":8,"10":2,"17":1}}],["sec",{"2":{"17":1}}],["seconds",{"2":{"17":1}}],["section",{"2":{"13":1,"15":1}}],["sequentialtasks",{"2":{"16":2}}],["sequence",{"2":{"3":1}}],["separates",{"2":{"9":1}}],["sep",{"2":{"9":2}}],["seaperl",{"2":{"6":1}}],["searching",{"2":{"3":1}}],["search",{"0":{"8":1},"2":{"1":9,"7":1,"8":3,"9":11,"17":1}}],["several",{"2":{"6":1}}],["setting",{"2":{"17":1}}],["settings",{"2":{"1":1,"17":1}}],["sets",{"2":{"10":3}}],["setdomain",{"2":{"1":5}}],["set",{"2":{"0":3,"1":4,"7":1,"9":4,"10":11,"11":2,"16":16,"17":22}}],["s2",{"2":{"0":1}}],["s1",{"2":{"0":1}}],["s",{"2":{"0":6,"1":2,"3":2,"17":109}}],["mts",{"2":{"17":7}}],["move",{"2":{"17":3}}],["moisumequalparam",{"2":{"16":2}}],["moisequentialtasks",{"2":{"16":1}}],["moipredicate",{"2":{"16":2}}],["moiordered",{"2":{"16":1}}],["moiminusequalparam",{"2":{"16":2}}],["moilessthanparam",{"2":{"16":2}}],["moierror",{"2":{"16":5}}],["moieq",{"2":{"16":1}}],["moidistdifferent",{"2":{"16":1}}],["moialwaystrue",{"2":{"16":1}}],["moiallequalparam",{"2":{"16":2}}],["moiallequal",{"2":{"16":1}}],["moialldifferent",{"2":{"16":1}}],["moi",{"2":{"16":22}}],["most",{"2":{"11":1}}],["more",{"2":{"9":1}}],["modeled",{"2":{"17":1}}],["model",{"2":{"16":25,"17":75}}],["models",{"2":{"6":2,"7":2}}],["modeling",{"2":{"6":1}}],["mincut",{"2":{"17":2}}],["min",{"2":{"16":1}}],["minkowski",{"2":{"9":1}}],["minusequalparam",{"2":{"16":2}}],["minus",{"2":{"9":24}}],["minimization",{"2":{"16":1}}],["minimum",{"2":{"0":1}}],["minimal",{"2":{"0":2,"9":2,"17":3}}],["mixed",{"2":{"6":1}}],["measurement",{"2":{"17":1}}],["measure",{"2":{"9":2}}],["means",{"2":{"3":2}}],["metasolver",{"2":{"17":4}}],["metastrategist",{"0":{"12":1},"2":{"12":1}}],["metadata",{"2":{"6":1}}],["metric=hamming",{"2":{"9":1,"10":1}}],["metric",{"2":{"9":8,"10":6}}],["methods",{"2":{"1":2,"9":2,"17":3}}],["method",{"2":{"0":10,"1":38,"3":7,"9":86,"10":26,"11":6,"15":1,"16":14,"17":128}}],["merge",{"2":{"1":2,"17":1}}],["mutable",{"2":{"17":2}}],["mutually",{"2":{"9":4,"10":1}}],["much",{"2":{"8":1}}],["must",{"2":{"1":2,"7":1,"16":1}}],["multithreading",{"2":{"17":1}}],["multithreaded",{"2":{"17":1}}],["multiplication",{"2":{"0":1}}],["multivalued",{"2":{"0":3}}],["macro",{"2":{"16":1}}],["matter",{"2":{"16":1}}],["matrix",{"2":{"10":2,"11":2}}],["matrices",{"2":{"10":1,"11":1}}],["mathoptinterface",{"2":{"16":12}}],["maths",{"2":{"9":1}}],["mathematical",{"2":{"7":2,"8":1}}],["mainsolver",{"2":{"17":7}}],["mainly",{"2":{"16":1}}],["main",{"2":{"9":1,"17":5}}],["map",{"2":{"9":1}}],["may",{"2":{"8":1}}],["making",{"2":{"8":1}}],["makes",{"2":{"6":1}}],["make",{"2":{"6":1,"7":1,"10":3,"17":1}}],["manages",{"2":{"17":1}}],["manage",{"2":{"17":1}}],["managed",{"2":{"17":1}}],["manhattan",{"2":{"9":1}}],["manufacturing",{"2":{"7":1}}],["many",{"2":{"0":1}}],["made",{"2":{"3":1}}],["max",{"2":{"1":2,"9":3,"16":1,"17":10}}],["maximum",{"2":{"0":1,"1":1,"9":1,"17":6}}],["m",{"2":{"0":2,"17":139}}],["mdd",{"2":{"0":5}}],["mdash",{"2":{"0":15,"1":41,"3":10,"9":77,"10":28,"11":7,"16":45,"17":142}}],["temporary",{"2":{"17":1}}],["terminationstatuscode",{"2":{"16":1}}],["testing",{"2":{"10":1,"16":1}}],["test",{"2":{"10":2}}],["techniques",{"2":{"7":2,"8":2}}],["tbw",{"2":{"10":4}}],["timestamps",{"2":{"17":1}}],["timelimitsec",{"2":{"16":1}}],["time",{"2":{"8":1,"9":1,"16":1,"17":27}}],["tasks",{"2":{"17":1}}],["tabu",{"2":{"17":46}}],["take",{"2":{"8":1}}],["targeted",{"2":{"1":1,"9":1,"17":3}}],["typically",{"2":{"7":1}}],["typemax",{"2":{"17":1}}],["types",{"2":{"17":8}}],["typeof",{"2":{"16":6}}],["type",{"2":{"0":4,"1":13,"3":1,"8":2,"9":3,"10":7,"11":2,"16":32,"17":17}}],["tr",{"2":{"9":58}}],["train",{"2":{"10":2,"11":3}}],["training",{"2":{"9":1,"10":7}}],["transform",{"2":{"11":1}}],["transformations",{"2":{"9":3}}],["transformation",{"2":{"9":5}}],["transportation",{"2":{"7":1}}],["try",{"2":{"8":1}}],["tries",{"2":{"8":1}}],["true",{"2":{"0":5,"1":4,"3":1,"9":2,"10":1,"16":2,"17":3}}],["two",{"2":{"1":3,"6":1,"16":1}}],["tuple",{"2":{"1":5}}],["threads",{"2":{"17":8}}],["through",{"2":{"9":3,"10":2}}],["than",{"2":{"9":8,"16":2}}],["that",{"2":{"1":7,"3":7,"6":3,"7":4,"8":5,"9":11,"10":3,"11":1,"16":11,"17":10}}],["th",{"2":{"9":1}}],["this",{"2":{"1":1,"13":1,"15":1,"17":3}}],["these",{"2":{"8":1}}],["they",{"2":{"6":1,"7":1,"8":1}}],["them",{"2":{"6":1,"17":1}}],["then",{"2":{"1":1,"17":2}}],["the",{"0":{"5":1},"2":{"0":12,"1":33,"3":21,"5":1,"6":4,"7":3,"8":3,"9":133,"10":17,"11":2,"15":1,"16":17,"17":120}}],["towards",{"2":{"9":1}}],["total",{"2":{"9":1}}],["too",{"2":{"8":1}}],["todo",{"2":{"3":1,"17":1}}],["together",{"2":{"3":1}}],["to",{"2":{"0":3,"1":15,"3":5,"4":2,"5":1,"6":3,"7":5,"8":9,"9":59,"10":12,"11":3,"13":1,"15":1,"16":10,"17":49}}],["t",{"2":{"0":2,"1":15,"16":12,"17":7}}],["icns",{"2":{"10":1}}],["icnlocalsearchoptimizer",{"2":{"10":3}}],["icngeneticoptimizer",{"2":{"10":4}}],["icnoptimizer",{"2":{"10":3}}],["icnconfig",{"2":{"10":4}}],["icn=icn",{"2":{"9":1}}],["icn",{"2":{"3":1,"9":35,"10":12}}],["i`",{"2":{"1":1}}],["i",{"2":{"1":11,"9":43,"17":1}}],["improving",{"2":{"17":1}}],["improvement",{"2":{"17":1}}],["improve",{"2":{"7":1,"8":1}}],["impossible",{"2":{"8":1}}],["implemented",{"2":{"6":1}}],["implement",{"2":{"1":2}}],["implementation",{"2":{"0":2}}],["immutable",{"2":{"1":1}}],["iterate",{"2":{"17":1}}],["iterations",{"2":{"17":3}}],["iteration",{"2":{"9":2,"17":8}}],["iter=100",{"2":{"9":2}}],["iter",{"2":{"9":8,"10":3,"17":1}}],["itself",{"2":{"9":1}}],["its",{"2":{"1":1,"9":3,"17":2}}],["ith",{"2":{"1":1}}],["itv",{"2":{"1":9}}],["it",{"2":{"1":1,"3":3,"6":2,"8":2,"9":3,"10":1,"11":1,"16":1,"17":6}}],["isempty",{"2":{"0":3,"1":3}}],["is",{"2":{"0":2,"1":8,"3":7,"6":5,"7":5,"8":4,"9":48,"10":5,"11":5,"16":8,"17":17}}],["iff",{"2":{"9":2}}],["if",{"2":{"0":3,"1":10,"3":3,"9":14,"10":1,"11":4,"17":14}}],["inf",{"2":{"17":1}}],["info",{"2":{"16":2,"17":6}}],["information",{"2":{"9":1,"10":1,"17":1}}],["inner",{"2":{"10":1,"17":1}}],["instance",{"2":{"11":1,"17":2}}],["instead",{"2":{"9":2,"11":1,"16":1,"17":1}}],["insertion",{"2":{"0":1,"16":1}}],["insert",{"2":{"0":1,"17":3}}],["initial",{"2":{"8":1}}],["involves",{"2":{"6":1}}],["invalid",{"2":{"3":1}}],["introduce",{"2":{"17":1}}],["intend",{"2":{"17":1}}],["intensional",{"2":{"3":1}}],["intension",{"2":{"3":2}}],["integer",{"2":{"6":1}}],["interdiction",{"2":{"17":2}}],["interfacing",{"0":{"15":1}}],["interfaced",{"2":{"13":1}}],["interface",{"2":{"0":2,"1":1,"6":3,"11":1,"15":1,"16":1}}],["interpretable",{"2":{"9":1}}],["intersect",{"2":{"1":1}}],["intersections",{"2":{"1":1}}],["intersection",{"2":{"0":1}}],["interval",{"2":{"1":6}}],["intervals",{"2":{"1":10}}],["internally",{"2":{"9":1}}],["internals",{"2":{"1":1}}],["internal",{"2":{"0":1,"1":1,"9":2,"17":4}}],["into",{"2":{"1":1,"9":4,"10":1,"11":1,"17":1}}],["int",{"2":{"1":1,"9":8,"16":6,"17":30}}],["inc",{"2":{"17":6}}],["increment",{"2":{"17":3}}],["incremental",{"2":{"16":1}}],["increase",{"2":{"0":1}}],["inclusive",{"2":{"9":3}}],["includes",{"2":{"9":2}}],["include",{"2":{"6":1}}],["incsert",{"2":{"0":1}}],["index",{"2":{"17":1}}],["independent",{"2":{"17":1}}],["independently",{"2":{"17":1}}],["indice",{"2":{"17":1}}],["indices",{"2":{"17":6}}],["indicate",{"2":{"17":2}}],["indicates",{"2":{"3":2}}],["individuals",{"2":{"10":1}}],["industry",{"2":{"6":1}}],["ind",{"2":{"0":1,"17":2}}],["in",{"2":{"0":6,"1":19,"3":3,"4":1,"6":7,"8":3,"9":22,"10":3,"16":16,"17":16}}],["identity",{"2":{"9":10}}],["id",{"2":{"0":1,"17":13}}],["among",{"2":{"10":1,"17":1}}],["affect",{"2":{"9":1}}],["action",{"2":{"9":2}}],["actual",{"2":{"9":1}}],["access",{"2":{"1":1,"9":4,"17":20}}],["accepted",{"2":{"3":2}}],["accepts",{"2":{"0":3}}],["accept",{"2":{"0":4,"1":3}}],["aggregate",{"2":{"9":1}}],["aggregations",{"2":{"9":1}}],["aggregation",{"2":{"9":4}}],["ag",{"2":{"9":2}}],["application",{"2":{"9":1}}],["applies",{"2":{"9":1,"16":1}}],["applied",{"2":{"9":1,"16":1,"17":2}}],["apply",{"2":{"3":3}}],["approach",{"2":{"7":2}}],["about",{"2":{"5":1,"6":1,"17":1}}],["absolute",{"2":{"9":2}}],["abs",{"2":{"3":1,"9":4}}],["abstractstring",{"2":{"17":2}}],["abstractstring=",{"2":{"0":1}}],["abstractstate",{"2":{"17":1}}],["abstractsolver",{"2":{"17":70}}],["abstractscalarset",{"2":{"16":1}}],["abstractscalarfunction",{"2":{"16":1}}],["abstractoptimizer",{"2":{"10":2,"11":2,"16":1}}],["abstractvectorset",{"2":{"16":15}}],["abstractvector",{"2":{"9":19,"17":1}}],["abstractrange",{"2":{"1":2}}],["abstractdomain",{"2":{"1":17,"17":6}}],["abstractdictionary",{"2":{"0":1}}],["abstractdict",{"2":{"0":1}}],["abstractmultivalueddecisiondiagram",{"2":{"0":3}}],["abstract",{"2":{"0":2,"1":3,"10":2,"11":1,"17":2}}],["abstractautomaton",{"2":{"0":3,"1":1}}],["avoid",{"2":{"3":1,"17":1}}],["available",{"2":{"3":1,"6":1,"17":1}}],["always",{"2":{"16":1}}],["alwaystrue",{"2":{"16":2}}],["also",{"2":{"9":2}}],["already",{"2":{"9":2,"10":1,"17":1}}],["algorithms",{"2":{"8":1}}],["algorithm",{"2":{"8":2,"9":4,"10":3}}],["alone",{"2":{"3":1}}],["allequalparam",{"2":{"16":2}}],["allequal",{"2":{"16":2}}],["alldifferent",{"2":{"16":2}}],["allocations",{"2":{"9":17}}],["allocation",{"2":{"7":1}}],["all",{"2":{"0":1,"1":1,"3":1,"6":1,"8":1,"9":5,"16":7,"17":4}}],["adjusted",{"2":{"1":1}}],["added",{"2":{"16":1}}],["adding",{"2":{"3":1}}],["add",{"2":{"1":3,"3":1,"16":6,"17":20}}],["addtionally",{"2":{"1":1}}],["arrangement",{"2":{"10":1}}],["ar",{"2":{"9":2}}],["arithmetic",{"2":{"9":5}}],["arxiv",{"2":{"3":1}}],["argmax",{"2":{"17":3}}],["argument",{"2":{"16":1}}],["arguments",{"2":{"1":2,"3":3,"9":4,"16":13,"17":8}}],["args",{"2":{"1":5,"3":1,"10":3,"11":1}}],["are",{"2":{"1":3,"3":2,"6":2,"7":2,"9":21,"16":4,"17":2}}],["assuming",{"2":{"16":1}}],["assert",{"2":{"9":1}}],["assign",{"2":{"9":1,"17":1}}],["assignements",{"2":{"3":1}}],["assignment",{"2":{"3":1}}],["as",{"2":{"0":1,"1":3,"3":4,"6":1,"7":2,"9":5,"10":1,"15":1,"16":2,"17":6}}],["attribution",{"2":{"17":1}}],["attributed",{"2":{"17":6}}],["attribute",{"2":{"17":2}}],["attached",{"2":{"17":1}}],["at",{"2":{"0":1,"3":1,"9":2,"10":2,"11":1,"17":1}}],["automatic",{"2":{"1":1}}],["automatically",{"2":{"1":1}}],["automaton",{"2":{"0":7,"1":3}}],["automata",{"2":{"0":1}}],["a",{"2":{"0":15,"1":34,"3":18,"4":1,"6":7,"7":4,"8":7,"9":55,"10":23,"11":10,"13":1,"16":17,"17":51}}],["anonymous",{"2":{"9":1}}],["another",{"2":{"6":1}}],["analyze",{"2":{"7":1}}],["analysis",{"2":{"7":1}}],["angles",{"2":{"7":1}}],["and",{"2":{"0":4,"1":5,"3":6,"5":1,"6":3,"7":8,"8":3,"9":19,"10":10,"11":2,"13":1,"16":2,"17":11}}],["any",{"2":{"0":1,"1":3,"3":4,"9":2,"11":1,"16":1,"17":1}}],["an",{"2":{"0":4,"1":7,"3":2,"8":3,"9":25,"10":7,"11":1,"15":1,"16":2,"17":11}}],["lst",{"2":{"17":5}}],["l",{"2":{"9":12}}],["launch",{"2":{"17":1}}],["last",{"2":{"17":1}}],["lazy",{"2":{"9":2}}],["lang",{"2":{"9":3}}],["lang=",{"2":{"9":1}}],["language=",{"2":{"9":1}}],["language",{"2":{"0":1,"9":6}}],["layered",{"2":{"9":1}}],["layers",{"2":{"9":8}}],["layer",{"2":{"9":41,"10":4}}],["large",{"2":{"7":1,"8":1}}],["loop",{"2":{"17":8}}],["log",{"2":{"17":1}}],["loggingextra",{"2":{"17":1}}],["logging",{"2":{"17":1}}],["loss",{"2":{"10":2}}],["local",{"0":{"8":1},"2":{"8":1,"9":5,"10":1,"16":2,"17":7}}],["localsearchsolvers",{"0":{"17":1},"2":{"6":1,"10":1,"17":139}}],["lower",{"2":{"9":1}}],["lowest",{"2":{"1":1}}],["low",{"2":{"1":1,"6":1}}],["less",{"2":{"16":2}}],["lessthanparam",{"2":{"16":2}}],["lesser",{"2":{"9":8}}],["leadsolvers",{"2":{"17":3}}],["leadsolver",{"2":{"17":1}}],["least",{"2":{"10":2}}],["learn",{"2":{"9":6,"10":5,"11":1}}],["learned",{"2":{"9":1,"10":1}}],["learning",{"2":{"1":1,"6":1,"9":3,"10":1}}],["level",{"2":{"6":2,"17":9}}],["left",{"2":{"3":1,"9":15}}],["length",{"2":{"1":10,"3":7,"9":6,"17":12}}],["links",{"2":{"13":1,"17":1}}],["linear",{"2":{"11":3}}],["littledict",{"2":{"9":1}}],["limited",{"2":{"1":1}}],["limit",{"2":{"1":7,"9":2,"16":1,"17":10}}],["list",{"2":{"0":1,"1":2,"3":2,"17":11}}],["lt",{"2":{"0":2,"1":6,"17":3}}],["data",{"2":{"17":1}}],["datatype",{"2":{"17":1}}],["dataframe",{"2":{"10":1}}],["df",{"2":{"10":2}}],["ds",{"2":{"10":2}}],["during",{"2":{"9":1}}],["d₂",{"2":{"1":2}}],["d₁",{"2":{"1":2}}],["d1",{"2":{"1":2}}],["d5",{"2":{"1":1}}],["d4",{"2":{"1":1}}],["d3",{"2":{"1":1}}],["d2",{"2":{"1":3}}],["draw",{"2":{"1":1,"17":5}}],["dynamic",{"2":{"1":2,"17":11}}],["does",{"2":{"16":1}}],["docstring",{"2":{"16":26,"17":29}}],["documentation",{"2":{"0":1,"1":1,"2":1,"3":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"16":1,"17":1}}],["dom",{"2":{"9":8,"10":2}}],["domains",{"2":{"1":22,"9":6,"10":2,"17":3}}],["domain",{"2":{"1":30,"6":1,"9":3,"10":3,"11":4,"17":20}}],["do",{"2":{"5":1,"9":1}}],["d",{"2":{"0":1,"1":49,"10":2,"17":9}}],["decrement",{"2":{"17":1}}],["decrease",{"2":{"17":2}}],["decay",{"2":{"17":3}}],["decisions",{"2":{"7":1}}],["decision",{"2":{"0":3}}],["deepcopy",{"2":{"17":1}}],["debugging",{"2":{"17":1}}],["debinarize",{"2":{"11":1}}],["delta",{"2":{"17":6}}],["delete",{"2":{"1":4,"3":1,"17":13}}],["describe",{"2":{"17":3}}],["description",{"2":{"9":1,"16":36,"17":10}}],["descent",{"2":{"10":1}}],["determined",{"2":{"17":1}}],["determine",{"2":{"9":1}}],["deterministic",{"2":{"0":1}}],["denotes",{"2":{"9":2}}],["density",{"2":{"1":1}}],["define",{"2":{"3":1,"9":1}}],["defines",{"2":{"1":1,"9":1}}],["defined",{"2":{"1":2,"3":4,"9":2,"10":2,"16":2,"17":1}}],["default",{"2":{"1":2,"3":1,"9":2,"10":4,"11":2,"17":2}}],["defaults",{"2":{"0":2,"10":2}}],["depends",{"2":{"1":1,"17":1}}],["diff",{"2":{"9":4}}],["different",{"2":{"3":1,"5":1,"7":1,"17":1}}],["difference",{"2":{"0":1,"1":1,"9":10}}],["dict",{"2":{"3":1}}],["dictionaryview",{"2":{"17":1}}],["dictionary",{"2":{"0":1,"3":2,"17":6}}],["dist",{"2":{"17":1}}],["distributed",{"2":{"17":1}}],["distdifferent",{"2":{"16":2}}],["distance",{"2":{"1":2,"9":3,"17":1}}],["dispatch",{"2":{"10":1,"17":2}}],["discreteset",{"2":{"16":3}}],["discretedomain",{"2":{"1":6}}],["discrete",{"2":{"1":5,"10":1,"17":1}}],["diagram",{"2":{"0":1}}],["diagrams",{"2":{"0":2}}],["dimension",{"2":{"16":6,"17":1}}],["dim",{"2":{"0":1,"16":12,"17":4}}],["bariable",{"2":{"17":1}}],["basic",{"2":{"10":1,"11":1}}],["base",{"2":{"0":5,"1":23,"9":2,"11":2,"16":2,"17":4}}],["based",{"0":{"8":1},"2":{"0":3,"1":1,"3":1,"8":1,"10":2,"11":1,"13":1,"16":2}}],["binary",{"2":{"11":1}}],["binarize",{"2":{"11":2}}],["binarized",{"2":{"11":1}}],["binarization",{"2":{"10":2,"11":4}}],["bias",{"2":{"9":3}}],["bit",{"2":{"9":1,"11":1}}],["bits",{"2":{"9":3}}],["bitvector",{"2":{"9":5}}],["build",{"2":{"6":1,"15":1,"16":2}}],["b",{"2":{"1":9}}],["belongs",{"2":{"17":2}}],["begin",{"2":{"16":14,"17":23}}],["been",{"2":{"13":1,"17":7}}],["benchmarking",{"2":{"13":1}}],["benchmarktools",{"0":{"13":1},"2":{"13":1}}],["best",{"2":{"10":1,"17":1}}],["better",{"2":{"7":1,"17":2}}],["between",{"2":{"0":2,"1":3,"9":4,"16":1,"17":1}}],["beware",{"2":{"1":1}}],["behavior",{"2":{"1":1}}],["be",{"2":{"1":3,"3":3,"4":1,"7":2,"8":2,"9":7,"10":2,"11":1,"16":2,"17":3}}],["bounded",{"2":{"9":1}}],["bounding",{"2":{"9":4}}],["bounds",{"2":{"1":1}}],["both",{"2":{"0":1,"1":1,"3":2,"7":1}}],["boolean",{"2":{"0":1,"3":1,"16":1}}],["bool",{"2":{"0":1,"1":4,"16":2,"17":4}}],["by",{"2":{"0":3,"1":2,"8":1,"9":7,"10":4,"17":10}}],["==",{"2":{"1":1,"11":1}}],["=",{"2":{"0":3,"1":20,"3":2,"6":1,"9":19,"10":12,"11":4,"16":35,"17":49}}],["objs=dictionary",{"2":{"17":1}}],["objs",{"2":{"17":7}}],["objectives",{"2":{"17":10}}],["objective",{"2":{"16":4,"17":24}}],["own",{"2":{"17":1}}],["ouput",{"2":{"10":1}}],["output",{"2":{"9":2}}],["outputs",{"2":{"3":1}}],["o",{"2":{"10":1,"17":16}}],["other",{"2":{"6":1,"7":1,"8":2,"17":2}}],["others",{"2":{"6":1}}],["otherwise",{"2":{"0":1,"1":1,"3":2,"9":8,"17":1}}],["oversampling",{"2":{"10":1}}],["oversample",{"2":{"0":2}}],["over",{"2":{"0":1,"1":1,"3":2,"9":1,"10":1,"16":1,"17":1}}],["order",{"2":{"16":2}}],["ordered",{"2":{"9":2,"16":3,"17":1}}],["organizations",{"2":{"7":1}}],["org",{"2":{"3":1}}],["or",{"2":{"0":2,"1":2,"3":2,"6":2,"7":4,"8":2,"9":5,"11":1,"17":6}}],["opt",{"2":{"16":1}}],["optmizers",{"2":{"10":1}}],["options",{"2":{"10":2,"16":4,"17":32}}],["optionally",{"2":{"3":2}}],["optional",{"2":{"1":1,"3":1,"9":8,"10":1,"11":1,"17":2}}],["optimize",{"2":{"7":1,"9":1,"10":11,"16":3}}],["optimizers",{"2":{"10":1}}],["optimizer",{"2":{"6":1,"10":6,"16":17,"17":3}}],["optimizing",{"2":{"7":1,"17":7}}],["optimization",{"0":{"5":1},"2":{"5":1,"7":2,"17":2}}],["optimisation",{"2":{"6":1}}],["operation",{"2":{"9":3,"10":2}}],["operations",{"2":{"9":18,"10":3}}],["operational",{"0":{"7":1},"2":{"7":1}}],["op",{"2":{"0":1,"9":1}}],["one",{"2":{"9":6,"10":2,"11":5,"17":3}}],["only",{"2":{"9":4,"11":1,"16":2,"17":1}}],["on",{"2":{"0":2,"1":3,"3":1,"6":1,"7":3,"10":3,"11":1,"13":1,"16":2,"17":2}}],["often",{"2":{"7":1}}],["of",{"0":{"5":1},"2":{"0":7,"1":31,"3":14,"6":7,"7":2,"8":4,"9":91,"10":14,"11":3,"16":16,"17":78}}],["jacop",{"2":{"6":1}}],["jump",{"2":{"6":1,"16":6,"17":1}}],["juliax",{"2":{"17":1}}],["juliaxcsp",{"2":{"3":1}}],["juliavar",{"2":{"17":1}}],["juliavariable",{"2":{"17":3}}],["juliajump",{"2":{"16":1}}],["juliabinarize",{"2":{"11":1}}],["juliabase",{"2":{"0":3,"1":16,"9":1,"16":2}}],["juliaqubo",{"2":{"10":1,"11":2}}],["juliaqubogradientoptimizer",{"2":{"10":1}}],["juliapost",{"2":{"17":1}}],["juliapredicate",{"2":{"16":1}}],["juliapredict",{"2":{"10":1}}],["juliapreliminaries",{"2":{"10":1}}],["juliaparameter",{"2":{"10":1}}],["juliaparams",{"2":{"3":1}}],["juliao",{"2":{"17":1}}],["juliaoptions",{"2":{"17":1}}],["juliaoptimizer",{"2":{"16":2}}],["juliaoptimize",{"2":{"10":1}}],["juliaobjective",{"2":{"17":4}}],["juliaoversample",{"2":{"0":1}}],["juliano",{"2":{"10":1}}],["julianbits",{"2":{"9":2}}],["juliaweigths",{"2":{"9":3}}],["juliatrain",{"2":{"10":2,"11":1}}],["juliatransformation",{"2":{"9":1}}],["juliatr",{"2":{"9":19}}],["juliato",{"2":{"1":1}}],["juliaremote",{"2":{"17":2}}],["juliaregularization",{"2":{"9":1}}],["juliareduce",{"2":{"9":1}}],["juliarangedomain",{"2":{"1":1}}],["juliahamming",{"2":{"9":1}}],["juliafunctions",{"2":{"9":1}}],["juliafake",{"2":{"1":1}}],["juliafakeautomaton",{"2":{"1":1}}],["julialoss",{"2":{"10":1}}],["julialeadsolver",{"2":{"17":1}}],["julialearn",{"2":{"9":1}}],["julialength",{"2":{"9":1,"17":5}}],["julialazy",{"2":{"9":2}}],["julialayers",{"2":{"9":1}}],["julialayer",{"2":{"9":1}}],["juliais",{"2":{"9":1,"11":1,"17":2}}],["juliaicnlocalsearchoptimizer",{"2":{"10":1}}],["juliaicngeneticoptimizer",{"2":{"10":1}}],["juliaicnconfig",{"2":{"10":1}}],["juliaicn",{"2":{"9":1,"10":1}}],["juliaintersect",{"2":{"1":1}}],["juliaintervals",{"2":{"1":1}}],["juliaincsert",{"2":{"0":1}}],["juliacompose",{"2":{"9":2}}],["juliacompositionalnetworks",{"2":{"10":2}}],["juliacomposition",{"2":{"9":3}}],["juliacomparison",{"2":{"9":1}}],["juliacode",{"2":{"9":1}}],["juliaco",{"2":{"9":9}}],["juliaconcept",{"2":{"3":1}}],["juliacontinuousdomain",{"2":{"1":1}}],["juliaconstriction",{"2":{"17":1}}],["juliaconstraints",{"0":{"6":1},"1":{"7":1,"8":1},"2":{"6":6}}],["juliaconstraint",{"2":{"3":1,"17":3}}],["juliaconstraintcommons",{"2":{"1":1}}],["juliaconst",{"2":{"0":2,"10":2}}],["juliastop",{"2":{"17":1}}],["juliastatus",{"2":{"17":1}}],["juliastruct",{"2":{"9":1,"10":1}}],["juliaspecialize",{"2":{"17":2}}],["juliasolve",{"2":{"17":2}}],["juliasolution",{"2":{"17":1}}],["juliascalarfunction",{"2":{"16":1}}],["juliasub",{"2":{"10":1}}],["juliasymbols",{"2":{"9":1}}],["juliasymbol",{"2":{"9":1}}],["juliasymmetries",{"2":{"3":1}}],["juliashow",{"2":{"9":2}}],["juliashrink",{"2":{"3":1}}],["juliaselected",{"2":{"9":1}}],["juliasetdomain",{"2":{"1":1}}],["juliausual",{"2":{"3":2}}],["juliamodel",{"2":{"17":1}}],["juliamoi",{"2":{"16":11}}],["juliamoisumequalparam",{"2":{"16":1}}],["juliamoisequentialtasks",{"2":{"16":1}}],["juliamoipredicate",{"2":{"16":1}}],["juliamoiordered",{"2":{"16":1}}],["juliamoiminusequalparam",{"2":{"16":1}}],["juliamoilessthanparam",{"2":{"16":1}}],["juliamoierror",{"2":{"16":1}}],["juliamoieq",{"2":{"16":1}}],["juliamoidistdifferent",{"2":{"16":1}}],["juliamoialwaystrue",{"2":{"16":1}}],["juliamoiallequalparam",{"2":{"16":1}}],["juliamoiallequal",{"2":{"16":1}}],["juliamoialldifferent",{"2":{"16":1}}],["juliamts",{"2":{"17":1}}],["juliamutually",{"2":{"10":1}}],["juliaminkowski",{"2":{"9":1}}],["juliamax",{"2":{"17":1}}],["juliamainsolver",{"2":{"17":1}}],["juliamake",{"2":{"10":3}}],["juliamap",{"2":{"9":1}}],["juliamanhattan",{"2":{"9":1}}],["juliamerge",{"2":{"1":1}}],["juliamdd",{"2":{"0":1}}],["juliageneralstate",{"2":{"17":1}}],["juliagenerate",{"2":{"1":1,"9":3,"10":1}}],["juliaget",{"2":{"1":1,"17":12}}],["juliad",{"2":{"17":1}}],["juliadist",{"2":{"17":1}}],["juliadiscreteset",{"2":{"16":1}}],["juliadiscretedomain",{"2":{"1":1}}],["juliadraw",{"2":{"17":1}}],["juliadescribe",{"2":{"17":1}}],["juliadelete",{"2":{"17":2}}],["juliadebinarize",{"2":{"11":1}}],["juliad1",{"2":{"1":1}}],["juliadomain",{"2":{"1":6,"10":1,"17":1}}],["juliaempty",{"2":{"17":2}}],["juliaemptydomain",{"2":{"1":1}}],["juliaerror",{"2":{"3":1,"16":1}}],["juliaexclu",{"2":{"9":1}}],["juliaexplore",{"2":{"1":1,"9":1}}],["juliaexploresettings",{"2":{"1":1}}],["juliaextract",{"2":{"0":1}}],["juliaδ",{"2":{"0":1,"10":1}}],["juliaas",{"2":{"9":2}}],["juliaarithmetic",{"2":{"9":1}}],["juliaar",{"2":{"9":2}}],["juliaargs",{"2":{"3":1}}],["juliaaggregation",{"2":{"9":1}}],["juliaag",{"2":{"9":2}}],["juliaadd",{"2":{"1":1,"17":2}}],["juliaat",{"2":{"0":1}}],["juliaaccept",{"2":{"0":1}}],["juliaautomaton",{"2":{"0":2}}],["juliaabstractsolver",{"2":{"17":1}}],["juliaabstractoptimizer",{"2":{"11":1}}],["juliaabstractdomain",{"2":{"1":1}}],["juliaabstractmultivalueddecisiondiagram",{"2":{"0":1}}],["juliaabstractautomaton",{"2":{"0":1}}],["julia",{"2":{"0":2,"1":2,"3":1,"4":1,"6":8,"9":6,"10":1,"16":14,"17":81}}],["jl",{"0":{"0":1,"1":1,"2":1,"3":1,"9":1,"10":1,"11":1,"12":1,"14":1,"16":1,"17":1},"2":{"0":1,"1":1,"2":1,"3":2,"6":8,"9":1,"10":1,"11":1,"12":1,"13":2,"14":1,"16":1,"17":2}}]],"serializationVersion":2}';export{e as default}; diff --git a/dev/assets/chunks/VPLocalSearchBox.CjVzh6Wt.js b/dev/assets/chunks/VPLocalSearchBox.B7daTfN2.js similarity index 99% rename from dev/assets/chunks/VPLocalSearchBox.CjVzh6Wt.js rename to dev/assets/chunks/VPLocalSearchBox.B7daTfN2.js index 28ed6dc..b22c6b7 100644 --- a/dev/assets/chunks/VPLocalSearchBox.CjVzh6Wt.js +++ b/dev/assets/chunks/VPLocalSearchBox.B7daTfN2.js @@ -4,7 +4,7 @@ function __vite__mapDeps(indexes) { } return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) } -var It=Object.defineProperty;var Dt=(o,e,t)=>e in o?It(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>(Dt(o,typeof e!="symbol"?e+"":e,t),t);import{Y as yt,h as oe,y as $e,al as kt,am as Ot,d as _t,H as xe,an as tt,k as Fe,ao as Rt,ap as Mt,z as Lt,aq as zt,l as _e,U as de,S as Ee,ar as Pt,as as Vt,Z as Bt,j as $t,at as Wt,o as ee,b as Kt,m as k,a2 as Jt,p as j,au as Ut,av as jt,aw as Gt,c as re,n as rt,e as Se,G as at,F as nt,a as ve,t as pe,ax as qt,q as Ht,s as Qt,ay as it,az as Yt,ab as Zt,ah as Xt,aA as er,_ as tr}from"./framework.RTxADYK2.js";import{u as rr,c as ar}from"./theme.CUcw3pM6.js";const nr={root:()=>yt(()=>import("./@localSearchIndexroot.ChQxPsl0.js"),__vite__mapDeps([]))};/*! +var It=Object.defineProperty;var Dt=(o,e,t)=>e in o?It(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>(Dt(o,typeof e!="symbol"?e+"":e,t),t);import{Y as yt,h as oe,y as $e,al as kt,am as Ot,d as _t,H as xe,an as tt,k as Fe,ao as Rt,ap as Mt,z as Lt,aq as zt,l as _e,U as de,S as Ee,ar as Pt,as as Vt,Z as Bt,j as $t,at as Wt,o as ee,b as Kt,m as k,a2 as Jt,p as j,au as Ut,av as jt,aw as Gt,c as re,n as rt,e as Se,G as at,F as nt,a as ve,t as pe,ax as qt,q as Ht,s as Qt,ay as it,az as Yt,ab as Zt,ah as Xt,aA as er,_ as tr}from"./framework.RTxADYK2.js";import{u as rr,c as ar}from"./theme.BPFRbdjC.js";const nr={root:()=>yt(()=>import("./@localSearchIndexroot.SauVQhyg.js"),__vite__mapDeps([]))};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=mt.join(","),gt=typeof Element>"u",ue=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ce=!gt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ie=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},ir=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},bt=function(e,t,r){if(Ie(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ue.call(e,Ne)&&n.unshift(e),n=n.filter(r),n},wt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ie(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=ue.call(i,Ne);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ie(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var y=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,y):n.push({scopeParent:i,candidates:y})}else a.unshift.apply(a,i.children)}}return n},xt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||ir(e))&&!xt(e)?0:e.tabIndex},or=function(e,t){var r=se(e);return r<0&&t&&!xt(e)?0:r},sr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},Ft=function(e){return e.tagName==="INPUT"},ur=function(e){return Ft(e)&&e.type==="hidden"},lr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},cr=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(ue.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Ce(e);if(u&&!u.shadowRoot&&n(u)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(vr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return ot(e);return!1},yr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},gr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=or(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(sr).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},br=function(e,t){t=t||{};var r;return t.getShadowRoot?r=wt([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:mr}):r=bt(e,t.includeContainer,We.bind(null,t)),gr(r)},wr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=wt([e],t.includeContainer,{filter:De.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=bt(e,t.includeContainer,De.bind(null,t)),r},le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,Ne)===!1?!1:We(t,e)},xr=mt.concat("iframe").join(","),Re=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,xr)===!1?!1:De(t,e)};/*! diff --git a/dev/assets/chunks/theme.CUcw3pM6.js b/dev/assets/chunks/theme.BPFRbdjC.js similarity index 99% rename from dev/assets/chunks/theme.CUcw3pM6.js rename to dev/assets/chunks/theme.BPFRbdjC.js index 69bab15..0eb1c37 100644 --- a/dev/assets/chunks/theme.CUcw3pM6.js +++ b/dev/assets/chunks/theme.BPFRbdjC.js @@ -1,7 +1,7 @@ function __vite__mapDeps(indexes) { if (!__vite__mapDeps.viteFileDeps) { - __vite__mapDeps.viteFileDeps = ["assets/chunks/VPLocalSearchBox.CjVzh6Wt.js","assets/chunks/framework.RTxADYK2.js"] + __vite__mapDeps.viteFileDeps = ["assets/chunks/VPLocalSearchBox.B7daTfN2.js","assets/chunks/framework.RTxADYK2.js"] } return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) } -import{d as _,o as a,c as u,r as c,n as N,a as D,t as T,b as y,w as p,T as pe,e as f,_ as $,u as Ye,i as Xe,f as Qe,g as he,h as w,j as q,k as g,l as j,m as h,p as r,q as B,s as H,v as z,x as le,y as G,z as te,A as fe,B as Te,C as Ze,D as xe,E as K,F as M,G as E,H as we,I as se,J as b,K as W,L as Ie,M as oe,N as Z,O as J,P as et,Q as Ne,R as tt,S as ce,U as Me,V as Ae,W as st,X as ot,Y as nt,Z as Ce,$ as _e,a0 as at,a1 as rt,a2 as it,a3 as Be,a4 as lt,a5 as ct,a6 as ut}from"./framework.RTxADYK2.js";const dt=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(t,e)=>(a(),u("span",{class:N(["VPBadge",t.type])},[c(t.$slots,"default",{},()=>[D(T(t.text),1)])],2))}}),vt={key:0,class:"VPBackdrop"},pt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(t,e)=>(a(),y(pe,{name:"fade"},{default:p(()=>[t.show?(a(),u("div",vt)):f("",!0)]),_:1}))}}),ht=$(pt,[["__scopeId","data-v-b06cdb19"]]),L=Ye;function ft(s,t){let e,o=!1;return()=>{e&&clearTimeout(e),o?e=setTimeout(s,t):(s(),(o=!0)&&setTimeout(()=>o=!1,t))}}function ue(s){return/^\//.test(s)?s:`/${s}`}function me(s){const{pathname:t,search:e,hash:o,protocol:n}=new URL(s,"http://a.com");if(Xe(s)||s.startsWith("#")||!n.startsWith("http")||!Qe(t))return s;const{site:i}=L(),l=t.endsWith("/")||t.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${e}${o}`);return he(l)}const be=w(q?location.hash:"");q&&window.addEventListener("hashchange",()=>{be.value=location.hash});function X({removeCurrent:s=!0,correspondingLink:t=!1}={}){const{site:e,localeIndex:o,page:n,theme:i}=L(),l=g(()=>{var d,m;return{label:(d=e.value.locales[o.value])==null?void 0:d.label,link:((m=e.value.locales[o.value])==null?void 0:m.link)||(o.value==="root"?"/":`/${o.value}/`)}});return{localeLinks:g(()=>Object.entries(e.value.locales).flatMap(([d,m])=>s&&l.value.label===m.label?[]:{text:m.label,link:_t(m.link||(d==="root"?"/":`/${d}/`),i.value.i18nRouting!==!1&&t,n.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+be.value})),currentLang:l}}function _t(s,t,e,o){return t?s.replace(/\/$/,"")+ue(e.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):s}const mt=s=>(B("data-v-792811ca"),s=s(),H(),s),bt={class:"NotFound"},kt={class:"code"},$t={class:"title"},gt=mt(()=>h("div",{class:"divider"},null,-1)),yt={class:"quote"},Pt={class:"action"},St=["href","aria-label"],Vt=_({__name:"NotFound",setup(s){const{site:t,theme:e}=L(),{localeLinks:o}=X({removeCurrent:!1}),n=w("/");return j(()=>{var l;const i=window.location.pathname.replace(t.value.base,"").replace(/(^.*?\/).*$/,"/$1");o.value.length&&(n.value=((l=o.value.find(({link:v})=>v.startsWith(i)))==null?void 0:l.link)||o.value[0].link)}),(i,l)=>{var v,d,m,P,k;return a(),u("div",bt,[h("p",kt,T(((v=r(e).notFound)==null?void 0:v.code)??"404"),1),h("h1",$t,T(((d=r(e).notFound)==null?void 0:d.title)??"PAGE NOT FOUND"),1),gt,h("blockquote",yt,T(((m=r(e).notFound)==null?void 0:m.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),h("div",Pt,[h("a",{class:"link",href:r(he)(n.value),"aria-label":((P=r(e).notFound)==null?void 0:P.linkLabel)??"go to home"},T(((k=r(e).notFound)==null?void 0:k.linkText)??"Take me home"),9,St)])])}}}),Lt=$(Vt,[["__scopeId","data-v-792811ca"]]);function He(s,t){if(Array.isArray(s))return x(s);if(s==null)return[];t=ue(t);const e=Object.keys(s).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>t.startsWith(ue(n))),o=e?s[e]:[];return Array.isArray(o)?x(o):x(o.items,o.base)}function Tt(s){const t=[];let e=0;for(const o in s){const n=s[o];if(n.items){e=t.push(n);continue}t[e]||t.push({items:[]}),t[e].items.push(n)}return t}function wt(s){const t=[];function e(o){for(const n of o)n.text&&n.link&&t.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&e(n.items)}return e(s),t}function de(s,t){return Array.isArray(t)?t.some(e=>de(s,e)):z(s,t.link)?!0:t.items?de(s,t.items):!1}function x(s,t){return[...s].map(e=>{const o={...e},n=o.base||t;return n&&o.link&&(o.link=n+o.link),o.items&&(o.items=x(o.items,n)),o})}function O(){const{frontmatter:s,page:t,theme:e}=L(),o=le("(min-width: 960px)"),n=w(!1),i=g(()=>{const C=e.value.sidebar,I=t.value.relativePath;return C?He(C,I):[]}),l=w(i.value);G(i,(C,I)=>{JSON.stringify(C)!==JSON.stringify(I)&&(l.value=i.value)});const v=g(()=>s.value.sidebar!==!1&&l.value.length>0&&s.value.layout!=="home"),d=g(()=>m?s.value.aside==null?e.value.aside==="left":s.value.aside==="left":!1),m=g(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:e.value.aside!==!1),P=g(()=>v.value&&o.value),k=g(()=>v.value?Tt(l.value):[]);function V(){n.value=!0}function S(){n.value=!1}function A(){n.value?S():V()}return{isOpen:n,sidebar:l,sidebarGroups:k,hasSidebar:v,hasAside:m,leftAside:d,isSidebarEnabled:P,open:V,close:S,toggle:A}}function It(s,t){let e;te(()=>{e=s.value?document.activeElement:void 0}),j(()=>{window.addEventListener("keyup",o)}),fe(()=>{window.removeEventListener("keyup",o)});function o(n){n.key==="Escape"&&s.value&&(t(),e==null||e.focus())}}function Nt(s){const{page:t}=L(),e=w(!1),o=g(()=>s.value.collapsed!=null),n=g(()=>!!s.value.link),i=w(!1),l=()=>{i.value=z(t.value.relativePath,s.value.link)};G([t,s,be],l),j(l);const v=g(()=>i.value?!0:s.value.items?de(t.value.relativePath,s.value.items):!1),d=g(()=>!!(s.value.items&&s.value.items.length));te(()=>{e.value=!!(o.value&&s.value.collapsed)}),Te(()=>{(i.value||v.value)&&(e.value=!1)});function m(){o.value&&(e.value=!e.value)}return{collapsed:e,collapsible:o,isLink:n,isActiveLink:i,hasActiveLink:v,hasChildren:d,toggle:m}}function Mt(){const{hasSidebar:s}=O(),t=le("(min-width: 960px)"),e=le("(min-width: 1280px)");return{isAsideEnabled:g(()=>!e.value&&!t.value?!1:s.value?e.value:t.value)}}const ve=[];function Ee(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function ke(s){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(e=>e.id&&e.hasChildNodes()).map(e=>{const o=Number(e.tagName[1]);return{element:e,title:At(e),link:"#"+e.id,level:o}});return Ct(t,s)}function At(s){let t="";for(const e of s.childNodes)if(e.nodeType===1){if(e.classList.contains("VPBadge")||e.classList.contains("header-anchor")||e.classList.contains("ignore-header"))continue;t+=e.textContent}else e.nodeType===3&&(t+=e.textContent);return t.trim()}function Ct(s,t){if(t===!1)return[];const e=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[o,n]=typeof e=="number"?[e,e]:e==="deep"?[2,6]:e;s=s.filter(l=>l.level>=o&&l.level<=n),ve.length=0;for(const{element:l,link:v}of s)ve.push({element:l,link:v});const i=[];e:for(let l=0;l=0;d--){const m=s[d];if(m.level{requestAnimationFrame(i),window.addEventListener("scroll",o)}),Ze(()=>{l(location.hash)}),fe(()=>{window.removeEventListener("scroll",o)});function i(){if(!e.value)return;const v=window.scrollY,d=window.innerHeight,m=document.body.offsetHeight,P=Math.abs(v+d-m)<1,k=ve.map(({element:S,link:A})=>({link:A,top:Ht(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!k.length){l(null);return}if(v<1){l(null);return}if(P){l(k[k.length-1].link);return}let V=null;for(const{link:S,top:A}of k){if(A>v+xe()+4)break;V=S}l(V)}function l(v){n&&n.classList.remove("active"),v==null?n=null:n=s.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const d=n;d?(d.classList.add("active"),t.value.style.top=d.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function Ht(s){let t=0;for(;s!==document.body;){if(s===null)return NaN;t+=s.offsetTop,s=s.offsetParent}return t}const Et=["href","title"],Dt=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(s){function t({target:e}){const o=e.href.split("#")[1],n=document.getElementById(decodeURIComponent(o));n==null||n.focus({preventScroll:!0})}return(e,o)=>{const n=K("VPDocOutlineItem",!0);return a(),u("ul",{class:N(["VPDocOutlineItem",e.root?"root":"nested"])},[(a(!0),u(M,null,E(e.headers,({children:i,link:l,title:v})=>(a(),u("li",null,[h("a",{class:"outline-link",href:l,onClick:t,title:v},T(v),9,Et),i!=null&&i.length?(a(),y(n,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),De=$(Dt,[["__scopeId","data-v-3f927ebe"]]),Ft=s=>(B("data-v-c14bfc45"),s=s(),H(),s),Ot={class:"content"},Ut={class:"outline-title",role:"heading","aria-level":"2"},jt={"aria-labelledby":"doc-outline-aria-label"},Gt=Ft(()=>h("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),zt=_({__name:"VPDocAsideOutline",setup(s){const{frontmatter:t,theme:e}=L(),o=we([]);se(()=>{o.value=ke(t.value.outline??e.value.outline)});const n=w(),i=w();return Bt(n,i),(l,v)=>(a(),u("div",{class:N(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:n,role:"navigation"},[h("div",Ot,[h("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),h("div",Ut,T(r(Ee)(r(e))),1),h("nav",jt,[Gt,b(De,{headers:o.value,root:!0},null,8,["headers"])])])],2))}}),Kt=$(zt,[["__scopeId","data-v-c14bfc45"]]),Rt={class:"VPDocAsideCarbonAds"},Wt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const t=()=>null;return(e,o)=>(a(),u("div",Rt,[b(r(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),qt=s=>(B("data-v-6d7b3c46"),s=s(),H(),s),Jt={class:"VPDocAside"},Yt=qt(()=>h("div",{class:"spacer"},null,-1)),Xt=_({__name:"VPDocAside",setup(s){const{theme:t}=L();return(e,o)=>(a(),u("div",Jt,[c(e.$slots,"aside-top",{},void 0,!0),c(e.$slots,"aside-outline-before",{},void 0,!0),b(Kt),c(e.$slots,"aside-outline-after",{},void 0,!0),Yt,c(e.$slots,"aside-ads-before",{},void 0,!0),r(t).carbonAds?(a(),y(Wt,{key:0,"carbon-ads":r(t).carbonAds},null,8,["carbon-ads"])):f("",!0),c(e.$slots,"aside-ads-after",{},void 0,!0),c(e.$slots,"aside-bottom",{},void 0,!0)]))}}),Qt=$(Xt,[["__scopeId","data-v-6d7b3c46"]]);function Zt(){const{theme:s,page:t}=L();return g(()=>{const{text:e="Edit this page",pattern:o=""}=s.value.editLink||{};let n;return typeof o=="function"?n=o(t.value):n=o.replace(/:path/g,t.value.filePath),{url:n,text:e}})}function xt(){const{page:s,theme:t,frontmatter:e}=L();return g(()=>{var d,m,P,k,V,S,A,C;const o=He(t.value.sidebar,s.value.relativePath),n=wt(o),i=n.findIndex(I=>z(s.value.relativePath,I.link)),l=((d=t.value.docFooter)==null?void 0:d.prev)===!1&&!e.value.prev||e.value.prev===!1,v=((m=t.value.docFooter)==null?void 0:m.next)===!1&&!e.value.next||e.value.next===!1;return{prev:l?void 0:{text:(typeof e.value.prev=="string"?e.value.prev:typeof e.value.prev=="object"?e.value.prev.text:void 0)??((P=n[i-1])==null?void 0:P.docFooterText)??((k=n[i-1])==null?void 0:k.text),link:(typeof e.value.prev=="object"?e.value.prev.link:void 0)??((V=n[i-1])==null?void 0:V.link)},next:v?void 0:{text:(typeof e.value.next=="string"?e.value.next:typeof e.value.next=="object"?e.value.next.text:void 0)??((S=n[i+1])==null?void 0:S.docFooterText)??((A=n[i+1])==null?void 0:A.text),link:(typeof e.value.next=="object"?e.value.next.link:void 0)??((C=n[i+1])==null?void 0:C.link)}}})}const F=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const t=s,e=g(()=>t.tag??(t.href?"a":"span")),o=g(()=>t.href&&Ie.test(t.href));return(n,i)=>(a(),y(W(e.value),{class:N(["VPLink",{link:n.href,"vp-external-link-icon":o.value,"no-icon":n.noIcon}]),href:n.href?r(me)(n.href):void 0,target:n.target??(o.value?"_blank":void 0),rel:n.rel??(o.value?"noreferrer":void 0)},{default:p(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),es={class:"VPLastUpdated"},ts=["datetime"],ss=_({__name:"VPDocFooterLastUpdated",setup(s){const{theme:t,page:e,frontmatter:o,lang:n}=L(),i=g(()=>new Date(o.value.lastUpdated??e.value.lastUpdated)),l=g(()=>i.value.toISOString()),v=w("");return j(()=>{te(()=>{var d,m,P;v.value=new Intl.DateTimeFormat((m=(d=t.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&m.forceLocale?n.value:void 0,((P=t.value.lastUpdated)==null?void 0:P.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(i.value)})}),(d,m)=>{var P;return a(),u("p",es,[D(T(((P=r(t).lastUpdated)==null?void 0:P.text)||r(t).lastUpdatedText||"Last updated")+": ",1),h("time",{datetime:l.value},T(v.value),9,ts)])}}}),os=$(ss,[["__scopeId","data-v-9da12f1d"]]),ns=s=>(B("data-v-87be45d1"),s=s(),H(),s),as={key:0,class:"VPDocFooter"},rs={key:0,class:"edit-info"},is={key:0,class:"edit-link"},ls=ns(()=>h("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),cs={key:1,class:"last-updated"},us={key:1,class:"prev-next"},ds={class:"pager"},vs=["innerHTML"],ps=["innerHTML"],hs={class:"pager"},fs=["innerHTML"],_s=["innerHTML"],ms=_({__name:"VPDocFooter",setup(s){const{theme:t,page:e,frontmatter:o}=L(),n=Zt(),i=xt(),l=g(()=>t.value.editLink&&o.value.editLink!==!1),v=g(()=>e.value.lastUpdated&&o.value.lastUpdated!==!1),d=g(()=>l.value||v.value||i.value.prev||i.value.next);return(m,P)=>{var k,V,S,A;return d.value?(a(),u("footer",as,[c(m.$slots,"doc-footer-before",{},void 0,!0),l.value||v.value?(a(),u("div",rs,[l.value?(a(),u("div",is,[b(F,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:p(()=>[ls,D(" "+T(r(n).text),1)]),_:1},8,["href"])])):f("",!0),v.value?(a(),u("div",cs,[b(os)])):f("",!0)])):f("",!0),(k=r(i).prev)!=null&&k.link||(V=r(i).next)!=null&&V.link?(a(),u("nav",us,[h("div",ds,[(S=r(i).prev)!=null&&S.link?(a(),y(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:p(()=>{var C;return[h("span",{class:"desc",innerHTML:((C=r(t).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,vs),h("span",{class:"title",innerHTML:r(i).prev.text},null,8,ps)]}),_:1},8,["href"])):f("",!0)]),h("div",hs,[(A=r(i).next)!=null&&A.link?(a(),y(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:p(()=>{var C;return[h("span",{class:"desc",innerHTML:((C=r(t).docFooter)==null?void 0:C.next)||"Next page"},null,8,fs),h("span",{class:"title",innerHTML:r(i).next.text},null,8,_s)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),bs=$(ms,[["__scopeId","data-v-87be45d1"]]),ks=s=>(B("data-v-83890dd9"),s=s(),H(),s),$s={class:"container"},gs=ks(()=>h("div",{class:"aside-curtain"},null,-1)),ys={class:"aside-container"},Ps={class:"aside-content"},Ss={class:"content"},Vs={class:"content-container"},Ls={class:"main"},Ts=_({__name:"VPDoc",setup(s){const{theme:t}=L(),e=oe(),{hasSidebar:o,hasAside:n,leftAside:i}=O(),l=g(()=>e.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,d)=>{const m=K("Content");return a(),u("div",{class:N(["VPDoc",{"has-sidebar":r(o),"has-aside":r(n)}])},[c(v.$slots,"doc-top",{},void 0,!0),h("div",$s,[r(n)?(a(),u("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[gs,h("div",ys,[h("div",Ps,[b(Qt,null,{"aside-top":p(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),h("div",Ss,[h("div",Vs,[c(v.$slots,"doc-before",{},void 0,!0),h("main",Ls,[b(m,{class:N(["vp-doc",[l.value,r(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),b(bs,null,{"doc-footer-before":p(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(v.$slots,"doc-after",{},void 0,!0)])])]),c(v.$slots,"doc-bottom",{},void 0,!0)],2)}}}),ws=$(Ts,[["__scopeId","data-v-83890dd9"]]),Is=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const t=s,e=g(()=>t.href&&Ie.test(t.href)),o=g(()=>t.tag||t.href?"a":"button");return(n,i)=>(a(),y(W(o.value),{class:N(["VPButton",[n.size,n.theme]]),href:n.href?r(me)(n.href):void 0,target:t.target??(e.value?"_blank":void 0),rel:t.rel??(e.value?"noreferrer":void 0)},{default:p(()=>[D(T(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),Ns=$(Is,[["__scopeId","data-v-14206e74"]]),Ms=["src","alt"],As=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(t,e)=>{const o=K("VPImage",!0);return t.image?(a(),u(M,{key:0},[typeof t.image=="string"||"src"in t.image?(a(),u("img",Z({key:0,class:"VPImage"},typeof t.image=="string"?t.$attrs:{...t.image,...t.$attrs},{src:r(he)(typeof t.image=="string"?t.image:t.image.src),alt:t.alt??(typeof t.image=="string"?"":t.image.alt||"")}),null,16,Ms)):(a(),u(M,{key:1},[b(o,Z({class:"dark",image:t.image.dark,alt:t.image.alt},t.$attrs),null,16,["image","alt"]),b(o,Z({class:"light",image:t.image.light,alt:t.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),ee=$(As,[["__scopeId","data-v-35a7d0b8"]]),Cs=s=>(B("data-v-955009fc"),s=s(),H(),s),Bs={class:"container"},Hs={class:"main"},Es={key:0,class:"name"},Ds=["innerHTML"],Fs=["innerHTML"],Os=["innerHTML"],Us={key:0,class:"actions"},js={key:0,class:"image"},Gs={class:"image-container"},zs=Cs(()=>h("div",{class:"image-bg"},null,-1)),Ks=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const t=J("hero-image-slot-exists");return(e,o)=>(a(),u("div",{class:N(["VPHero",{"has-image":e.image||r(t)}])},[h("div",Bs,[h("div",Hs,[c(e.$slots,"home-hero-info-before",{},void 0,!0),c(e.$slots,"home-hero-info",{},()=>[e.name?(a(),u("h1",Es,[h("span",{innerHTML:e.name,class:"clip"},null,8,Ds)])):f("",!0),e.text?(a(),u("p",{key:1,innerHTML:e.text,class:"text"},null,8,Fs)):f("",!0),e.tagline?(a(),u("p",{key:2,innerHTML:e.tagline,class:"tagline"},null,8,Os)):f("",!0)],!0),c(e.$slots,"home-hero-info-after",{},void 0,!0),e.actions?(a(),u("div",Us,[(a(!0),u(M,null,E(e.actions,n=>(a(),u("div",{key:n.link,class:"action"},[b(Ns,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),c(e.$slots,"home-hero-actions-after",{},void 0,!0)]),e.image||r(t)?(a(),u("div",js,[h("div",Gs,[zs,c(e.$slots,"home-hero-image",{},()=>[e.image?(a(),y(ee,{key:0,class:"image-src",image:e.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Rs=$(Ks,[["__scopeId","data-v-955009fc"]]),Ws=_({__name:"VPHomeHero",setup(s){const{frontmatter:t}=L();return(e,o)=>r(t).hero?(a(),y(Rs,{key:0,class:"VPHomeHero",name:r(t).hero.name,text:r(t).hero.text,tagline:r(t).hero.tagline,image:r(t).hero.image,actions:r(t).hero.actions},{"home-hero-info-before":p(()=>[c(e.$slots,"home-hero-info-before")]),"home-hero-info":p(()=>[c(e.$slots,"home-hero-info")]),"home-hero-info-after":p(()=>[c(e.$slots,"home-hero-info-after")]),"home-hero-actions-after":p(()=>[c(e.$slots,"home-hero-actions-after")]),"home-hero-image":p(()=>[c(e.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),qs=s=>(B("data-v-f5e9645b"),s=s(),H(),s),Js={class:"box"},Ys={key:0,class:"icon"},Xs=["innerHTML"],Qs=["innerHTML"],Zs=["innerHTML"],xs={key:4,class:"link-text"},eo={class:"link-text-value"},to=qs(()=>h("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),so=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(t,e)=>(a(),y(F,{class:"VPFeature",href:t.link,rel:t.rel,target:t.target,"no-icon":!0,tag:t.link?"a":"div"},{default:p(()=>[h("article",Js,[typeof t.icon=="object"&&t.icon.wrap?(a(),u("div",Ys,[b(ee,{image:t.icon,alt:t.icon.alt,height:t.icon.height||48,width:t.icon.width||48},null,8,["image","alt","height","width"])])):typeof t.icon=="object"?(a(),y(ee,{key:1,image:t.icon,alt:t.icon.alt,height:t.icon.height||48,width:t.icon.width||48},null,8,["image","alt","height","width"])):t.icon?(a(),u("div",{key:2,class:"icon",innerHTML:t.icon},null,8,Xs)):f("",!0),h("h2",{class:"title",innerHTML:t.title},null,8,Qs),t.details?(a(),u("p",{key:3,class:"details",innerHTML:t.details},null,8,Zs)):f("",!0),t.linkText?(a(),u("div",xs,[h("p",eo,[D(T(t.linkText)+" ",1),to])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),oo=$(so,[["__scopeId","data-v-f5e9645b"]]),no={key:0,class:"VPFeatures"},ao={class:"container"},ro={class:"items"},io=_({__name:"VPFeatures",props:{features:{}},setup(s){const t=s,e=g(()=>{const o=t.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,n)=>o.features?(a(),u("div",no,[h("div",ao,[h("div",ro,[(a(!0),u(M,null,E(o.features,i=>(a(),u("div",{key:i.title,class:N(["item",[e.value]])},[b(oo,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),lo=$(io,[["__scopeId","data-v-d0a190d7"]]),co=_({__name:"VPHomeFeatures",setup(s){const{frontmatter:t}=L();return(e,o)=>r(t).features?(a(),y(lo,{key:0,class:"VPHomeFeatures",features:r(t).features},null,8,["features"])):f("",!0)}}),uo=_({__name:"VPHomeContent",setup(s){const{width:t}=et({includeScrollbar:!1});return(e,o)=>(a(),u("div",{class:"vp-doc container",style:Ne(r(t)?{"--vp-offset":`calc(50% - ${r(t)/2}px)`}:{})},[c(e.$slots,"default",{},void 0,!0)],4))}}),vo=$(uo,[["__scopeId","data-v-c43247eb"]]),po={class:"VPHome"},ho=_({__name:"VPHome",setup(s){const{frontmatter:t}=L();return(e,o)=>{const n=K("Content");return a(),u("div",po,[c(e.$slots,"home-hero-before",{},void 0,!0),b(Ws,null,{"home-hero-info-before":p(()=>[c(e.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(e.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(e.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(e.$slots,"home-hero-after",{},void 0,!0),c(e.$slots,"home-features-before",{},void 0,!0),b(co),c(e.$slots,"home-features-after",{},void 0,!0),r(t).markdownStyles!==!1?(a(),y(vo,{key:0},{default:p(()=>[b(n)]),_:1})):(a(),y(n,{key:1}))])}}}),fo=$(ho,[["__scopeId","data-v-cbb6ec48"]]),_o={},mo={class:"VPPage"};function bo(s,t){const e=K("Content");return a(),u("div",mo,[c(s.$slots,"page-top"),b(e),c(s.$slots,"page-bottom")])}const ko=$(_o,[["render",bo]]),$o=_({__name:"VPContent",setup(s){const{page:t,frontmatter:e}=L(),{hasSidebar:o}=O();return(n,i)=>(a(),u("div",{class:N(["VPContent",{"has-sidebar":r(o),"is-home":r(e).layout==="home"}]),id:"VPContent"},[r(t).isNotFound?c(n.$slots,"not-found",{key:0},()=>[b(Lt)],!0):r(e).layout==="page"?(a(),y(ko,{key:1},{"page-top":p(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(e).layout==="home"?(a(),y(fo,{key:2},{"home-hero-before":p(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(e).layout&&r(e).layout!=="doc"?(a(),y(W(r(e).layout),{key:3})):(a(),y(ws,{key:4},{"doc-top":p(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":p(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":p(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":p(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":p(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),go=$($o,[["__scopeId","data-v-91765379"]]),yo={class:"container"},Po=["innerHTML"],So=["innerHTML"],Vo=_({__name:"VPFooter",setup(s){const{theme:t,frontmatter:e}=L(),{hasSidebar:o}=O();return(n,i)=>r(t).footer&&r(e).footer!==!1?(a(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(o)}])},[h("div",yo,[r(t).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(t).footer.message},null,8,Po)):f("",!0),r(t).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(t).footer.copyright},null,8,So)):f("",!0)])],2)):f("",!0)}}),Lo=$(Vo,[["__scopeId","data-v-c970a860"]]);function Fe(){const{theme:s,frontmatter:t}=L(),e=we([]),o=g(()=>e.value.length>0);return se(()=>{e.value=ke(t.value.outline??s.value.outline)}),{headers:e,hasLocalNav:o}}const To=s=>(B("data-v-c9ba27ad"),s=s(),H(),s),wo=To(()=>h("span",{class:"vpi-chevron-right icon"},null,-1)),Io={class:"header"},No={class:"outline"},Mo=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const t=s,{theme:e}=L(),o=w(!1),n=w(0),i=w(),l=w();tt(i,()=>{o.value=!1}),ce("Escape",()=>{o.value=!1}),se(()=>{o.value=!1});function v(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function d(P){P.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Me(()=>{o.value=!1}))}function m(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(P,k)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Ne({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[P.headers.length>0?(a(),u("button",{key:0,onClick:v,class:N({open:o.value})},[D(T(r(Ee)(r(e)))+" ",1),wo],2)):(a(),u("button",{key:1,onClick:m},T(r(e).returnToTopLabel||"Return to top"),1)),b(pe,{name:"flyout"},{default:p(()=>[o.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:d},[h("div",Io,[h("a",{class:"top-link",href:"#",onClick:m},T(r(e).returnToTopLabel||"Return to top"),1)]),h("div",No,[b(De,{headers:P.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),Ao=$(Mo,[["__scopeId","data-v-c9ba27ad"]]),Co=s=>(B("data-v-070ab83d"),s=s(),H(),s),Bo={class:"container"},Ho=["aria-expanded"],Eo=Co(()=>h("span",{class:"vpi-align-left menu-icon"},null,-1)),Do={class:"menu-text"},Fo=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:t,frontmatter:e}=L(),{hasSidebar:o}=O(),{headers:n}=Fe(),{y:i}=Ae(),l=w(0);j(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),se(()=>{n.value=ke(e.value.outline??t.value.outline)});const v=g(()=>n.value.length===0),d=g(()=>v.value&&!o.value),m=g(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:v.value,fixed:d.value}));return(P,k)=>r(e).layout!=="home"&&(!d.value||r(i)>=l.value)?(a(),u("div",{key:0,class:N(m.value)},[h("div",Bo,[r(o)?(a(),u("button",{key:0,class:"menu","aria-expanded":P.open,"aria-controls":"VPSidebarNav",onClick:k[0]||(k[0]=V=>P.$emit("open-menu"))},[Eo,h("span",Do,T(r(t).sidebarMenuLabel||"Menu"),1)],8,Ho)):f("",!0),b(Ao,{headers:r(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Oo=$(Fo,[["__scopeId","data-v-070ab83d"]]);function Uo(){const s=w(!1);function t(){s.value=!0,window.addEventListener("resize",n)}function e(){s.value=!1,window.removeEventListener("resize",n)}function o(){s.value?e():t()}function n(){window.outerWidth>=768&&e()}const i=oe();return G(()=>i.path,e),{isScreenOpen:s,openScreen:t,closeScreen:e,toggleScreen:o}}const jo={},Go={class:"VPSwitch",type:"button",role:"switch"},zo={class:"check"},Ko={key:0,class:"icon"};function Ro(s,t){return a(),u("button",Go,[h("span",zo,[s.$slots.default?(a(),u("span",Ko,[c(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Wo=$(jo,[["render",Ro],["__scopeId","data-v-4a1c76db"]]),Oe=s=>(B("data-v-b79b56d4"),s=s(),H(),s),qo=Oe(()=>h("span",{class:"vpi-sun sun"},null,-1)),Jo=Oe(()=>h("span",{class:"vpi-moon moon"},null,-1)),Yo=_({__name:"VPSwitchAppearance",setup(s){const{isDark:t,theme:e}=L(),o=J("toggle-appearance",()=>{t.value=!t.value}),n=g(()=>t.value?e.value.lightModeSwitchTitle||"Switch to light theme":e.value.darkModeSwitchTitle||"Switch to dark theme");return(i,l)=>(a(),y(Wo,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(t),onClick:r(o)},{default:p(()=>[qo,Jo]),_:1},8,["title","aria-checked","onClick"]))}}),$e=$(Yo,[["__scopeId","data-v-b79b56d4"]]),Xo={key:0,class:"VPNavBarAppearance"},Qo=_({__name:"VPNavBarAppearance",setup(s){const{site:t}=L();return(e,o)=>r(t).appearance&&r(t).appearance!=="force-dark"?(a(),u("div",Xo,[b($e)])):f("",!0)}}),Zo=$(Qo,[["__scopeId","data-v-ead91a81"]]),ge=w();let Ue=!1,ie=0;function xo(s){const t=w(!1);if(q){!Ue&&en(),ie++;const e=G(ge,o=>{var n,i,l;o===s.el.value||(n=s.el.value)!=null&&n.contains(o)?(t.value=!0,(i=s.onFocus)==null||i.call(s)):(t.value=!1,(l=s.onBlur)==null||l.call(s))});fe(()=>{e(),ie--,ie||tn()})}return st(t)}function en(){document.addEventListener("focusin",je),Ue=!0,ge.value=document.activeElement}function tn(){document.removeEventListener("focusin",je)}function je(){ge.value=document.activeElement}const sn={class:"VPMenuLink"},on=_({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:t}=L();return(e,o)=>(a(),u("div",sn,[b(F,{class:N({active:r(z)(r(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel},{default:p(()=>[D(T(e.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),ne=$(on,[["__scopeId","data-v-8b74d055"]]),nn={class:"VPMenuGroup"},an={key:0,class:"title"},rn=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(t,e)=>(a(),u("div",nn,[t.text?(a(),u("p",an,T(t.text),1)):f("",!0),(a(!0),u(M,null,E(t.items,o=>(a(),u(M,null,["link"in o?(a(),y(ne,{key:0,item:o},null,8,["item"])):f("",!0)],64))),256))]))}}),ln=$(rn,[["__scopeId","data-v-48c802d0"]]),cn={class:"VPMenu"},un={key:0,class:"items"},dn=_({__name:"VPMenu",props:{items:{}},setup(s){return(t,e)=>(a(),u("div",cn,[t.items?(a(),u("div",un,[(a(!0),u(M,null,E(t.items,o=>(a(),u(M,{key:o.text},["link"in o?(a(),y(ne,{key:0,item:o},null,8,["item"])):(a(),y(ln,{key:1,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):f("",!0),c(t.$slots,"default",{},void 0,!0)]))}}),vn=$(dn,[["__scopeId","data-v-97491713"]]),pn=s=>(B("data-v-e5380155"),s=s(),H(),s),hn=["aria-expanded","aria-label"],fn={key:0,class:"text"},_n=["innerHTML"],mn=pn(()=>h("span",{class:"vpi-chevron-down text-icon"},null,-1)),bn={key:1,class:"vpi-more-horizontal icon"},kn={class:"menu"},$n=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const t=w(!1),e=w();xo({el:e,onBlur:o});function o(){t.value=!1}return(n,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:e,onMouseenter:i[1]||(i[1]=l=>t.value=!0),onMouseleave:i[2]||(i[2]=l=>t.value=!1)},[h("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":n.label,onClick:i[0]||(i[0]=l=>t.value=!t.value)},[n.button||n.icon?(a(),u("span",fn,[n.icon?(a(),u("span",{key:0,class:N([n.icon,"option-icon"])},null,2)):f("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,_n)):f("",!0),mn])):(a(),u("span",bn))],8,hn),h("div",kn,[b(vn,{items:n.items},{default:p(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ye=$($n,[["__scopeId","data-v-e5380155"]]),gn=["href","aria-label","innerHTML"],yn=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const t=s,e=g(()=>typeof t.icon=="object"?t.icon.svg:``);return(o,n)=>(a(),u("a",{class:"VPSocialLink no-icon",href:o.link,"aria-label":o.ariaLabel??(typeof o.icon=="string"?o.icon:""),target:"_blank",rel:"noopener",innerHTML:e.value},null,8,gn))}}),Pn=$(yn,[["__scopeId","data-v-717b8b75"]]),Sn={class:"VPSocialLinks"},Vn=_({__name:"VPSocialLinks",props:{links:{}},setup(s){return(t,e)=>(a(),u("div",Sn,[(a(!0),u(M,null,E(t.links,({link:o,icon:n,ariaLabel:i})=>(a(),y(Pn,{key:o,icon:n,link:o,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),Pe=$(Vn,[["__scopeId","data-v-ee7a9424"]]),Ln={key:0,class:"group translations"},Tn={class:"trans-title"},wn={key:1,class:"group"},In={class:"item appearance"},Nn={class:"label"},Mn={class:"appearance-action"},An={key:2,class:"group"},Cn={class:"item social-links"},Bn=_({__name:"VPNavBarExtra",setup(s){const{site:t,theme:e}=L(),{localeLinks:o,currentLang:n}=X({correspondingLink:!0}),i=g(()=>o.value.length&&n.value.label||t.value.appearance||e.value.socialLinks);return(l,v)=>i.value?(a(),y(ye,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:p(()=>[r(o).length&&r(n).label?(a(),u("div",Ln,[h("p",Tn,T(r(n).label),1),(a(!0),u(M,null,E(r(o),d=>(a(),y(ne,{key:d.link,item:d},null,8,["item"]))),128))])):f("",!0),r(t).appearance&&r(t).appearance!=="force-dark"?(a(),u("div",wn,[h("div",In,[h("p",Nn,T(r(e).darkModeSwitchLabel||"Appearance"),1),h("div",Mn,[b($e)])])])):f("",!0),r(e).socialLinks?(a(),u("div",An,[h("div",Cn,[b(Pe,{class:"social-links-list",links:r(e).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),Hn=$(Bn,[["__scopeId","data-v-9b536d0b"]]),En=s=>(B("data-v-5dea55bf"),s=s(),H(),s),Dn=["aria-expanded"],Fn=En(()=>h("span",{class:"container"},[h("span",{class:"top"}),h("span",{class:"middle"}),h("span",{class:"bottom"})],-1)),On=[Fn],Un=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(t,e)=>(a(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:t.active}]),"aria-label":"mobile navigation","aria-expanded":t.active,"aria-controls":"VPNavScreen",onClick:e[0]||(e[0]=o=>t.$emit("click"))},On,10,Dn))}}),jn=$(Un,[["__scopeId","data-v-5dea55bf"]]),Gn=["innerHTML"],zn=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:t}=L();return(e,o)=>(a(),y(F,{class:N({VPNavBarMenuLink:!0,active:r(z)(r(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,tabindex:"0"},{default:p(()=>[h("span",{innerHTML:e.item.text},null,8,Gn)]),_:1},8,["class","href","target","rel"]))}}),Kn=$(zn,[["__scopeId","data-v-2781b5e7"]]),Rn=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const t=s,{page:e}=L(),o=i=>"link"in i?z(e.value.relativePath,i.link,!!t.item.activeMatch):i.items.some(o),n=g(()=>o(t.item));return(i,l)=>(a(),y(ye,{class:N({VPNavBarMenuGroup:!0,active:r(z)(r(e).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Wn=s=>(B("data-v-492ea56d"),s=s(),H(),s),qn={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Jn=Wn(()=>h("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Yn=_({__name:"VPNavBarMenu",setup(s){const{theme:t}=L();return(e,o)=>r(t).nav?(a(),u("nav",qn,[Jn,(a(!0),u(M,null,E(r(t).nav,n=>(a(),u(M,{key:n.text},["link"in n?(a(),y(Kn,{key:0,item:n},null,8,["item"])):(a(),y(Rn,{key:1,item:n},null,8,["item"]))],64))),128))])):f("",!0)}}),Xn=$(Yn,[["__scopeId","data-v-492ea56d"]]);function Qn(s){const{localeIndex:t,theme:e}=L();function o(n){var A,C,I;const i=n.split("."),l=(A=e.value.search)==null?void 0:A.options,v=l&&typeof l=="object",d=v&&((I=(C=l.locales)==null?void 0:C[t.value])==null?void 0:I.translations)||null,m=v&&l.translations||null;let P=d,k=m,V=s;const S=i.pop();for(const Q of i){let U=null;const R=V==null?void 0:V[Q];R&&(U=V=R);const ae=k==null?void 0:k[Q];ae&&(U=k=ae);const re=P==null?void 0:P[Q];re&&(U=P=re),R||(V=U),ae||(k=U),re||(P=U)}return(P==null?void 0:P[S])??(k==null?void 0:k[S])??(V==null?void 0:V[S])??""}return o}const Zn=["aria-label"],xn={class:"DocSearch-Button-Container"},ea=h("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),ta={class:"DocSearch-Button-Placeholder"},sa=h("span",{class:"DocSearch-Button-Keys"},[h("kbd",{class:"DocSearch-Button-Key"}),h("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Se=_({__name:"VPNavBarSearchButton",setup(s){const e=Qn({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(e)("button.buttonAriaLabel")},[h("span",xn,[ea,h("span",ta,T(r(e)("button.buttonText")),1)]),sa],8,Zn))}}),oa={class:"VPNavBarSearch"},na={id:"local-search"},aa={key:1,id:"docsearch"},ra=_({__name:"VPNavBarSearch",setup(s){const t=ot(()=>nt(()=>import("./VPLocalSearchBox.CjVzh6Wt.js"),__vite__mapDeps([0,1]))),e=()=>null,{theme:o}=L(),n=w(!1),i=w(!1);j(()=>{});function l(){n.value||(n.value=!0,setTimeout(v,16))}function v(){const k=new Event("keydown");k.key="k",k.metaKey=!0,window.dispatchEvent(k),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function d(k){const V=k.target,S=V.tagName;return V.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const m=w(!1);ce("k",k=>{(k.ctrlKey||k.metaKey)&&(k.preventDefault(),m.value=!0)}),ce("/",k=>{d(k)||(k.preventDefault(),m.value=!0)});const P="local";return(k,V)=>{var S;return a(),u("div",oa,[r(P)==="local"?(a(),u(M,{key:0},[m.value?(a(),y(r(t),{key:0,onClose:V[0]||(V[0]=A=>m.value=!1)})):f("",!0),h("div",na,[b(Se,{onClick:V[1]||(V[1]=A=>m.value=!0)})])],64)):r(P)==="algolia"?(a(),u(M,{key:1},[n.value?(a(),y(r(e),{key:0,algolia:((S=r(o).search)==null?void 0:S.options)??r(o).algolia,onVnodeBeforeMount:V[2]||(V[2]=A=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(a(),u("div",aa,[b(Se,{onClick:l})]))],64)):f("",!0)])}}}),ia=_({__name:"VPNavBarSocialLinks",setup(s){const{theme:t}=L();return(e,o)=>r(t).socialLinks?(a(),y(Pe,{key:0,class:"VPNavBarSocialLinks",links:r(t).socialLinks},null,8,["links"])):f("",!0)}}),la=$(ia,[["__scopeId","data-v-164c457f"]]),ca=["href","rel","target"],ua={key:1},da={key:2},va=_({__name:"VPNavBarTitle",setup(s){const{site:t,theme:e}=L(),{hasSidebar:o}=O(),{currentLang:n}=X(),i=g(()=>{var d;return typeof e.value.logoLink=="string"?e.value.logoLink:(d=e.value.logoLink)==null?void 0:d.link}),l=g(()=>{var d;return typeof e.value.logoLink=="string"||(d=e.value.logoLink)==null?void 0:d.rel}),v=g(()=>{var d;return typeof e.value.logoLink=="string"||(d=e.value.logoLink)==null?void 0:d.target});return(d,m)=>(a(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(o)}])},[h("a",{class:"title",href:i.value??r(me)(r(n).link),rel:l.value,target:v.value},[c(d.$slots,"nav-bar-title-before",{},void 0,!0),r(e).logo?(a(),y(ee,{key:0,class:"logo",image:r(e).logo},null,8,["image"])):f("",!0),r(e).siteTitle?(a(),u("span",ua,T(r(e).siteTitle),1)):r(e).siteTitle===void 0?(a(),u("span",da,T(r(t).title),1)):f("",!0),c(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,ca)],2))}}),pa=$(va,[["__scopeId","data-v-28a961f9"]]),ha={class:"items"},fa={class:"title"},_a=_({__name:"VPNavBarTranslations",setup(s){const{theme:t}=L(),{localeLinks:e,currentLang:o}=X({correspondingLink:!0});return(n,i)=>r(e).length&&r(o).label?(a(),y(ye,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(t).langMenuLabel||"Change language"},{default:p(()=>[h("div",ha,[h("p",fa,T(r(o).label),1),(a(!0),u(M,null,E(r(e),l=>(a(),y(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),ma=$(_a,[["__scopeId","data-v-c80d9ad0"]]),ba=s=>(B("data-v-b9c8b02d"),s=s(),H(),s),ka={class:"wrapper"},$a={class:"container"},ga={class:"title"},ya={class:"content"},Pa={class:"content-body"},Sa=ba(()=>h("div",{class:"divider"},[h("div",{class:"divider-line"})],-1)),Va=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:t}=Ae(),{hasSidebar:e}=O(),{hasLocalNav:o}=Fe(),{frontmatter:n}=L(),i=w({});return Te(()=>{i.value={"has-sidebar":e.value,"has-local-nav":o.value,top:n.value.layout==="home"&&t.value===0}}),(l,v)=>(a(),u("div",{class:N(["VPNavBar",i.value])},[h("div",ka,[h("div",$a,[h("div",ga,[b(pa,null,{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),h("div",ya,[h("div",Pa,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),b(ra,{class:"search"}),b(Xn,{class:"menu"}),b(ma,{class:"translations"}),b(Zo,{class:"appearance"}),b(la,{class:"social-links"}),b(Hn,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),b(jn,{class:"hamburger",active:l.isScreenOpen,onClick:v[0]||(v[0]=d=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),Sa],2))}}),La=$(Va,[["__scopeId","data-v-b9c8b02d"]]),Ta={key:0,class:"VPNavScreenAppearance"},wa={class:"text"},Ia=_({__name:"VPNavScreenAppearance",setup(s){const{site:t,theme:e}=L();return(o,n)=>r(t).appearance&&r(t).appearance!=="force-dark"?(a(),u("div",Ta,[h("p",wa,T(r(e).darkModeSwitchLabel||"Appearance"),1),b($e)])):f("",!0)}}),Na=$(Ia,[["__scopeId","data-v-2b89f08b"]]),Ma=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const t=J("close-screen");return(e,o)=>(a(),y(F,{class:"VPNavScreenMenuLink",href:e.item.link,target:e.item.target,rel:e.item.rel,onClick:r(t)},{default:p(()=>[D(T(e.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Aa=$(Ma,[["__scopeId","data-v-d45ba3e8"]]),Ca=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const t=J("close-screen");return(e,o)=>(a(),y(F,{class:"VPNavScreenMenuGroupLink",href:e.item.link,target:e.item.target,rel:e.item.rel,onClick:r(t)},{default:p(()=>[D(T(e.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ge=$(Ca,[["__scopeId","data-v-7179dbb7"]]),Ba={class:"VPNavScreenMenuGroupSection"},Ha={key:0,class:"title"},Ea=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(t,e)=>(a(),u("div",Ba,[t.text?(a(),u("p",Ha,T(t.text),1)):f("",!0),(a(!0),u(M,null,E(t.items,o=>(a(),y(Ge,{key:o.text,item:o},null,8,["item"]))),128))]))}}),Da=$(Ea,[["__scopeId","data-v-4b8941ac"]]),Fa=s=>(B("data-v-c9df2649"),s=s(),H(),s),Oa=["aria-controls","aria-expanded"],Ua=["innerHTML"],ja=Fa(()=>h("span",{class:"vpi-plus button-icon"},null,-1)),Ga=["id"],za={key:1,class:"group"},Ka=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const t=s,e=w(!1),o=g(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function n(){e.value=!e.value}return(i,l)=>(a(),u("div",{class:N(["VPNavScreenMenuGroup",{open:e.value}])},[h("button",{class:"button","aria-controls":o.value,"aria-expanded":e.value,onClick:n},[h("span",{class:"button-text",innerHTML:i.text},null,8,Ua),ja],8,Oa),h("div",{id:o.value,class:"items"},[(a(!0),u(M,null,E(i.items,v=>(a(),u(M,{key:v.text},["link"in v?(a(),u("div",{key:v.text,class:"item"},[b(Ge,{item:v},null,8,["item"])])):(a(),u("div",za,[b(Da,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,Ga)],2))}}),Ra=$(Ka,[["__scopeId","data-v-c9df2649"]]),Wa={key:0,class:"VPNavScreenMenu"},qa=_({__name:"VPNavScreenMenu",setup(s){const{theme:t}=L();return(e,o)=>r(t).nav?(a(),u("nav",Wa,[(a(!0),u(M,null,E(r(t).nav,n=>(a(),u(M,{key:n.text},["link"in n?(a(),y(Aa,{key:0,item:n},null,8,["item"])):(a(),y(Ra,{key:1,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Ja=_({__name:"VPNavScreenSocialLinks",setup(s){const{theme:t}=L();return(e,o)=>r(t).socialLinks?(a(),y(Pe,{key:0,class:"VPNavScreenSocialLinks",links:r(t).socialLinks},null,8,["links"])):f("",!0)}}),ze=s=>(B("data-v-362991c2"),s=s(),H(),s),Ya=ze(()=>h("span",{class:"vpi-languages icon lang"},null,-1)),Xa=ze(()=>h("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Qa={class:"list"},Za=_({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:t,currentLang:e}=X({correspondingLink:!0}),o=w(!1);function n(){o.value=!o.value}return(i,l)=>r(t).length&&r(e).label?(a(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:o.value}])},[h("button",{class:"title",onClick:n},[Ya,D(" "+T(r(e).label)+" ",1),Xa]),h("ul",Qa,[(a(!0),u(M,null,E(r(t),v=>(a(),u("li",{key:v.link,class:"item"},[b(F,{class:"link",href:v.link},{default:p(()=>[D(T(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),xa=$(Za,[["__scopeId","data-v-362991c2"]]),er={class:"container"},tr=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const t=w(null),e=Ce(q?document.body:null);return(o,n)=>(a(),y(pe,{name:"fade",onEnter:n[0]||(n[0]=i=>e.value=!0),onAfterLeave:n[1]||(n[1]=i=>e.value=!1)},{default:p(()=>[o.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[h("div",er,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),b(qa,{class:"menu"}),b(xa,{class:"translations"}),b(Na,{class:"appearance"}),b(Ja,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),sr=$(tr,[["__scopeId","data-v-382f42e9"]]),or={key:0,class:"VPNav"},nr=_({__name:"VPNav",setup(s){const{isScreenOpen:t,closeScreen:e,toggleScreen:o}=Uo(),{frontmatter:n}=L(),i=g(()=>n.value.navbar!==!1);return _e("close-screen",e),te(()=>{q&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,v)=>i.value?(a(),u("header",or,[b(La,{"is-screen-open":r(t),onToggleScreen:r(o)},{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),b(sr,{open:r(t)},{"nav-screen-content-before":p(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),ar=$(nr,[["__scopeId","data-v-f1e365da"]]),Ke=s=>(B("data-v-f24171a4"),s=s(),H(),s),rr=["role","tabindex"],ir=Ke(()=>h("div",{class:"indicator"},null,-1)),lr=Ke(()=>h("span",{class:"vpi-chevron-right caret-icon"},null,-1)),cr=[lr],ur={key:1,class:"items"},dr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const t=s,{collapsed:e,collapsible:o,isLink:n,isActiveLink:i,hasActiveLink:l,hasChildren:v,toggle:d}=Nt(g(()=>t.item)),m=g(()=>v.value?"section":"div"),P=g(()=>n.value?"a":"div"),k=g(()=>v.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),V=g(()=>n.value?void 0:"button"),S=g(()=>[[`level-${t.depth}`],{collapsible:o.value},{collapsed:e.value},{"is-link":n.value},{"is-active":i.value},{"has-active":l.value}]);function A(I){"key"in I&&I.key!=="Enter"||!t.item.link&&d()}function C(){t.item.link&&d()}return(I,Q)=>{const U=K("VPSidebarItem",!0);return a(),y(W(m.value),{class:N(["VPSidebarItem",S.value])},{default:p(()=>[I.item.text?(a(),u("div",Z({key:0,class:"item",role:V.value},rt(I.item.items?{click:A,keydown:A}:{},!0),{tabindex:I.item.items&&0}),[ir,I.item.link?(a(),y(F,{key:0,tag:P.value,class:"link",href:I.item.link,rel:I.item.rel,target:I.item.target},{default:p(()=>[(a(),y(W(k.value),{class:"text",innerHTML:I.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),y(W(k.value),{key:1,class:"text",innerHTML:I.item.text},null,8,["innerHTML"])),I.item.collapsed!=null?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:at(C,["enter"]),tabindex:"0"},cr,32)):f("",!0)],16,rr)):f("",!0),I.item.items&&I.item.items.length?(a(),u("div",ur,[I.depth<5?(a(!0),u(M,{key:0},E(I.item.items,R=>(a(),y(U,{key:R.text,item:R,depth:I.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),vr=$(dr,[["__scopeId","data-v-f24171a4"]]),Re=s=>(B("data-v-ec846e01"),s=s(),H(),s),pr=Re(()=>h("div",{class:"curtain"},null,-1)),hr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},fr=Re(()=>h("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),_r=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:t,hasSidebar:e}=O(),o=s,n=w(null),i=Ce(q?document.body:null);return G([o,n],()=>{var l;o.open?(i.value=!0,(l=n.value)==null||l.focus()):i.value=!1},{immediate:!0,flush:"post"}),(l,v)=>r(e)?(a(),u("aside",{key:0,class:N(["VPSidebar",{open:l.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=it(()=>{},["stop"]))},[pr,h("nav",hr,[fr,c(l.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),u(M,null,E(r(t),d=>(a(),u("div",{key:d.text,class:"group"},[b(vr,{item:d,depth:0},null,8,["item"])]))),128)),c(l.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),mr=$(_r,[["__scopeId","data-v-ec846e01"]]),br=_({__name:"VPSkipLink",setup(s){const t=oe(),e=w();G(()=>t.path,()=>e.value.focus());function o({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),u(M,null,[h("span",{ref_key:"backToTop",ref:e,tabindex:"-1"},null,512),h("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),kr=$(br,[["__scopeId","data-v-c3508ec8"]]),$r=_({__name:"Layout",setup(s){const{isOpen:t,open:e,close:o}=O(),n=oe();G(()=>n.path,o),It(t,o);const{frontmatter:i}=L(),l=Be(),v=g(()=>!!l["home-hero-image"]);return _e("hero-image-slot-exists",v),(d,m)=>{const P=K("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:N(["Layout",r(i).pageClass])},[c(d.$slots,"layout-top",{},void 0,!0),b(kr),b(ht,{class:"backdrop",show:r(t),onClick:r(o)},null,8,["show","onClick"]),b(ar,null,{"nav-bar-title-before":p(()=>[c(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":p(()=>[c(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),b(Oo,{open:r(t),onOpenMenu:r(e)},null,8,["open","onOpenMenu"]),b(mr,{open:r(t)},{"sidebar-nav-before":p(()=>[c(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":p(()=>[c(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),b(go,null,{"page-top":p(()=>[c(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":p(()=>[c(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":p(()=>[c(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":p(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":p(()=>[c(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":p(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),b(Lo),c(d.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),y(P,{key:1}))}}}),gr=$($r,[["__scopeId","data-v-a9a9e638"]]),Ve={Layout:gr,enhanceApp:({app:s})=>{s.component("Badge",dt)}},yr=s=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...i)=>n(...i)};const t=document.documentElement;return{stabilizeScrollPosition:o=>async(...n)=>{const i=o(...n),l=s.value;if(!l)return i;const v=l.offsetTop-t.scrollTop;return await Me(),t.scrollTop=l.offsetTop-v,i}}},We="vitepress:tabSharedState",Y=typeof localStorage<"u"?localStorage:null,qe="vitepress:tabsSharedState",Pr=()=>{const s=Y==null?void 0:Y.getItem(qe);if(s)try{return JSON.parse(s)}catch{}return{}},Sr=s=>{Y&&Y.setItem(qe,JSON.stringify(s))},Vr=s=>{const t=lt({});G(()=>t.content,(e,o)=>{e&&o&&Sr(e)},{deep:!0}),s.provide(We,t)},Lr=(s,t)=>{const e=J(We);if(!e)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");j(()=>{e.content||(e.content=Pr())});const o=w(),n=g({get(){var d;const l=t.value,v=s.value;if(l){const m=(d=e.content)==null?void 0:d[l];if(m&&v.includes(m))return m}else{const m=o.value;if(m)return m}return v[0]},set(l){const v=t.value;v?e.content&&(e.content[v]=l):o.value=l}});return{selected:n,select:l=>{n.value=l}}};let Le=0;const Tr=()=>(Le++,""+Le);function wr(){const s=Be();return g(()=>{var o;const e=(o=s.default)==null?void 0:o.call(s);return e?e.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var i;return(i=n.props)==null?void 0:i.label}):[]})}const Je="vitepress:tabSingleState",Ir=s=>{_e(Je,s)},Nr=()=>{const s=J(Je);if(!s)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return s},Mr={class:"plugin-tabs"},Ar=["id","aria-selected","aria-controls","tabindex","onClick"],Cr=_({__name:"PluginTabs",props:{sharedStateKey:{}},setup(s){const t=s,e=wr(),{selected:o,select:n}=Lr(e,ct(t,"sharedStateKey")),i=w(),{stabilizeScrollPosition:l}=yr(i),v=l(n),d=w([]),m=k=>{var A;const V=e.value.indexOf(o.value);let S;k.key==="ArrowLeft"?S=V>=1?V-1:e.value.length-1:k.key==="ArrowRight"&&(S=V(a(),u("div",Mr,[h("div",{ref_key:"tablist",ref:i,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:m},[(a(!0),u(M,null,E(r(e),S=>(a(),u("button",{id:`tab-${S}-${r(P)}`,ref_for:!0,ref_key:"buttonRefs",ref:d,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===r(o),"aria-controls":`panel-${S}-${r(P)}`,tabindex:S===r(o)?0:-1,onClick:()=>r(v)(S)},T(S),9,Ar))),128))],544),c(k.$slots,"default")]))}}),Br=["id","aria-labelledby"],Hr=_({__name:"PluginTabsTab",props:{label:{}},setup(s){const{uid:t,selected:e}=Nr();return(o,n)=>r(e)===o.label?(a(),u("div",{key:0,id:`panel-${o.label}-${r(t)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${o.label}-${r(t)}`},[c(o.$slots,"default",{},void 0,!0)],8,Br)):f("",!0)}}),Er=$(Hr,[["__scopeId","data-v-9b0d03d2"]]),Dr=s=>{Vr(s),s.component("PluginTabs",Cr),s.component("PluginTabsTab",Er)},Or={extends:Ve,Layout(){return ut(Ve.Layout,null,{})},enhanceApp({app:s,router:t,siteData:e}){Dr(s)}};export{Or as R,Qn as c,L as u}; +import{d as _,o as a,c as u,r as c,n as N,a as D,t as T,b as y,w as p,T as pe,e as f,_ as $,u as Ye,i as Xe,f as Qe,g as he,h as w,j as q,k as g,l as j,m as h,p as r,q as B,s as H,v as z,x as le,y as G,z as te,A as fe,B as Te,C as Ze,D as xe,E as K,F as M,G as E,H as we,I as se,J as b,K as W,L as Ie,M as oe,N as Z,O as J,P as et,Q as Ne,R as tt,S as ce,U as Me,V as Ae,W as st,X as ot,Y as nt,Z as Ce,$ as _e,a0 as at,a1 as rt,a2 as it,a3 as Be,a4 as lt,a5 as ct,a6 as ut}from"./framework.RTxADYK2.js";const dt=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(t,e)=>(a(),u("span",{class:N(["VPBadge",t.type])},[c(t.$slots,"default",{},()=>[D(T(t.text),1)])],2))}}),vt={key:0,class:"VPBackdrop"},pt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(t,e)=>(a(),y(pe,{name:"fade"},{default:p(()=>[t.show?(a(),u("div",vt)):f("",!0)]),_:1}))}}),ht=$(pt,[["__scopeId","data-v-b06cdb19"]]),L=Ye;function ft(s,t){let e,o=!1;return()=>{e&&clearTimeout(e),o?e=setTimeout(s,t):(s(),(o=!0)&&setTimeout(()=>o=!1,t))}}function ue(s){return/^\//.test(s)?s:`/${s}`}function me(s){const{pathname:t,search:e,hash:o,protocol:n}=new URL(s,"http://a.com");if(Xe(s)||s.startsWith("#")||!n.startsWith("http")||!Qe(t))return s;const{site:i}=L(),l=t.endsWith("/")||t.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${e}${o}`);return he(l)}const be=w(q?location.hash:"");q&&window.addEventListener("hashchange",()=>{be.value=location.hash});function X({removeCurrent:s=!0,correspondingLink:t=!1}={}){const{site:e,localeIndex:o,page:n,theme:i}=L(),l=g(()=>{var d,m;return{label:(d=e.value.locales[o.value])==null?void 0:d.label,link:((m=e.value.locales[o.value])==null?void 0:m.link)||(o.value==="root"?"/":`/${o.value}/`)}});return{localeLinks:g(()=>Object.entries(e.value.locales).flatMap(([d,m])=>s&&l.value.label===m.label?[]:{text:m.label,link:_t(m.link||(d==="root"?"/":`/${d}/`),i.value.i18nRouting!==!1&&t,n.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+be.value})),currentLang:l}}function _t(s,t,e,o){return t?s.replace(/\/$/,"")+ue(e.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):s}const mt=s=>(B("data-v-792811ca"),s=s(),H(),s),bt={class:"NotFound"},kt={class:"code"},$t={class:"title"},gt=mt(()=>h("div",{class:"divider"},null,-1)),yt={class:"quote"},Pt={class:"action"},St=["href","aria-label"],Vt=_({__name:"NotFound",setup(s){const{site:t,theme:e}=L(),{localeLinks:o}=X({removeCurrent:!1}),n=w("/");return j(()=>{var l;const i=window.location.pathname.replace(t.value.base,"").replace(/(^.*?\/).*$/,"/$1");o.value.length&&(n.value=((l=o.value.find(({link:v})=>v.startsWith(i)))==null?void 0:l.link)||o.value[0].link)}),(i,l)=>{var v,d,m,P,k;return a(),u("div",bt,[h("p",kt,T(((v=r(e).notFound)==null?void 0:v.code)??"404"),1),h("h1",$t,T(((d=r(e).notFound)==null?void 0:d.title)??"PAGE NOT FOUND"),1),gt,h("blockquote",yt,T(((m=r(e).notFound)==null?void 0:m.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),h("div",Pt,[h("a",{class:"link",href:r(he)(n.value),"aria-label":((P=r(e).notFound)==null?void 0:P.linkLabel)??"go to home"},T(((k=r(e).notFound)==null?void 0:k.linkText)??"Take me home"),9,St)])])}}}),Lt=$(Vt,[["__scopeId","data-v-792811ca"]]);function He(s,t){if(Array.isArray(s))return x(s);if(s==null)return[];t=ue(t);const e=Object.keys(s).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>t.startsWith(ue(n))),o=e?s[e]:[];return Array.isArray(o)?x(o):x(o.items,o.base)}function Tt(s){const t=[];let e=0;for(const o in s){const n=s[o];if(n.items){e=t.push(n);continue}t[e]||t.push({items:[]}),t[e].items.push(n)}return t}function wt(s){const t=[];function e(o){for(const n of o)n.text&&n.link&&t.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&e(n.items)}return e(s),t}function de(s,t){return Array.isArray(t)?t.some(e=>de(s,e)):z(s,t.link)?!0:t.items?de(s,t.items):!1}function x(s,t){return[...s].map(e=>{const o={...e},n=o.base||t;return n&&o.link&&(o.link=n+o.link),o.items&&(o.items=x(o.items,n)),o})}function O(){const{frontmatter:s,page:t,theme:e}=L(),o=le("(min-width: 960px)"),n=w(!1),i=g(()=>{const C=e.value.sidebar,I=t.value.relativePath;return C?He(C,I):[]}),l=w(i.value);G(i,(C,I)=>{JSON.stringify(C)!==JSON.stringify(I)&&(l.value=i.value)});const v=g(()=>s.value.sidebar!==!1&&l.value.length>0&&s.value.layout!=="home"),d=g(()=>m?s.value.aside==null?e.value.aside==="left":s.value.aside==="left":!1),m=g(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:e.value.aside!==!1),P=g(()=>v.value&&o.value),k=g(()=>v.value?Tt(l.value):[]);function V(){n.value=!0}function S(){n.value=!1}function A(){n.value?S():V()}return{isOpen:n,sidebar:l,sidebarGroups:k,hasSidebar:v,hasAside:m,leftAside:d,isSidebarEnabled:P,open:V,close:S,toggle:A}}function It(s,t){let e;te(()=>{e=s.value?document.activeElement:void 0}),j(()=>{window.addEventListener("keyup",o)}),fe(()=>{window.removeEventListener("keyup",o)});function o(n){n.key==="Escape"&&s.value&&(t(),e==null||e.focus())}}function Nt(s){const{page:t}=L(),e=w(!1),o=g(()=>s.value.collapsed!=null),n=g(()=>!!s.value.link),i=w(!1),l=()=>{i.value=z(t.value.relativePath,s.value.link)};G([t,s,be],l),j(l);const v=g(()=>i.value?!0:s.value.items?de(t.value.relativePath,s.value.items):!1),d=g(()=>!!(s.value.items&&s.value.items.length));te(()=>{e.value=!!(o.value&&s.value.collapsed)}),Te(()=>{(i.value||v.value)&&(e.value=!1)});function m(){o.value&&(e.value=!e.value)}return{collapsed:e,collapsible:o,isLink:n,isActiveLink:i,hasActiveLink:v,hasChildren:d,toggle:m}}function Mt(){const{hasSidebar:s}=O(),t=le("(min-width: 960px)"),e=le("(min-width: 1280px)");return{isAsideEnabled:g(()=>!e.value&&!t.value?!1:s.value?e.value:t.value)}}const ve=[];function Ee(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function ke(s){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(e=>e.id&&e.hasChildNodes()).map(e=>{const o=Number(e.tagName[1]);return{element:e,title:At(e),link:"#"+e.id,level:o}});return Ct(t,s)}function At(s){let t="";for(const e of s.childNodes)if(e.nodeType===1){if(e.classList.contains("VPBadge")||e.classList.contains("header-anchor")||e.classList.contains("ignore-header"))continue;t+=e.textContent}else e.nodeType===3&&(t+=e.textContent);return t.trim()}function Ct(s,t){if(t===!1)return[];const e=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[o,n]=typeof e=="number"?[e,e]:e==="deep"?[2,6]:e;s=s.filter(l=>l.level>=o&&l.level<=n),ve.length=0;for(const{element:l,link:v}of s)ve.push({element:l,link:v});const i=[];e:for(let l=0;l=0;d--){const m=s[d];if(m.level{requestAnimationFrame(i),window.addEventListener("scroll",o)}),Ze(()=>{l(location.hash)}),fe(()=>{window.removeEventListener("scroll",o)});function i(){if(!e.value)return;const v=window.scrollY,d=window.innerHeight,m=document.body.offsetHeight,P=Math.abs(v+d-m)<1,k=ve.map(({element:S,link:A})=>({link:A,top:Ht(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!k.length){l(null);return}if(v<1){l(null);return}if(P){l(k[k.length-1].link);return}let V=null;for(const{link:S,top:A}of k){if(A>v+xe()+4)break;V=S}l(V)}function l(v){n&&n.classList.remove("active"),v==null?n=null:n=s.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const d=n;d?(d.classList.add("active"),t.value.style.top=d.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function Ht(s){let t=0;for(;s!==document.body;){if(s===null)return NaN;t+=s.offsetTop,s=s.offsetParent}return t}const Et=["href","title"],Dt=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(s){function t({target:e}){const o=e.href.split("#")[1],n=document.getElementById(decodeURIComponent(o));n==null||n.focus({preventScroll:!0})}return(e,o)=>{const n=K("VPDocOutlineItem",!0);return a(),u("ul",{class:N(["VPDocOutlineItem",e.root?"root":"nested"])},[(a(!0),u(M,null,E(e.headers,({children:i,link:l,title:v})=>(a(),u("li",null,[h("a",{class:"outline-link",href:l,onClick:t,title:v},T(v),9,Et),i!=null&&i.length?(a(),y(n,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),De=$(Dt,[["__scopeId","data-v-3f927ebe"]]),Ft=s=>(B("data-v-c14bfc45"),s=s(),H(),s),Ot={class:"content"},Ut={class:"outline-title",role:"heading","aria-level":"2"},jt={"aria-labelledby":"doc-outline-aria-label"},Gt=Ft(()=>h("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),zt=_({__name:"VPDocAsideOutline",setup(s){const{frontmatter:t,theme:e}=L(),o=we([]);se(()=>{o.value=ke(t.value.outline??e.value.outline)});const n=w(),i=w();return Bt(n,i),(l,v)=>(a(),u("div",{class:N(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:n,role:"navigation"},[h("div",Ot,[h("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),h("div",Ut,T(r(Ee)(r(e))),1),h("nav",jt,[Gt,b(De,{headers:o.value,root:!0},null,8,["headers"])])])],2))}}),Kt=$(zt,[["__scopeId","data-v-c14bfc45"]]),Rt={class:"VPDocAsideCarbonAds"},Wt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const t=()=>null;return(e,o)=>(a(),u("div",Rt,[b(r(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),qt=s=>(B("data-v-6d7b3c46"),s=s(),H(),s),Jt={class:"VPDocAside"},Yt=qt(()=>h("div",{class:"spacer"},null,-1)),Xt=_({__name:"VPDocAside",setup(s){const{theme:t}=L();return(e,o)=>(a(),u("div",Jt,[c(e.$slots,"aside-top",{},void 0,!0),c(e.$slots,"aside-outline-before",{},void 0,!0),b(Kt),c(e.$slots,"aside-outline-after",{},void 0,!0),Yt,c(e.$slots,"aside-ads-before",{},void 0,!0),r(t).carbonAds?(a(),y(Wt,{key:0,"carbon-ads":r(t).carbonAds},null,8,["carbon-ads"])):f("",!0),c(e.$slots,"aside-ads-after",{},void 0,!0),c(e.$slots,"aside-bottom",{},void 0,!0)]))}}),Qt=$(Xt,[["__scopeId","data-v-6d7b3c46"]]);function Zt(){const{theme:s,page:t}=L();return g(()=>{const{text:e="Edit this page",pattern:o=""}=s.value.editLink||{};let n;return typeof o=="function"?n=o(t.value):n=o.replace(/:path/g,t.value.filePath),{url:n,text:e}})}function xt(){const{page:s,theme:t,frontmatter:e}=L();return g(()=>{var d,m,P,k,V,S,A,C;const o=He(t.value.sidebar,s.value.relativePath),n=wt(o),i=n.findIndex(I=>z(s.value.relativePath,I.link)),l=((d=t.value.docFooter)==null?void 0:d.prev)===!1&&!e.value.prev||e.value.prev===!1,v=((m=t.value.docFooter)==null?void 0:m.next)===!1&&!e.value.next||e.value.next===!1;return{prev:l?void 0:{text:(typeof e.value.prev=="string"?e.value.prev:typeof e.value.prev=="object"?e.value.prev.text:void 0)??((P=n[i-1])==null?void 0:P.docFooterText)??((k=n[i-1])==null?void 0:k.text),link:(typeof e.value.prev=="object"?e.value.prev.link:void 0)??((V=n[i-1])==null?void 0:V.link)},next:v?void 0:{text:(typeof e.value.next=="string"?e.value.next:typeof e.value.next=="object"?e.value.next.text:void 0)??((S=n[i+1])==null?void 0:S.docFooterText)??((A=n[i+1])==null?void 0:A.text),link:(typeof e.value.next=="object"?e.value.next.link:void 0)??((C=n[i+1])==null?void 0:C.link)}}})}const F=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const t=s,e=g(()=>t.tag??(t.href?"a":"span")),o=g(()=>t.href&&Ie.test(t.href));return(n,i)=>(a(),y(W(e.value),{class:N(["VPLink",{link:n.href,"vp-external-link-icon":o.value,"no-icon":n.noIcon}]),href:n.href?r(me)(n.href):void 0,target:n.target??(o.value?"_blank":void 0),rel:n.rel??(o.value?"noreferrer":void 0)},{default:p(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),es={class:"VPLastUpdated"},ts=["datetime"],ss=_({__name:"VPDocFooterLastUpdated",setup(s){const{theme:t,page:e,frontmatter:o,lang:n}=L(),i=g(()=>new Date(o.value.lastUpdated??e.value.lastUpdated)),l=g(()=>i.value.toISOString()),v=w("");return j(()=>{te(()=>{var d,m,P;v.value=new Intl.DateTimeFormat((m=(d=t.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&m.forceLocale?n.value:void 0,((P=t.value.lastUpdated)==null?void 0:P.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(i.value)})}),(d,m)=>{var P;return a(),u("p",es,[D(T(((P=r(t).lastUpdated)==null?void 0:P.text)||r(t).lastUpdatedText||"Last updated")+": ",1),h("time",{datetime:l.value},T(v.value),9,ts)])}}}),os=$(ss,[["__scopeId","data-v-9da12f1d"]]),ns=s=>(B("data-v-87be45d1"),s=s(),H(),s),as={key:0,class:"VPDocFooter"},rs={key:0,class:"edit-info"},is={key:0,class:"edit-link"},ls=ns(()=>h("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),cs={key:1,class:"last-updated"},us={key:1,class:"prev-next"},ds={class:"pager"},vs=["innerHTML"],ps=["innerHTML"],hs={class:"pager"},fs=["innerHTML"],_s=["innerHTML"],ms=_({__name:"VPDocFooter",setup(s){const{theme:t,page:e,frontmatter:o}=L(),n=Zt(),i=xt(),l=g(()=>t.value.editLink&&o.value.editLink!==!1),v=g(()=>e.value.lastUpdated&&o.value.lastUpdated!==!1),d=g(()=>l.value||v.value||i.value.prev||i.value.next);return(m,P)=>{var k,V,S,A;return d.value?(a(),u("footer",as,[c(m.$slots,"doc-footer-before",{},void 0,!0),l.value||v.value?(a(),u("div",rs,[l.value?(a(),u("div",is,[b(F,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:p(()=>[ls,D(" "+T(r(n).text),1)]),_:1},8,["href"])])):f("",!0),v.value?(a(),u("div",cs,[b(os)])):f("",!0)])):f("",!0),(k=r(i).prev)!=null&&k.link||(V=r(i).next)!=null&&V.link?(a(),u("nav",us,[h("div",ds,[(S=r(i).prev)!=null&&S.link?(a(),y(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:p(()=>{var C;return[h("span",{class:"desc",innerHTML:((C=r(t).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,vs),h("span",{class:"title",innerHTML:r(i).prev.text},null,8,ps)]}),_:1},8,["href"])):f("",!0)]),h("div",hs,[(A=r(i).next)!=null&&A.link?(a(),y(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:p(()=>{var C;return[h("span",{class:"desc",innerHTML:((C=r(t).docFooter)==null?void 0:C.next)||"Next page"},null,8,fs),h("span",{class:"title",innerHTML:r(i).next.text},null,8,_s)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),bs=$(ms,[["__scopeId","data-v-87be45d1"]]),ks=s=>(B("data-v-83890dd9"),s=s(),H(),s),$s={class:"container"},gs=ks(()=>h("div",{class:"aside-curtain"},null,-1)),ys={class:"aside-container"},Ps={class:"aside-content"},Ss={class:"content"},Vs={class:"content-container"},Ls={class:"main"},Ts=_({__name:"VPDoc",setup(s){const{theme:t}=L(),e=oe(),{hasSidebar:o,hasAside:n,leftAside:i}=O(),l=g(()=>e.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,d)=>{const m=K("Content");return a(),u("div",{class:N(["VPDoc",{"has-sidebar":r(o),"has-aside":r(n)}])},[c(v.$slots,"doc-top",{},void 0,!0),h("div",$s,[r(n)?(a(),u("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[gs,h("div",ys,[h("div",Ps,[b(Qt,null,{"aside-top":p(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),h("div",Ss,[h("div",Vs,[c(v.$slots,"doc-before",{},void 0,!0),h("main",Ls,[b(m,{class:N(["vp-doc",[l.value,r(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),b(bs,null,{"doc-footer-before":p(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(v.$slots,"doc-after",{},void 0,!0)])])]),c(v.$slots,"doc-bottom",{},void 0,!0)],2)}}}),ws=$(Ts,[["__scopeId","data-v-83890dd9"]]),Is=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const t=s,e=g(()=>t.href&&Ie.test(t.href)),o=g(()=>t.tag||t.href?"a":"button");return(n,i)=>(a(),y(W(o.value),{class:N(["VPButton",[n.size,n.theme]]),href:n.href?r(me)(n.href):void 0,target:t.target??(e.value?"_blank":void 0),rel:t.rel??(e.value?"noreferrer":void 0)},{default:p(()=>[D(T(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),Ns=$(Is,[["__scopeId","data-v-14206e74"]]),Ms=["src","alt"],As=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(t,e)=>{const o=K("VPImage",!0);return t.image?(a(),u(M,{key:0},[typeof t.image=="string"||"src"in t.image?(a(),u("img",Z({key:0,class:"VPImage"},typeof t.image=="string"?t.$attrs:{...t.image,...t.$attrs},{src:r(he)(typeof t.image=="string"?t.image:t.image.src),alt:t.alt??(typeof t.image=="string"?"":t.image.alt||"")}),null,16,Ms)):(a(),u(M,{key:1},[b(o,Z({class:"dark",image:t.image.dark,alt:t.image.alt},t.$attrs),null,16,["image","alt"]),b(o,Z({class:"light",image:t.image.light,alt:t.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),ee=$(As,[["__scopeId","data-v-35a7d0b8"]]),Cs=s=>(B("data-v-955009fc"),s=s(),H(),s),Bs={class:"container"},Hs={class:"main"},Es={key:0,class:"name"},Ds=["innerHTML"],Fs=["innerHTML"],Os=["innerHTML"],Us={key:0,class:"actions"},js={key:0,class:"image"},Gs={class:"image-container"},zs=Cs(()=>h("div",{class:"image-bg"},null,-1)),Ks=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const t=J("hero-image-slot-exists");return(e,o)=>(a(),u("div",{class:N(["VPHero",{"has-image":e.image||r(t)}])},[h("div",Bs,[h("div",Hs,[c(e.$slots,"home-hero-info-before",{},void 0,!0),c(e.$slots,"home-hero-info",{},()=>[e.name?(a(),u("h1",Es,[h("span",{innerHTML:e.name,class:"clip"},null,8,Ds)])):f("",!0),e.text?(a(),u("p",{key:1,innerHTML:e.text,class:"text"},null,8,Fs)):f("",!0),e.tagline?(a(),u("p",{key:2,innerHTML:e.tagline,class:"tagline"},null,8,Os)):f("",!0)],!0),c(e.$slots,"home-hero-info-after",{},void 0,!0),e.actions?(a(),u("div",Us,[(a(!0),u(M,null,E(e.actions,n=>(a(),u("div",{key:n.link,class:"action"},[b(Ns,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),c(e.$slots,"home-hero-actions-after",{},void 0,!0)]),e.image||r(t)?(a(),u("div",js,[h("div",Gs,[zs,c(e.$slots,"home-hero-image",{},()=>[e.image?(a(),y(ee,{key:0,class:"image-src",image:e.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Rs=$(Ks,[["__scopeId","data-v-955009fc"]]),Ws=_({__name:"VPHomeHero",setup(s){const{frontmatter:t}=L();return(e,o)=>r(t).hero?(a(),y(Rs,{key:0,class:"VPHomeHero",name:r(t).hero.name,text:r(t).hero.text,tagline:r(t).hero.tagline,image:r(t).hero.image,actions:r(t).hero.actions},{"home-hero-info-before":p(()=>[c(e.$slots,"home-hero-info-before")]),"home-hero-info":p(()=>[c(e.$slots,"home-hero-info")]),"home-hero-info-after":p(()=>[c(e.$slots,"home-hero-info-after")]),"home-hero-actions-after":p(()=>[c(e.$slots,"home-hero-actions-after")]),"home-hero-image":p(()=>[c(e.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),qs=s=>(B("data-v-f5e9645b"),s=s(),H(),s),Js={class:"box"},Ys={key:0,class:"icon"},Xs=["innerHTML"],Qs=["innerHTML"],Zs=["innerHTML"],xs={key:4,class:"link-text"},eo={class:"link-text-value"},to=qs(()=>h("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),so=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(t,e)=>(a(),y(F,{class:"VPFeature",href:t.link,rel:t.rel,target:t.target,"no-icon":!0,tag:t.link?"a":"div"},{default:p(()=>[h("article",Js,[typeof t.icon=="object"&&t.icon.wrap?(a(),u("div",Ys,[b(ee,{image:t.icon,alt:t.icon.alt,height:t.icon.height||48,width:t.icon.width||48},null,8,["image","alt","height","width"])])):typeof t.icon=="object"?(a(),y(ee,{key:1,image:t.icon,alt:t.icon.alt,height:t.icon.height||48,width:t.icon.width||48},null,8,["image","alt","height","width"])):t.icon?(a(),u("div",{key:2,class:"icon",innerHTML:t.icon},null,8,Xs)):f("",!0),h("h2",{class:"title",innerHTML:t.title},null,8,Qs),t.details?(a(),u("p",{key:3,class:"details",innerHTML:t.details},null,8,Zs)):f("",!0),t.linkText?(a(),u("div",xs,[h("p",eo,[D(T(t.linkText)+" ",1),to])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),oo=$(so,[["__scopeId","data-v-f5e9645b"]]),no={key:0,class:"VPFeatures"},ao={class:"container"},ro={class:"items"},io=_({__name:"VPFeatures",props:{features:{}},setup(s){const t=s,e=g(()=>{const o=t.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,n)=>o.features?(a(),u("div",no,[h("div",ao,[h("div",ro,[(a(!0),u(M,null,E(o.features,i=>(a(),u("div",{key:i.title,class:N(["item",[e.value]])},[b(oo,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),lo=$(io,[["__scopeId","data-v-d0a190d7"]]),co=_({__name:"VPHomeFeatures",setup(s){const{frontmatter:t}=L();return(e,o)=>r(t).features?(a(),y(lo,{key:0,class:"VPHomeFeatures",features:r(t).features},null,8,["features"])):f("",!0)}}),uo=_({__name:"VPHomeContent",setup(s){const{width:t}=et({includeScrollbar:!1});return(e,o)=>(a(),u("div",{class:"vp-doc container",style:Ne(r(t)?{"--vp-offset":`calc(50% - ${r(t)/2}px)`}:{})},[c(e.$slots,"default",{},void 0,!0)],4))}}),vo=$(uo,[["__scopeId","data-v-c43247eb"]]),po={class:"VPHome"},ho=_({__name:"VPHome",setup(s){const{frontmatter:t}=L();return(e,o)=>{const n=K("Content");return a(),u("div",po,[c(e.$slots,"home-hero-before",{},void 0,!0),b(Ws,null,{"home-hero-info-before":p(()=>[c(e.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(e.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(e.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(e.$slots,"home-hero-after",{},void 0,!0),c(e.$slots,"home-features-before",{},void 0,!0),b(co),c(e.$slots,"home-features-after",{},void 0,!0),r(t).markdownStyles!==!1?(a(),y(vo,{key:0},{default:p(()=>[b(n)]),_:1})):(a(),y(n,{key:1}))])}}}),fo=$(ho,[["__scopeId","data-v-cbb6ec48"]]),_o={},mo={class:"VPPage"};function bo(s,t){const e=K("Content");return a(),u("div",mo,[c(s.$slots,"page-top"),b(e),c(s.$slots,"page-bottom")])}const ko=$(_o,[["render",bo]]),$o=_({__name:"VPContent",setup(s){const{page:t,frontmatter:e}=L(),{hasSidebar:o}=O();return(n,i)=>(a(),u("div",{class:N(["VPContent",{"has-sidebar":r(o),"is-home":r(e).layout==="home"}]),id:"VPContent"},[r(t).isNotFound?c(n.$slots,"not-found",{key:0},()=>[b(Lt)],!0):r(e).layout==="page"?(a(),y(ko,{key:1},{"page-top":p(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(e).layout==="home"?(a(),y(fo,{key:2},{"home-hero-before":p(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(e).layout&&r(e).layout!=="doc"?(a(),y(W(r(e).layout),{key:3})):(a(),y(ws,{key:4},{"doc-top":p(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":p(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":p(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":p(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":p(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),go=$($o,[["__scopeId","data-v-91765379"]]),yo={class:"container"},Po=["innerHTML"],So=["innerHTML"],Vo=_({__name:"VPFooter",setup(s){const{theme:t,frontmatter:e}=L(),{hasSidebar:o}=O();return(n,i)=>r(t).footer&&r(e).footer!==!1?(a(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(o)}])},[h("div",yo,[r(t).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(t).footer.message},null,8,Po)):f("",!0),r(t).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(t).footer.copyright},null,8,So)):f("",!0)])],2)):f("",!0)}}),Lo=$(Vo,[["__scopeId","data-v-c970a860"]]);function Fe(){const{theme:s,frontmatter:t}=L(),e=we([]),o=g(()=>e.value.length>0);return se(()=>{e.value=ke(t.value.outline??s.value.outline)}),{headers:e,hasLocalNav:o}}const To=s=>(B("data-v-c9ba27ad"),s=s(),H(),s),wo=To(()=>h("span",{class:"vpi-chevron-right icon"},null,-1)),Io={class:"header"},No={class:"outline"},Mo=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const t=s,{theme:e}=L(),o=w(!1),n=w(0),i=w(),l=w();tt(i,()=>{o.value=!1}),ce("Escape",()=>{o.value=!1}),se(()=>{o.value=!1});function v(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function d(P){P.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Me(()=>{o.value=!1}))}function m(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(P,k)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Ne({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[P.headers.length>0?(a(),u("button",{key:0,onClick:v,class:N({open:o.value})},[D(T(r(Ee)(r(e)))+" ",1),wo],2)):(a(),u("button",{key:1,onClick:m},T(r(e).returnToTopLabel||"Return to top"),1)),b(pe,{name:"flyout"},{default:p(()=>[o.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:d},[h("div",Io,[h("a",{class:"top-link",href:"#",onClick:m},T(r(e).returnToTopLabel||"Return to top"),1)]),h("div",No,[b(De,{headers:P.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),Ao=$(Mo,[["__scopeId","data-v-c9ba27ad"]]),Co=s=>(B("data-v-070ab83d"),s=s(),H(),s),Bo={class:"container"},Ho=["aria-expanded"],Eo=Co(()=>h("span",{class:"vpi-align-left menu-icon"},null,-1)),Do={class:"menu-text"},Fo=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:t,frontmatter:e}=L(),{hasSidebar:o}=O(),{headers:n}=Fe(),{y:i}=Ae(),l=w(0);j(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),se(()=>{n.value=ke(e.value.outline??t.value.outline)});const v=g(()=>n.value.length===0),d=g(()=>v.value&&!o.value),m=g(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:v.value,fixed:d.value}));return(P,k)=>r(e).layout!=="home"&&(!d.value||r(i)>=l.value)?(a(),u("div",{key:0,class:N(m.value)},[h("div",Bo,[r(o)?(a(),u("button",{key:0,class:"menu","aria-expanded":P.open,"aria-controls":"VPSidebarNav",onClick:k[0]||(k[0]=V=>P.$emit("open-menu"))},[Eo,h("span",Do,T(r(t).sidebarMenuLabel||"Menu"),1)],8,Ho)):f("",!0),b(Ao,{headers:r(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Oo=$(Fo,[["__scopeId","data-v-070ab83d"]]);function Uo(){const s=w(!1);function t(){s.value=!0,window.addEventListener("resize",n)}function e(){s.value=!1,window.removeEventListener("resize",n)}function o(){s.value?e():t()}function n(){window.outerWidth>=768&&e()}const i=oe();return G(()=>i.path,e),{isScreenOpen:s,openScreen:t,closeScreen:e,toggleScreen:o}}const jo={},Go={class:"VPSwitch",type:"button",role:"switch"},zo={class:"check"},Ko={key:0,class:"icon"};function Ro(s,t){return a(),u("button",Go,[h("span",zo,[s.$slots.default?(a(),u("span",Ko,[c(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Wo=$(jo,[["render",Ro],["__scopeId","data-v-4a1c76db"]]),Oe=s=>(B("data-v-b79b56d4"),s=s(),H(),s),qo=Oe(()=>h("span",{class:"vpi-sun sun"},null,-1)),Jo=Oe(()=>h("span",{class:"vpi-moon moon"},null,-1)),Yo=_({__name:"VPSwitchAppearance",setup(s){const{isDark:t,theme:e}=L(),o=J("toggle-appearance",()=>{t.value=!t.value}),n=g(()=>t.value?e.value.lightModeSwitchTitle||"Switch to light theme":e.value.darkModeSwitchTitle||"Switch to dark theme");return(i,l)=>(a(),y(Wo,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(t),onClick:r(o)},{default:p(()=>[qo,Jo]),_:1},8,["title","aria-checked","onClick"]))}}),$e=$(Yo,[["__scopeId","data-v-b79b56d4"]]),Xo={key:0,class:"VPNavBarAppearance"},Qo=_({__name:"VPNavBarAppearance",setup(s){const{site:t}=L();return(e,o)=>r(t).appearance&&r(t).appearance!=="force-dark"?(a(),u("div",Xo,[b($e)])):f("",!0)}}),Zo=$(Qo,[["__scopeId","data-v-ead91a81"]]),ge=w();let Ue=!1,ie=0;function xo(s){const t=w(!1);if(q){!Ue&&en(),ie++;const e=G(ge,o=>{var n,i,l;o===s.el.value||(n=s.el.value)!=null&&n.contains(o)?(t.value=!0,(i=s.onFocus)==null||i.call(s)):(t.value=!1,(l=s.onBlur)==null||l.call(s))});fe(()=>{e(),ie--,ie||tn()})}return st(t)}function en(){document.addEventListener("focusin",je),Ue=!0,ge.value=document.activeElement}function tn(){document.removeEventListener("focusin",je)}function je(){ge.value=document.activeElement}const sn={class:"VPMenuLink"},on=_({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:t}=L();return(e,o)=>(a(),u("div",sn,[b(F,{class:N({active:r(z)(r(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel},{default:p(()=>[D(T(e.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),ne=$(on,[["__scopeId","data-v-8b74d055"]]),nn={class:"VPMenuGroup"},an={key:0,class:"title"},rn=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(t,e)=>(a(),u("div",nn,[t.text?(a(),u("p",an,T(t.text),1)):f("",!0),(a(!0),u(M,null,E(t.items,o=>(a(),u(M,null,["link"in o?(a(),y(ne,{key:0,item:o},null,8,["item"])):f("",!0)],64))),256))]))}}),ln=$(rn,[["__scopeId","data-v-48c802d0"]]),cn={class:"VPMenu"},un={key:0,class:"items"},dn=_({__name:"VPMenu",props:{items:{}},setup(s){return(t,e)=>(a(),u("div",cn,[t.items?(a(),u("div",un,[(a(!0),u(M,null,E(t.items,o=>(a(),u(M,{key:o.text},["link"in o?(a(),y(ne,{key:0,item:o},null,8,["item"])):(a(),y(ln,{key:1,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):f("",!0),c(t.$slots,"default",{},void 0,!0)]))}}),vn=$(dn,[["__scopeId","data-v-97491713"]]),pn=s=>(B("data-v-e5380155"),s=s(),H(),s),hn=["aria-expanded","aria-label"],fn={key:0,class:"text"},_n=["innerHTML"],mn=pn(()=>h("span",{class:"vpi-chevron-down text-icon"},null,-1)),bn={key:1,class:"vpi-more-horizontal icon"},kn={class:"menu"},$n=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const t=w(!1),e=w();xo({el:e,onBlur:o});function o(){t.value=!1}return(n,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:e,onMouseenter:i[1]||(i[1]=l=>t.value=!0),onMouseleave:i[2]||(i[2]=l=>t.value=!1)},[h("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":n.label,onClick:i[0]||(i[0]=l=>t.value=!t.value)},[n.button||n.icon?(a(),u("span",fn,[n.icon?(a(),u("span",{key:0,class:N([n.icon,"option-icon"])},null,2)):f("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,_n)):f("",!0),mn])):(a(),u("span",bn))],8,hn),h("div",kn,[b(vn,{items:n.items},{default:p(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ye=$($n,[["__scopeId","data-v-e5380155"]]),gn=["href","aria-label","innerHTML"],yn=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const t=s,e=g(()=>typeof t.icon=="object"?t.icon.svg:``);return(o,n)=>(a(),u("a",{class:"VPSocialLink no-icon",href:o.link,"aria-label":o.ariaLabel??(typeof o.icon=="string"?o.icon:""),target:"_blank",rel:"noopener",innerHTML:e.value},null,8,gn))}}),Pn=$(yn,[["__scopeId","data-v-717b8b75"]]),Sn={class:"VPSocialLinks"},Vn=_({__name:"VPSocialLinks",props:{links:{}},setup(s){return(t,e)=>(a(),u("div",Sn,[(a(!0),u(M,null,E(t.links,({link:o,icon:n,ariaLabel:i})=>(a(),y(Pn,{key:o,icon:n,link:o,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),Pe=$(Vn,[["__scopeId","data-v-ee7a9424"]]),Ln={key:0,class:"group translations"},Tn={class:"trans-title"},wn={key:1,class:"group"},In={class:"item appearance"},Nn={class:"label"},Mn={class:"appearance-action"},An={key:2,class:"group"},Cn={class:"item social-links"},Bn=_({__name:"VPNavBarExtra",setup(s){const{site:t,theme:e}=L(),{localeLinks:o,currentLang:n}=X({correspondingLink:!0}),i=g(()=>o.value.length&&n.value.label||t.value.appearance||e.value.socialLinks);return(l,v)=>i.value?(a(),y(ye,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:p(()=>[r(o).length&&r(n).label?(a(),u("div",Ln,[h("p",Tn,T(r(n).label),1),(a(!0),u(M,null,E(r(o),d=>(a(),y(ne,{key:d.link,item:d},null,8,["item"]))),128))])):f("",!0),r(t).appearance&&r(t).appearance!=="force-dark"?(a(),u("div",wn,[h("div",In,[h("p",Nn,T(r(e).darkModeSwitchLabel||"Appearance"),1),h("div",Mn,[b($e)])])])):f("",!0),r(e).socialLinks?(a(),u("div",An,[h("div",Cn,[b(Pe,{class:"social-links-list",links:r(e).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),Hn=$(Bn,[["__scopeId","data-v-9b536d0b"]]),En=s=>(B("data-v-5dea55bf"),s=s(),H(),s),Dn=["aria-expanded"],Fn=En(()=>h("span",{class:"container"},[h("span",{class:"top"}),h("span",{class:"middle"}),h("span",{class:"bottom"})],-1)),On=[Fn],Un=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(t,e)=>(a(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:t.active}]),"aria-label":"mobile navigation","aria-expanded":t.active,"aria-controls":"VPNavScreen",onClick:e[0]||(e[0]=o=>t.$emit("click"))},On,10,Dn))}}),jn=$(Un,[["__scopeId","data-v-5dea55bf"]]),Gn=["innerHTML"],zn=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:t}=L();return(e,o)=>(a(),y(F,{class:N({VPNavBarMenuLink:!0,active:r(z)(r(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,tabindex:"0"},{default:p(()=>[h("span",{innerHTML:e.item.text},null,8,Gn)]),_:1},8,["class","href","target","rel"]))}}),Kn=$(zn,[["__scopeId","data-v-2781b5e7"]]),Rn=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const t=s,{page:e}=L(),o=i=>"link"in i?z(e.value.relativePath,i.link,!!t.item.activeMatch):i.items.some(o),n=g(()=>o(t.item));return(i,l)=>(a(),y(ye,{class:N({VPNavBarMenuGroup:!0,active:r(z)(r(e).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Wn=s=>(B("data-v-492ea56d"),s=s(),H(),s),qn={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Jn=Wn(()=>h("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Yn=_({__name:"VPNavBarMenu",setup(s){const{theme:t}=L();return(e,o)=>r(t).nav?(a(),u("nav",qn,[Jn,(a(!0),u(M,null,E(r(t).nav,n=>(a(),u(M,{key:n.text},["link"in n?(a(),y(Kn,{key:0,item:n},null,8,["item"])):(a(),y(Rn,{key:1,item:n},null,8,["item"]))],64))),128))])):f("",!0)}}),Xn=$(Yn,[["__scopeId","data-v-492ea56d"]]);function Qn(s){const{localeIndex:t,theme:e}=L();function o(n){var A,C,I;const i=n.split("."),l=(A=e.value.search)==null?void 0:A.options,v=l&&typeof l=="object",d=v&&((I=(C=l.locales)==null?void 0:C[t.value])==null?void 0:I.translations)||null,m=v&&l.translations||null;let P=d,k=m,V=s;const S=i.pop();for(const Q of i){let U=null;const R=V==null?void 0:V[Q];R&&(U=V=R);const ae=k==null?void 0:k[Q];ae&&(U=k=ae);const re=P==null?void 0:P[Q];re&&(U=P=re),R||(V=U),ae||(k=U),re||(P=U)}return(P==null?void 0:P[S])??(k==null?void 0:k[S])??(V==null?void 0:V[S])??""}return o}const Zn=["aria-label"],xn={class:"DocSearch-Button-Container"},ea=h("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),ta={class:"DocSearch-Button-Placeholder"},sa=h("span",{class:"DocSearch-Button-Keys"},[h("kbd",{class:"DocSearch-Button-Key"}),h("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Se=_({__name:"VPNavBarSearchButton",setup(s){const e=Qn({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(e)("button.buttonAriaLabel")},[h("span",xn,[ea,h("span",ta,T(r(e)("button.buttonText")),1)]),sa],8,Zn))}}),oa={class:"VPNavBarSearch"},na={id:"local-search"},aa={key:1,id:"docsearch"},ra=_({__name:"VPNavBarSearch",setup(s){const t=ot(()=>nt(()=>import("./VPLocalSearchBox.B7daTfN2.js"),__vite__mapDeps([0,1]))),e=()=>null,{theme:o}=L(),n=w(!1),i=w(!1);j(()=>{});function l(){n.value||(n.value=!0,setTimeout(v,16))}function v(){const k=new Event("keydown");k.key="k",k.metaKey=!0,window.dispatchEvent(k),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function d(k){const V=k.target,S=V.tagName;return V.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const m=w(!1);ce("k",k=>{(k.ctrlKey||k.metaKey)&&(k.preventDefault(),m.value=!0)}),ce("/",k=>{d(k)||(k.preventDefault(),m.value=!0)});const P="local";return(k,V)=>{var S;return a(),u("div",oa,[r(P)==="local"?(a(),u(M,{key:0},[m.value?(a(),y(r(t),{key:0,onClose:V[0]||(V[0]=A=>m.value=!1)})):f("",!0),h("div",na,[b(Se,{onClick:V[1]||(V[1]=A=>m.value=!0)})])],64)):r(P)==="algolia"?(a(),u(M,{key:1},[n.value?(a(),y(r(e),{key:0,algolia:((S=r(o).search)==null?void 0:S.options)??r(o).algolia,onVnodeBeforeMount:V[2]||(V[2]=A=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(a(),u("div",aa,[b(Se,{onClick:l})]))],64)):f("",!0)])}}}),ia=_({__name:"VPNavBarSocialLinks",setup(s){const{theme:t}=L();return(e,o)=>r(t).socialLinks?(a(),y(Pe,{key:0,class:"VPNavBarSocialLinks",links:r(t).socialLinks},null,8,["links"])):f("",!0)}}),la=$(ia,[["__scopeId","data-v-164c457f"]]),ca=["href","rel","target"],ua={key:1},da={key:2},va=_({__name:"VPNavBarTitle",setup(s){const{site:t,theme:e}=L(),{hasSidebar:o}=O(),{currentLang:n}=X(),i=g(()=>{var d;return typeof e.value.logoLink=="string"?e.value.logoLink:(d=e.value.logoLink)==null?void 0:d.link}),l=g(()=>{var d;return typeof e.value.logoLink=="string"||(d=e.value.logoLink)==null?void 0:d.rel}),v=g(()=>{var d;return typeof e.value.logoLink=="string"||(d=e.value.logoLink)==null?void 0:d.target});return(d,m)=>(a(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(o)}])},[h("a",{class:"title",href:i.value??r(me)(r(n).link),rel:l.value,target:v.value},[c(d.$slots,"nav-bar-title-before",{},void 0,!0),r(e).logo?(a(),y(ee,{key:0,class:"logo",image:r(e).logo},null,8,["image"])):f("",!0),r(e).siteTitle?(a(),u("span",ua,T(r(e).siteTitle),1)):r(e).siteTitle===void 0?(a(),u("span",da,T(r(t).title),1)):f("",!0),c(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,ca)],2))}}),pa=$(va,[["__scopeId","data-v-28a961f9"]]),ha={class:"items"},fa={class:"title"},_a=_({__name:"VPNavBarTranslations",setup(s){const{theme:t}=L(),{localeLinks:e,currentLang:o}=X({correspondingLink:!0});return(n,i)=>r(e).length&&r(o).label?(a(),y(ye,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(t).langMenuLabel||"Change language"},{default:p(()=>[h("div",ha,[h("p",fa,T(r(o).label),1),(a(!0),u(M,null,E(r(e),l=>(a(),y(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),ma=$(_a,[["__scopeId","data-v-c80d9ad0"]]),ba=s=>(B("data-v-b9c8b02d"),s=s(),H(),s),ka={class:"wrapper"},$a={class:"container"},ga={class:"title"},ya={class:"content"},Pa={class:"content-body"},Sa=ba(()=>h("div",{class:"divider"},[h("div",{class:"divider-line"})],-1)),Va=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:t}=Ae(),{hasSidebar:e}=O(),{hasLocalNav:o}=Fe(),{frontmatter:n}=L(),i=w({});return Te(()=>{i.value={"has-sidebar":e.value,"has-local-nav":o.value,top:n.value.layout==="home"&&t.value===0}}),(l,v)=>(a(),u("div",{class:N(["VPNavBar",i.value])},[h("div",ka,[h("div",$a,[h("div",ga,[b(pa,null,{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),h("div",ya,[h("div",Pa,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),b(ra,{class:"search"}),b(Xn,{class:"menu"}),b(ma,{class:"translations"}),b(Zo,{class:"appearance"}),b(la,{class:"social-links"}),b(Hn,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),b(jn,{class:"hamburger",active:l.isScreenOpen,onClick:v[0]||(v[0]=d=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),Sa],2))}}),La=$(Va,[["__scopeId","data-v-b9c8b02d"]]),Ta={key:0,class:"VPNavScreenAppearance"},wa={class:"text"},Ia=_({__name:"VPNavScreenAppearance",setup(s){const{site:t,theme:e}=L();return(o,n)=>r(t).appearance&&r(t).appearance!=="force-dark"?(a(),u("div",Ta,[h("p",wa,T(r(e).darkModeSwitchLabel||"Appearance"),1),b($e)])):f("",!0)}}),Na=$(Ia,[["__scopeId","data-v-2b89f08b"]]),Ma=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const t=J("close-screen");return(e,o)=>(a(),y(F,{class:"VPNavScreenMenuLink",href:e.item.link,target:e.item.target,rel:e.item.rel,onClick:r(t)},{default:p(()=>[D(T(e.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Aa=$(Ma,[["__scopeId","data-v-d45ba3e8"]]),Ca=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const t=J("close-screen");return(e,o)=>(a(),y(F,{class:"VPNavScreenMenuGroupLink",href:e.item.link,target:e.item.target,rel:e.item.rel,onClick:r(t)},{default:p(()=>[D(T(e.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ge=$(Ca,[["__scopeId","data-v-7179dbb7"]]),Ba={class:"VPNavScreenMenuGroupSection"},Ha={key:0,class:"title"},Ea=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(t,e)=>(a(),u("div",Ba,[t.text?(a(),u("p",Ha,T(t.text),1)):f("",!0),(a(!0),u(M,null,E(t.items,o=>(a(),y(Ge,{key:o.text,item:o},null,8,["item"]))),128))]))}}),Da=$(Ea,[["__scopeId","data-v-4b8941ac"]]),Fa=s=>(B("data-v-c9df2649"),s=s(),H(),s),Oa=["aria-controls","aria-expanded"],Ua=["innerHTML"],ja=Fa(()=>h("span",{class:"vpi-plus button-icon"},null,-1)),Ga=["id"],za={key:1,class:"group"},Ka=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const t=s,e=w(!1),o=g(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function n(){e.value=!e.value}return(i,l)=>(a(),u("div",{class:N(["VPNavScreenMenuGroup",{open:e.value}])},[h("button",{class:"button","aria-controls":o.value,"aria-expanded":e.value,onClick:n},[h("span",{class:"button-text",innerHTML:i.text},null,8,Ua),ja],8,Oa),h("div",{id:o.value,class:"items"},[(a(!0),u(M,null,E(i.items,v=>(a(),u(M,{key:v.text},["link"in v?(a(),u("div",{key:v.text,class:"item"},[b(Ge,{item:v},null,8,["item"])])):(a(),u("div",za,[b(Da,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,Ga)],2))}}),Ra=$(Ka,[["__scopeId","data-v-c9df2649"]]),Wa={key:0,class:"VPNavScreenMenu"},qa=_({__name:"VPNavScreenMenu",setup(s){const{theme:t}=L();return(e,o)=>r(t).nav?(a(),u("nav",Wa,[(a(!0),u(M,null,E(r(t).nav,n=>(a(),u(M,{key:n.text},["link"in n?(a(),y(Aa,{key:0,item:n},null,8,["item"])):(a(),y(Ra,{key:1,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Ja=_({__name:"VPNavScreenSocialLinks",setup(s){const{theme:t}=L();return(e,o)=>r(t).socialLinks?(a(),y(Pe,{key:0,class:"VPNavScreenSocialLinks",links:r(t).socialLinks},null,8,["links"])):f("",!0)}}),ze=s=>(B("data-v-362991c2"),s=s(),H(),s),Ya=ze(()=>h("span",{class:"vpi-languages icon lang"},null,-1)),Xa=ze(()=>h("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Qa={class:"list"},Za=_({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:t,currentLang:e}=X({correspondingLink:!0}),o=w(!1);function n(){o.value=!o.value}return(i,l)=>r(t).length&&r(e).label?(a(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:o.value}])},[h("button",{class:"title",onClick:n},[Ya,D(" "+T(r(e).label)+" ",1),Xa]),h("ul",Qa,[(a(!0),u(M,null,E(r(t),v=>(a(),u("li",{key:v.link,class:"item"},[b(F,{class:"link",href:v.link},{default:p(()=>[D(T(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),xa=$(Za,[["__scopeId","data-v-362991c2"]]),er={class:"container"},tr=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const t=w(null),e=Ce(q?document.body:null);return(o,n)=>(a(),y(pe,{name:"fade",onEnter:n[0]||(n[0]=i=>e.value=!0),onAfterLeave:n[1]||(n[1]=i=>e.value=!1)},{default:p(()=>[o.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[h("div",er,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),b(qa,{class:"menu"}),b(xa,{class:"translations"}),b(Na,{class:"appearance"}),b(Ja,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),sr=$(tr,[["__scopeId","data-v-382f42e9"]]),or={key:0,class:"VPNav"},nr=_({__name:"VPNav",setup(s){const{isScreenOpen:t,closeScreen:e,toggleScreen:o}=Uo(),{frontmatter:n}=L(),i=g(()=>n.value.navbar!==!1);return _e("close-screen",e),te(()=>{q&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,v)=>i.value?(a(),u("header",or,[b(La,{"is-screen-open":r(t),onToggleScreen:r(o)},{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),b(sr,{open:r(t)},{"nav-screen-content-before":p(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),ar=$(nr,[["__scopeId","data-v-f1e365da"]]),Ke=s=>(B("data-v-f24171a4"),s=s(),H(),s),rr=["role","tabindex"],ir=Ke(()=>h("div",{class:"indicator"},null,-1)),lr=Ke(()=>h("span",{class:"vpi-chevron-right caret-icon"},null,-1)),cr=[lr],ur={key:1,class:"items"},dr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const t=s,{collapsed:e,collapsible:o,isLink:n,isActiveLink:i,hasActiveLink:l,hasChildren:v,toggle:d}=Nt(g(()=>t.item)),m=g(()=>v.value?"section":"div"),P=g(()=>n.value?"a":"div"),k=g(()=>v.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),V=g(()=>n.value?void 0:"button"),S=g(()=>[[`level-${t.depth}`],{collapsible:o.value},{collapsed:e.value},{"is-link":n.value},{"is-active":i.value},{"has-active":l.value}]);function A(I){"key"in I&&I.key!=="Enter"||!t.item.link&&d()}function C(){t.item.link&&d()}return(I,Q)=>{const U=K("VPSidebarItem",!0);return a(),y(W(m.value),{class:N(["VPSidebarItem",S.value])},{default:p(()=>[I.item.text?(a(),u("div",Z({key:0,class:"item",role:V.value},rt(I.item.items?{click:A,keydown:A}:{},!0),{tabindex:I.item.items&&0}),[ir,I.item.link?(a(),y(F,{key:0,tag:P.value,class:"link",href:I.item.link,rel:I.item.rel,target:I.item.target},{default:p(()=>[(a(),y(W(k.value),{class:"text",innerHTML:I.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),y(W(k.value),{key:1,class:"text",innerHTML:I.item.text},null,8,["innerHTML"])),I.item.collapsed!=null?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:at(C,["enter"]),tabindex:"0"},cr,32)):f("",!0)],16,rr)):f("",!0),I.item.items&&I.item.items.length?(a(),u("div",ur,[I.depth<5?(a(!0),u(M,{key:0},E(I.item.items,R=>(a(),y(U,{key:R.text,item:R,depth:I.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),vr=$(dr,[["__scopeId","data-v-f24171a4"]]),Re=s=>(B("data-v-ec846e01"),s=s(),H(),s),pr=Re(()=>h("div",{class:"curtain"},null,-1)),hr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},fr=Re(()=>h("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),_r=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:t,hasSidebar:e}=O(),o=s,n=w(null),i=Ce(q?document.body:null);return G([o,n],()=>{var l;o.open?(i.value=!0,(l=n.value)==null||l.focus()):i.value=!1},{immediate:!0,flush:"post"}),(l,v)=>r(e)?(a(),u("aside",{key:0,class:N(["VPSidebar",{open:l.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=it(()=>{},["stop"]))},[pr,h("nav",hr,[fr,c(l.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),u(M,null,E(r(t),d=>(a(),u("div",{key:d.text,class:"group"},[b(vr,{item:d,depth:0},null,8,["item"])]))),128)),c(l.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),mr=$(_r,[["__scopeId","data-v-ec846e01"]]),br=_({__name:"VPSkipLink",setup(s){const t=oe(),e=w();G(()=>t.path,()=>e.value.focus());function o({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),u(M,null,[h("span",{ref_key:"backToTop",ref:e,tabindex:"-1"},null,512),h("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),kr=$(br,[["__scopeId","data-v-c3508ec8"]]),$r=_({__name:"Layout",setup(s){const{isOpen:t,open:e,close:o}=O(),n=oe();G(()=>n.path,o),It(t,o);const{frontmatter:i}=L(),l=Be(),v=g(()=>!!l["home-hero-image"]);return _e("hero-image-slot-exists",v),(d,m)=>{const P=K("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:N(["Layout",r(i).pageClass])},[c(d.$slots,"layout-top",{},void 0,!0),b(kr),b(ht,{class:"backdrop",show:r(t),onClick:r(o)},null,8,["show","onClick"]),b(ar,null,{"nav-bar-title-before":p(()=>[c(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":p(()=>[c(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),b(Oo,{open:r(t),onOpenMenu:r(e)},null,8,["open","onOpenMenu"]),b(mr,{open:r(t)},{"sidebar-nav-before":p(()=>[c(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":p(()=>[c(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),b(go,null,{"page-top":p(()=>[c(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":p(()=>[c(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":p(()=>[c(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":p(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":p(()=>[c(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":p(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),b(Lo),c(d.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),y(P,{key:1}))}}}),gr=$($r,[["__scopeId","data-v-a9a9e638"]]),Ve={Layout:gr,enhanceApp:({app:s})=>{s.component("Badge",dt)}},yr=s=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...i)=>n(...i)};const t=document.documentElement;return{stabilizeScrollPosition:o=>async(...n)=>{const i=o(...n),l=s.value;if(!l)return i;const v=l.offsetTop-t.scrollTop;return await Me(),t.scrollTop=l.offsetTop-v,i}}},We="vitepress:tabSharedState",Y=typeof localStorage<"u"?localStorage:null,qe="vitepress:tabsSharedState",Pr=()=>{const s=Y==null?void 0:Y.getItem(qe);if(s)try{return JSON.parse(s)}catch{}return{}},Sr=s=>{Y&&Y.setItem(qe,JSON.stringify(s))},Vr=s=>{const t=lt({});G(()=>t.content,(e,o)=>{e&&o&&Sr(e)},{deep:!0}),s.provide(We,t)},Lr=(s,t)=>{const e=J(We);if(!e)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");j(()=>{e.content||(e.content=Pr())});const o=w(),n=g({get(){var d;const l=t.value,v=s.value;if(l){const m=(d=e.content)==null?void 0:d[l];if(m&&v.includes(m))return m}else{const m=o.value;if(m)return m}return v[0]},set(l){const v=t.value;v?e.content&&(e.content[v]=l):o.value=l}});return{selected:n,select:l=>{n.value=l}}};let Le=0;const Tr=()=>(Le++,""+Le);function wr(){const s=Be();return g(()=>{var o;const e=(o=s.default)==null?void 0:o.call(s);return e?e.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var i;return(i=n.props)==null?void 0:i.label}):[]})}const Je="vitepress:tabSingleState",Ir=s=>{_e(Je,s)},Nr=()=>{const s=J(Je);if(!s)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return s},Mr={class:"plugin-tabs"},Ar=["id","aria-selected","aria-controls","tabindex","onClick"],Cr=_({__name:"PluginTabs",props:{sharedStateKey:{}},setup(s){const t=s,e=wr(),{selected:o,select:n}=Lr(e,ct(t,"sharedStateKey")),i=w(),{stabilizeScrollPosition:l}=yr(i),v=l(n),d=w([]),m=k=>{var A;const V=e.value.indexOf(o.value);let S;k.key==="ArrowLeft"?S=V>=1?V-1:e.value.length-1:k.key==="ArrowRight"&&(S=V(a(),u("div",Mr,[h("div",{ref_key:"tablist",ref:i,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:m},[(a(!0),u(M,null,E(r(e),S=>(a(),u("button",{id:`tab-${S}-${r(P)}`,ref_for:!0,ref_key:"buttonRefs",ref:d,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===r(o),"aria-controls":`panel-${S}-${r(P)}`,tabindex:S===r(o)?0:-1,onClick:()=>r(v)(S)},T(S),9,Ar))),128))],544),c(k.$slots,"default")]))}}),Br=["id","aria-labelledby"],Hr=_({__name:"PluginTabsTab",props:{label:{}},setup(s){const{uid:t,selected:e}=Nr();return(o,n)=>r(e)===o.label?(a(),u("div",{key:0,id:`panel-${o.label}-${r(t)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${o.label}-${r(t)}`},[c(o.$slots,"default",{},void 0,!0)],8,Br)):f("",!0)}}),Er=$(Hr,[["__scopeId","data-v-9b0d03d2"]]),Dr=s=>{Vr(s),s.component("PluginTabs",Cr),s.component("PluginTabsTab",Er)},Or={extends:Ve,Layout(){return ut(Ve.Layout,null,{})},enhanceApp({app:s,router:t,siteData:e}){Dr(s)}};export{Or as R,Qn as c,L as u}; diff --git a/dev/assets/compositional_networks.md.BhghO7dc.lean.js b/dev/assets/compositional_networks.md.BhghO7dc.lean.js deleted file mode 100644 index 84abc98..0000000 --- a/dev/assets/compositional_networks.md.BhghO7dc.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const g=JSON.parse('{"title":"CompositionalNetworks.jl","description":"","frontmatter":{},"headers":[],"relativePath":"compositional_networks.md","filePath":"compositional_networks.md","lastUpdated":null}'),t={name:"compositional_networks.md"},o=e("",156),l=[o];function r(n,p,d,h,c,k){return a(),s("div",null,l)}const b=i(t,[["render",r]]);export{g as __pageData,b as default}; diff --git a/dev/assets/constraint_commons.md.C75tWCM4.lean.js b/dev/assets/constraint_commons.md.C75tWCM4.lean.js deleted file mode 100644 index 92920ff..0000000 --- a/dev/assets/constraint_commons.md.C75tWCM4.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.RTxADYK2.js";const m=JSON.parse('{"title":"ConstraintCommons.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraint_commons.md","filePath":"constraint_commons.md","lastUpdated":null}'),e={name:"constraint_commons.md"},n=t("",32),o=[n];function l(r,p,d,h,c,k){return a(),i("div",null,o)}const b=s(e,[["render",l]]);export{m as __pageData,b as default}; diff --git a/dev/assets/constraint_domains.md.Djni_Jg6.lean.js b/dev/assets/constraint_domains.md.Djni_Jg6.lean.js deleted file mode 100644 index 27603f9..0000000 --- a/dev/assets/constraint_domains.md.Djni_Jg6.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"ConstraintDomains.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraint_domains.md","filePath":"constraint_domains.md","lastUpdated":null}'),e={name:"constraint_domains.md"},n=t("",84),l=[n];function r(o,p,h,d,k,c){return a(),i("div",null,l)}const b=s(e,[["render",r]]);export{u as __pageData,b as default}; diff --git a/dev/assets/constraint_learning.md.Cq9Qshoe.js b/dev/assets/constraint_learning.md.Cq9Qshoe.js deleted file mode 100644 index 3819f7e..0000000 --- a/dev/assets/constraint_learning.md.Cq9Qshoe.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"ConstraintLearning.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraint_learning.md","filePath":"constraint_learning.md","lastUpdated":null}'),t={name:"constraint_learning.md"},n=e('

ConstraintLearning.jl

Documentation for ConstraintLearning.jl.

# ConstraintLearning.ICNConfigType.
julia
struct ICNConfig{O <: ICNOptimizer}

A structure to hold the metric and optimizer configurations used in learning the weigths of an ICN.

source


# ConstraintLearning.ICNConfigMethod.
julia
ICNConfig(; metric = :hamming, optimizer = ICNGeneticOptimizer())

Constructor for ICNConfig. Defaults to hamming metric using a genetic algorithm.

source


# ConstraintLearning.ICNGeneticOptimizerMethod.
julia
ICNGeneticOptimizer(; kargs...)

Default constructor to learn an ICN through a Genetic Algorithm. Default kargs TBW.

source


# ConstraintLearning.ICNLocalSearchOptimizerType.
julia
ICNLocalSearchOptimizer(options = LocalSearchSolvers.Options())

Default constructor to learn an ICN through a CBLS solver.

source


# ConstraintLearning.ICNOptimizerType.
julia
const ICNOptimizer = CompositionalNetworks.AbstractOptimizer

An abstract type for optmizers defined to learn ICNs.

source


# ConstraintLearning.QUBOGradientOptimizerMethod.
julia
QUBOGradientOptimizer(; kargs...)

A QUBO optimizer based on gradient descent. Defaults TBW

source


# ConstraintLearning.QUBOOptimizerType.
julia
const QUBOOptimizer = QUBOConstraints.AbstractOptimizer

An abstract type for optimizers used to learn QUBO matrices from constraints.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNGeneticOptimizer; parameters...)

Extends the optimize! method to ICNGeneticOptimizer.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNLocalSearchOptimizer; parameters...)

Extends the optimize! method to ICNLocalSearchOptimizer.

source


# ConstraintLearning._optimize!Method.
julia
_optimize!(icn, X, X_sols; metric = hamming, pop_size = 200)

Optimize and set the weigths of an ICN with a given set of configuration X and solutions X_sols.

source


# ConstraintLearning.domain_sizeMethod.
julia
domain_size(ds::Number)

Extends the domain_size function when ds is number (for dispatch purposes).

source


# ConstraintLearning.generate_populationMethod.
julia
generate_population(icn, pop_size

Generate a pôpulation of weigths (individuals) for the genetic algorithm weigthing icn.

source


# ConstraintLearning.icnMethod.
julia
icn(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.lossMethod.
julia
loss(x, y, Q)

Loss of the prediction given by Q, a training set y, and a given configuration x.

source


# ConstraintLearning.make_dfMethod.
julia
make_df(X, Q, penalty, binarization, domains)

DataFrame arrangement to ouput some basic evaluation of a matrix Q.

source


# ConstraintLearning.make_set_penaltyMethod.
julia
make_set_penalty(X, X̅, args...; kargs)

Return a penalty function when the training set is already split into a pair of solutions X and non solutions .

source


# ConstraintLearning.make_training_setsMethod.
julia
make_training_sets(X, penalty, args...)

Return a pair of solutions and non solutions sets based on X and penalty.

source


# ConstraintLearning.mutually_exclusiveMethod.
julia
mutually_exclusive(layer, w)

Constraint ensuring that w encode exclusive operations in layer.

source


# ConstraintLearning.no_empty_layerMethod.
julia
no_empty_layer(x; X = nothing)

Constraint ensuring that at least one operation is selected.

source


# ConstraintLearning.optimize!Method.
julia
optimize!(icn, X, X_sols, global_iter, local_iter; metric=hamming, popSize=100)

Optimize and set the weigths of an ICN with a given set of configuration X and solutions X_sols. The best weigths among global_iter will be set.

source


# ConstraintLearning.parameter_specific_operationsMethod.
julia
parameter_specific_operations(x; X = nothing)

Constraint ensuring that at least one operation related to parameters is selected if the error function to be learned is parametric.

source


# ConstraintLearning.predictMethod.
julia
predict(x, Q)

Return the predictions given by Q for a given configuration x.

source


# ConstraintLearning.preliminariesMethod.
julia
preliminaries(args)

Preliminaries to the training process in a QUBOGradientOptimizer run.

source


# ConstraintLearning.quboFunction.
julia
qubo(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.sub_eltypeMethod.
julia
sub_eltype(X)

Return the element type of of the first element of a collection.

source


# ConstraintLearning.train!Method.
julia
train!(Q, X, penalty, η, precision, X_test, oversampling, binarization, domains)

Training inner method.

source


# ConstraintLearning.trainMethod.
julia
train(X, penalty[, d]; optimizer = QUBOGradientOptimizer(), X_test = X)

Learn a QUBO matrix on training set X for a constraint defined by penalty with optional domain information d. By default, it uses a QUBOGradientOptimizer and X as a testing set.

source


# ConstraintLearning.δMethod.
julia
δ(X[, Y]; discrete = true)

Compute the extrema over a collection X``or a pair of collection(X, Y)`.

source


',58),r=[n];function l(o,p,d,h,c,g){return a(),s("div",null,r)}const b=i(t,[["render",l]]);export{u as __pageData,b as default}; diff --git a/dev/assets/constraint_learning.md.Cq9Qshoe.lean.js b/dev/assets/constraint_learning.md.Cq9Qshoe.lean.js deleted file mode 100644 index 5426747..0000000 --- a/dev/assets/constraint_learning.md.Cq9Qshoe.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"ConstraintLearning.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraint_learning.md","filePath":"constraint_learning.md","lastUpdated":null}'),t={name:"constraint_learning.md"},n=e("",58),r=[n];function l(o,p,d,h,c,g){return a(),s("div",null,r)}const b=i(t,[["render",l]]);export{u as __pageData,b as default}; diff --git a/dev/assets/constraint_models.md.DJfVEzwr.js b/dev/assets/constraint_models.md.DJfVEzwr.js deleted file mode 100644 index a122aa0..0000000 --- a/dev/assets/constraint_models.md.DJfVEzwr.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,c as s,o as a,m as t,a as e}from"./chunks/framework.RTxADYK2.js";const j=JSON.parse('{"title":"ConstraintModels.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraint_models.md","filePath":"constraint_models.md","lastUpdated":null}'),n={name:"constraint_models.md"},l=t("h1",{id:"ConstraintModels.jl",tabindex:"-1"},[e("ConstraintModels.jl "),t("a",{class:"header-anchor",href:"#ConstraintModels.jl","aria-label":'Permalink to "ConstraintModels.jl {#ConstraintModels.jl}"'},"​")],-1),r=t("p",null,[e("Documentation for "),t("code",null,"ConstraintModels.jl"),e(".")],-1),d=[l,r];function i(c,_,m,p,h,f){return a(),s("div",null,d)}const C=o(n,[["render",i]]);export{j as __pageData,C as default}; diff --git a/dev/assets/constraint_models.md.DJfVEzwr.lean.js b/dev/assets/constraint_models.md.DJfVEzwr.lean.js deleted file mode 100644 index a122aa0..0000000 --- a/dev/assets/constraint_models.md.DJfVEzwr.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,c as s,o as a,m as t,a as e}from"./chunks/framework.RTxADYK2.js";const j=JSON.parse('{"title":"ConstraintModels.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraint_models.md","filePath":"constraint_models.md","lastUpdated":null}'),n={name:"constraint_models.md"},l=t("h1",{id:"ConstraintModels.jl",tabindex:"-1"},[e("ConstraintModels.jl "),t("a",{class:"header-anchor",href:"#ConstraintModels.jl","aria-label":'Permalink to "ConstraintModels.jl {#ConstraintModels.jl}"'},"​")],-1),r=t("p",null,[e("Documentation for "),t("code",null,"ConstraintModels.jl"),e(".")],-1),d=[l,r];function i(c,_,m,p,h,f){return a(),s("div",null,d)}const C=o(n,[["render",i]]);export{j as __pageData,C as default}; diff --git a/dev/assets/constraints.md.CIqVzD9y.js b/dev/assets/constraints.md.CIqVzD9y.js deleted file mode 100644 index 3c02e1f..0000000 --- a/dev/assets/constraints.md.CIqVzD9y.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as t,o as i,a7 as e}from"./chunks/framework.RTxADYK2.js";const k=JSON.parse('{"title":"Constraints.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints.md","filePath":"constraints.md","lastUpdated":null}'),a={name:"constraints.md"},n=e('

Constraints.jl

Documentation for Constraints.jl.

# Constraints.USUAL_CONSTRAINTSConstant.
julia
USUAL_CONSTRAINTS::Dict

Dictionary that contains all the usual constraints defined in Constraint.jl. It is based on XCSP3-core specifications available at https://arxiv.org/abs/2009.00514

Adding a new constraint is as simple as

julia
@usual name p a sym₁ sym₂

where

  • name: constraint name

  • p: the length of the parameters (0 means no parameters)

  • a: the length of the arguments/variables (0 means any length is possible).

  • symᵢ: a sequence of symmetries (can be left empty)

Both a alone, or p and a together are optional.

Note that concept_name needs to be defined. Unless both error_name and icn_error_name are defined, a default error function will be computed. Please (re-)define error_name for a hand_made error function.

source


# Constraints.USUAL_SYMMETRIESConstant.
julia
USUAL_SYMMETRIES

A Dictionary that contains the function to apply for each symmetry to avoid searching a whole space.

source


# Constraints.ConstraintType.
julia
Constraint

Parametric stucture with the following fields.

  • concept: a Boolean function that, given an assignment x, outputs true if x satisfies the constraint, and false otherwise.

  • error: a positive function that works as preferences over invalid assignements. Return 0.0 if the constraint is satisfied, and a strictly positive real otherwise.

source


# Constraints.argsMethod.
julia
args(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of value is accepted.

source


# Constraints.conceptMethod.
julia
concept(c::Constraint)

Return the concept (function) of constraint c. concept(c::Constraint, x...; param = nothing) Apply the concept of c to values x and optionally param.

source


# Constraints.error_fMethod.
julia
error_f(c::Constraint)

Return the error function of constraint c. error_f(c::Constraint, x; param = nothing) Apply the error function of c to values x and optionally param.

source


# Constraints.params_lengthMethod.
julia
params_length(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of parameters is accepted.

source


# Constraints.shrink_conceptMethod.
julia
shrink_concept(s)

Simply delete the concept_ part of symbol or string starting with it. TODO: add a check with a warning if s starts with something different.

source


# Constraints.symmetriesMethod.
julia
symmetries(c::Constraint)

Return the list of symmetries of c.

source


# Constraints.xcsp_intensionMethod.
julia
xcsp_intension(list, predicate)

An intensional constraint is usually defined from a predicate over x. As such it encompass any generic constraint.

source


',22),r=[n];function o(l,p,d,c,h,u){return i(),t("div",null,r)}const g=s(a,[["render",o]]);export{k as __pageData,g as default}; diff --git a/dev/assets/constraints.md.CIqVzD9y.lean.js b/dev/assets/constraints.md.CIqVzD9y.lean.js deleted file mode 100644 index f8df993..0000000 --- a/dev/assets/constraints.md.CIqVzD9y.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as t,o as i,a7 as e}from"./chunks/framework.RTxADYK2.js";const k=JSON.parse('{"title":"Constraints.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints.md","filePath":"constraints.md","lastUpdated":null}'),a={name:"constraints.md"},n=e("",22),r=[n];function o(l,p,d,c,h,u){return i(),t("div",null,r)}const g=s(a,[["render",o]]);export{k as __pageData,g as default}; diff --git a/dev/assets/constraint_commons.md.C75tWCM4.js b/dev/assets/constraints_constraint_commons.md.DieObjHT.js similarity index 90% rename from dev/assets/constraint_commons.md.C75tWCM4.js rename to dev/assets/constraints_constraint_commons.md.DieObjHT.js index 6e3676c..29fc238 100644 --- a/dev/assets/constraint_commons.md.C75tWCM4.js +++ b/dev/assets/constraints_constraint_commons.md.DieObjHT.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.RTxADYK2.js";const m=JSON.parse('{"title":"ConstraintCommons.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraint_commons.md","filePath":"constraint_commons.md","lastUpdated":null}'),e={name:"constraint_commons.md"},n=t(`

ConstraintCommons.jl

Documentation for ConstraintCommons.jl.

# ConstraintCommons.USUAL_CONSTRAINT_PARAMETERSConstant.
julia
const USUAL_CONSTRAINT_PARAMETERS

List of usual constraints parameters (based on XCSP3-core constraints).

julia
const USUAL_CONSTRAINT_PARAMETERS = [
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.RTxADYK2.js";const m=JSON.parse('{"title":"ConstraintCommons.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_commons.md","filePath":"constraints/constraint_commons.md","lastUpdated":null}'),e={name:"constraints/constraint_commons.md"},n=t(`

ConstraintCommons.jl

Documentation for ConstraintCommons.jl.

# ConstraintCommons.USUAL_CONSTRAINT_PARAMETERSConstant.
julia
const USUAL_CONSTRAINT_PARAMETERS

List of usual constraints parameters (based on XCSP3-core constraints).

julia
const USUAL_CONSTRAINT_PARAMETERS = [
     :bool,
     :dim,
     :id,
@@ -7,4 +7,4 @@ import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.RTxADYK2.js";const m
     :pair_vars,
     :val,
     :vals,
-]

source


# ConstraintCommons.AbstractAutomatonType.
julia
AbstractAutomaton

An abstract interface for automata used in Julia Constraints packages. Requirements:

  • accept(a<:AbstractAutomaton, word): return true if a accepts word.

source


# ConstraintCommons.AbstractMultivaluedDecisionDiagramType.
julia
AbstractMultivaluedDecisionDiagram

An abstract interface for Multivalued Decision Diagrams (MDD) used in Julia Constraints packages. Requirements:

  • accept(a<:AbstractMultivaluedDecisionDiagram, word): return true if a accepts word.

source


# ConstraintCommons.AutomatonType.
julia
Automaton{S, T, F <: Union{S, Vector{S}, Set{S}}} <: AbstractAutomaton

A minimal implementation of a deterministic automaton structure.

source


# ConstraintCommons.AutomatonMethod.
julia
Automaton(a::MDD)

Construct an automaton based on a given Multivalued Decision Diagrams (MDD).

source


# ConstraintCommons.MDDType.
julia
MDD{S,T} <: AbstractMultivaluedDecisionDiagram

A minimal implementation of a multivalued decision diagram structure.

source


# Base.:*Function.
julia
Base.:*(s1::Symbol, s2::Symbol, connector::AbstractString="_")

Extends * to Symbols multiplication by connecting the symbols by an _.

source


# Base.inMethod.
julia
Base.in(::Any, ::Nothing)

Extends Base.in (or ) when the set is nothing. Returns false.

source


# Base.isemptyMethod.
julia
Base.isempty(::Nothing)

Extends Base.isempty when the set is nothing. Returns true.

source


# ConstraintCommons.acceptMethod.
julia
accept(a::Union{Automaton, MDD}, w)

Return true if a accepts the word w and false otherwise.

source


# ConstraintCommons.at_endMethod.
julia
at_end(a::Automaton, s)

Internal method used by accept with Automaton.

source


# ConstraintCommons.extract_parametersMethod.
julia
extract_parameters(m::Union{Method, Function}; parameters)

Extracts the intersection between the kargs of m and parameters (defaults to USUAL_CONSTRAINT_PARAMETERS).

source


# ConstraintCommons.incsert!Function.
julia
incsert!(d::Union{AbstractDict, AbstractDictionary}, ind, val = 1)

Increase or insert a counter in a dictionary-based collection. The counter insertion defaults to val = 1.

source


# ConstraintCommons.oversampleMethod.
julia
oversample(X, f)

Oversample elements of X until the boolean function f has as many true and false configurations.

source


# ConstraintCommons.δ_extremaMethod.
julia
δ_extrema(X...)

Compute both the difference between the maximum and the minimum of over all the collections of X.

source


`,32),o=[n];function l(r,p,d,h,c,k){return a(),i("div",null,o)}const b=s(e,[["render",l]]);export{m as __pageData,b as default}; +]

source


# ConstraintCommons.AbstractAutomatonType.
julia
AbstractAutomaton

An abstract interface for automata used in Julia Constraints packages. Requirements:

  • accept(a<:AbstractAutomaton, word): return true if a accepts word.

source


# ConstraintCommons.AbstractMultivaluedDecisionDiagramType.
julia
AbstractMultivaluedDecisionDiagram

An abstract interface for Multivalued Decision Diagrams (MDD) used in Julia Constraints packages. Requirements:

  • accept(a<:AbstractMultivaluedDecisionDiagram, word): return true if a accepts word.

source


# ConstraintCommons.AutomatonType.
julia
Automaton{S, T, F <: Union{S, Vector{S}, Set{S}}} <: AbstractAutomaton

A minimal implementation of a deterministic automaton structure.

source


# ConstraintCommons.AutomatonMethod.
julia
Automaton(a::MDD)

Construct an automaton based on a given Multivalued Decision Diagrams (MDD).

source


# ConstraintCommons.MDDType.
julia
MDD{S,T} <: AbstractMultivaluedDecisionDiagram

A minimal implementation of a multivalued decision diagram structure.

source


# Base.:*Function.
julia
Base.:*(s1::Symbol, s2::Symbol, connector::AbstractString="_")

Extends * to Symbols multiplication by connecting the symbols by an _.

source


# Base.inMethod.
julia
Base.in(::Any, ::Nothing)

Extends Base.in (or ) when the set is nothing. Returns false.

source


# Base.isemptyMethod.
julia
Base.isempty(::Nothing)

Extends Base.isempty when the set is nothing. Returns true.

source


# ConstraintCommons.acceptMethod.
julia
accept(a::Union{Automaton, MDD}, w)

Return true if a accepts the word w and false otherwise.

source


# ConstraintCommons.at_endMethod.
julia
at_end(a::Automaton, s)

Internal method used by accept with Automaton.

source


# ConstraintCommons.extract_parametersMethod.
julia
extract_parameters(m::Union{Method, Function}; parameters)

Extracts the intersection between the kargs of m and parameters (defaults to USUAL_CONSTRAINT_PARAMETERS).

source


# ConstraintCommons.incsert!Function.
julia
incsert!(d::Union{AbstractDict, AbstractDictionary}, ind, val = 1)

Increase or insert a counter in a dictionary-based collection. The counter insertion defaults to val = 1.

source


# ConstraintCommons.oversampleMethod.
julia
oversample(X, f)

Oversample elements of X until the boolean function f has as many true and false configurations.

source


# ConstraintCommons.δ_extremaMethod.
julia
δ_extrema(X...)

Compute both the difference between the maximum and the minimum of over all the collections of X.

source


`,32),o=[n];function r(l,p,d,h,c,k){return a(),i("div",null,o)}const b=s(e,[["render",r]]);export{m as __pageData,b as default}; diff --git a/dev/assets/constraints_constraint_commons.md.DieObjHT.lean.js b/dev/assets/constraints_constraint_commons.md.DieObjHT.lean.js new file mode 100644 index 0000000..62abacd --- /dev/null +++ b/dev/assets/constraints_constraint_commons.md.DieObjHT.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.RTxADYK2.js";const m=JSON.parse('{"title":"ConstraintCommons.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_commons.md","filePath":"constraints/constraint_commons.md","lastUpdated":null}'),e={name:"constraints/constraint_commons.md"},n=t("",32),o=[n];function r(l,p,d,h,c,k){return a(),i("div",null,o)}const b=s(e,[["render",r]]);export{m as __pageData,b as default}; diff --git a/dev/assets/constraint_domains.md.Djni_Jg6.js b/dev/assets/constraints_constraint_domains.md.BfoWRoqf.js similarity index 86% rename from dev/assets/constraint_domains.md.Djni_Jg6.js rename to dev/assets/constraints_constraint_domains.md.BfoWRoqf.js index 50e062e..bf90861 100644 --- a/dev/assets/constraint_domains.md.Djni_Jg6.js +++ b/dev/assets/constraints_constraint_domains.md.BfoWRoqf.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"ConstraintDomains.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraint_domains.md","filePath":"constraint_domains.md","lastUpdated":null}'),e={name:"constraint_domains.md"},n=t(`

ConstraintDomains.jl

Documentation for ConstraintDomains.jl.

# ConstraintDomains.AbstractDomainType.
julia
AbstractDomain

An abstract super type for any domain type. A domain type D <: AbstractDomain must implement the following methods to properly interface AbstractDomain.

  • Base.∈(val, ::D)

  • Base.rand(::D)

  • Base.length(::D) that is the number of elements in a discrete domain, and the distance between bounds or similar for a continuous domain

Addtionally, if the domain is used in a dynamic context, it can extend

  • add!(::D, args)

  • delete!(::D, args)

where args depends on D's structure

source


# ConstraintDomains.ContinuousDomainType.
julia
ContinuousDomain{T <: Real} <: AbstractDomain

An abstract supertype for all continuous domains.

source


# ConstraintDomains.DiscreteDomainType.
julia
DiscreteDomain{T <: Number} <: AbstractDomain

An abstract supertype for discrete domains (set, range).

source


# ConstraintDomains.EmptyDomainType.
julia
EmptyDomain

A struct to handle yet to be defined domains.

source


# ConstraintDomains.ExploreSettingsMethod.
julia
ExploreSettings(
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"ConstraintDomains.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_domains.md","filePath":"constraints/constraint_domains.md","lastUpdated":null}'),e={name:"constraints/constraint_domains.md"},n=t(`

ConstraintDomains.jl

Documentation for ConstraintDomains.jl.

# ConstraintDomains.AbstractDomainType.
julia
AbstractDomain

An abstract super type for any domain type. A domain type D <: AbstractDomain must implement the following methods to properly interface AbstractDomain.

  • Base.∈(val, ::D)

  • Base.rand(::D)

  • Base.length(::D) that is the number of elements in a discrete domain, and the distance between bounds or similar for a continuous domain

Addtionally, if the domain is used in a dynamic context, it can extend

  • add!(::D, args)

  • delete!(::D, args)

where args depends on D's structure

source


# ConstraintDomains.ContinuousDomainType.
julia
ContinuousDomain{T <: Real} <: AbstractDomain

An abstract supertype for all continuous domains.

source


# ConstraintDomains.DiscreteDomainType.
julia
DiscreteDomain{T <: Number} <: AbstractDomain

An abstract supertype for discrete domains (set, range).

source


# ConstraintDomains.EmptyDomainType.
julia
EmptyDomain

A struct to handle yet to be defined domains.

source


# ConstraintDomains.ExploreSettingsMethod.
julia
ExploreSettings(
     domains;
     complete_search_limit = 10^6,
     max_samplings = sum(domain_size, domains),
@@ -7,9 +7,9 @@ import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.RTxADYK2.js";const u
 )

Settings for the exploration of a search space composed by a collection of domains.

source


# ConstraintDomains.FakeAutomatonType.
julia
FakeAutomaton{T} <: ConstraintCommons.AbstractAutomaton

A structure to generate pseudo automaton enough for parameter exploration.

source


# ConstraintDomains.IntervalsType.
julia
Intervals{T <: Real} <: ContinuousDomain{T}

An encapsuler to store a vector of PatternFolds.Interval. Dynamic changes to Intervals are not handled yet.

source


# ConstraintDomains.RangeDomainType.
julia
RangeDomain

A discrete domain defined by a range <: AbstractRange{Real}. As ranges are immutable in Julia, changes in RangeDomain must use set_domain!.

source


# ConstraintDomains.SetDomainType.
julia
SetDomain{T <: Number} <: DiscreteDomain{T}

Domain that stores discrete values as a set of (unordered) points.

source


# Base.convertMethod.
julia
Base.convert(::Type{Union{Intervals, RangeDomain}}, d::Union{Intervals, RangeDomain})

Extends Base.convert for domains.

source


# Base.delete!Method.
julia
Base.delete!(d::SetDomain, value)(d::SetDomain, value)

Delete value from the list of points in d.

source


# Base.eltypeMethod.
julia
Base.eltype(::AbstractDomain)

Extend eltype for domains.

source


# Base.inMethod.
julia
Base.in(x, itv::Intervals)

Return true if x ∈ I for any 'I ∈ itv, false otherwise.x ∈ I\` is equivalent to

  • a < x < b if I = (a, b)

  • a < x ≤ b if I = (a, b]

  • a ≤ x < b if I = [a, b)

  • a ≤ x ≤ b if I = [a, b]

source


# Base.inMethod.
julia
Base.in(value, d <: AbstractDomain)

Fallback method for value ∈ d that returns false.

source


# Base.inMethod.
julia
Base.in(value, d::D) where D <: DiscreteDomain

Return true if value is a point of d.

source


# Base.isemptyMethod.
julia
Base.isempty(d <: AbstractDomain)

Fallback method for isempty(d) that return length(d) == 0 which default to 0.

source


# Base.lengthMethod.
julia
Base.length(itv::Intervals)

Return the sum of the length of each interval in itv.

source


# Base.lengthMethod.
julia
Base.rand(d <: AbstractDomain)

Fallback method for length(d) that return 0.

source


# Base.lengthMethod.
julia
Base.length(d::D) where D <: DiscreteDomain

Return the number of points in d.

source


# Base.randMethod.
julia
Base.rand(d::Union{Vector{D},Set{D}, D}) where {D<:AbstractDomain}

Extends Base.rand to (a collection of) domains.

source


# Base.randMethod.
julia
Base.rand(fa::FakeAutomaton)

Extends Base.rand. Currently simply returns fa.

source


# Base.randMethod.
julia
Base.rand(itv::Intervals)
 Base.rand(itv::Intervals, i)

Return a random value from itv, specifically from the ith interval if i is specified.

source


# Base.randMethod.
julia
Base.rand(d::D) where D <: DiscreteDomain

Draw randomly a point in d.

source


# Base.stringMethod.
julia
Base.string(D::Vector{<:AbstractDomain})
 Base.string(d<:AbstractDomain)

Extends the string method to (a vector of) domains.

source


# ConstraintCommons.acceptMethod.
julia
ConstraintCommons.accept(fa::FakeAutomaton, word)

Implement the accept methods for FakeAutomaton.

source


# ConstraintDomains._exploreMethod.
julia
_explore(args...)

Internals of the explore function. Behavior is automatically adjusted on the kind of exploration: :flexible, :complete, :partial.

source


# ConstraintDomains.add!Method.
julia
add!(d::SetDomain, value)

Add value to the list of points in d.

source


# ConstraintDomains.domainMethod.
julia
domain(values)
-domain(range::R) where {T <: Real, R <: AbstractRange{T}}

Construct either a SetDomain or a RangeDomain.

julia
d1 = domain(1:5)
+domain(range::R) where {T <: Real, R <: AbstractRange{T}}

Construct either a SetDomain or a RangeDomain.

julia
d1 = domain(1:5)
 d2 = domain([53.69, 89.2, 0.12])
 d3 = domain([2//3, 89//123])
 d4 = domain(4.3)
-d5 = domain(1,42,86.9)

source


# ConstraintDomains.domainMethod.
julia
domain()

Construct an EmptyDomain.

source


# ConstraintDomains.domainMethod.
julia
domain(a::Tuple{T, Bool}, b::Tuple{T, Bool}) where {T <: Real}
+d5 = domain(1,42,86.9)

source


# ConstraintDomains.domainMethod.
julia
domain()

Construct an EmptyDomain.

source


# ConstraintDomains.domainMethod.
julia
domain(a::Tuple{T, Bool}, b::Tuple{T, Bool}) where {T <: Real}
 domain(intervals::Vector{Tuple{Tuple{T, Bool},Tuple{T, Bool}}}) where {T <: Real}

Construct a domain of continuous interval(s). \`\`\`julia d1 = domain((0., true), (1., false)) # d1 = [0, 1) d2 = domain([ # d2 = 0, 1) ∪ (3.5, 42, (1., false), (3.5, false), (42., true), ])

source


# ConstraintDomains.domain_sizeMethod.
julia
domain_size(itv::Intervals)

Return the difference between the highest and lowest values in itv.

source


# ConstraintDomains.domain_sizeMethod.
julia
domain_size(d <: AbstractDomain)

Fallback method for domain_size(d) that return length(d).

source


# ConstraintDomains.domain_sizeMethod.
julia
domain_size(d::D) where D <: DiscreteDomain

Return the maximum distance between two points in d.

source


# ConstraintDomains.exploreMethod.
julia
explore(domains, concept, param = nothing; search_limit = 1000, solutions_limit = 100)

Search (a part of) a search space and returns a pair of vector of configurations: (solutions, non_solutions). If the search space size is over search_limit, then both solutions and non_solutions are limited to solutions_limit.

Beware that if the density of the solutions in the search space is low, solutions_limit needs to be reduced. This process will be automatic in the future (simple reinforcement learning).

Arguments:

  • domains: a collection of domains

  • concept: the concept of the targeted constraint

  • param: an optional parameter of the constraint

  • sol_number: the required number of solutions (half of the number of configurations), default to 100

source


# ConstraintDomains.fake_automatonMethod.
julia
fake_automaton(d)

Construct a FakeAutomaton.

source


# ConstraintDomains.generate_parametersMethod.
julia
generate_parameters(d<:AbstractDomain, param)

Generates random parameters based on the domain d and the kind of parameters param.

source


# ConstraintDomains.get_domainMethod.
julia
get_domain(::AbstractDomain)

Access the internal structure of any domain type.

source


# ConstraintDomains.intersect_domainsMethod.
julia
intersect_domains(d₁, d₂)

Compute the intersections of two domains.

source


# ConstraintDomains.merge_domainsMethod.
julia
merge_domains(d₁::AbstractDomain, d₂::AbstractDomain)

Merge two domains of same nature (discrete/contiuous).

source


# ConstraintDomains.sizeMethod.
julia
Base.size(i::I) where {I <: Interval}

Defines the size of an interval as its span.

source


# ConstraintDomains.to_domainsMethod.
julia
to_domains(args...)

Convert various arguments into valid domains format.

source


`,84),l=[n];function r(o,p,h,d,k,c){return a(),i("div",null,l)}const b=s(e,[["render",r]]);export{u as __pageData,b as default}; diff --git a/dev/assets/constraints_constraint_domains.md.BfoWRoqf.lean.js b/dev/assets/constraints_constraint_domains.md.BfoWRoqf.lean.js new file mode 100644 index 0000000..7d7924d --- /dev/null +++ b/dev/assets/constraints_constraint_domains.md.BfoWRoqf.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"ConstraintDomains.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_domains.md","filePath":"constraints/constraint_domains.md","lastUpdated":null}'),e={name:"constraints/constraint_domains.md"},n=t("",84),l=[n];function r(o,p,h,d,k,c){return a(),i("div",null,l)}const b=s(e,[["render",r]]);export{u as __pageData,b as default}; diff --git a/dev/assets/constraints_constraint_models.md.B_4-8zkK.js b/dev/assets/constraints_constraint_models.md.B_4-8zkK.js new file mode 100644 index 0000000..e7d8d05 --- /dev/null +++ b/dev/assets/constraints_constraint_models.md.B_4-8zkK.js @@ -0,0 +1 @@ +import{_ as o,c as s,o as n,m as t,a as e}from"./chunks/framework.RTxADYK2.js";const j=JSON.parse('{"title":"ConstraintModels.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_models.md","filePath":"constraints/constraint_models.md","lastUpdated":null}'),a={name:"constraints/constraint_models.md"},r=t("h1",{id:"ConstraintModels.jl",tabindex:"-1"},[e("ConstraintModels.jl "),t("a",{class:"header-anchor",href:"#ConstraintModels.jl","aria-label":'Permalink to "ConstraintModels.jl {#ConstraintModels.jl}"'},"​")],-1),l=t("p",null,[e("Documentation for "),t("code",null,"ConstraintModels.jl"),e(".")],-1),d=[r,l];function i(c,_,m,p,h,f){return n(),s("div",null,d)}const C=o(a,[["render",i]]);export{j as __pageData,C as default}; diff --git a/dev/assets/constraints_constraint_models.md.B_4-8zkK.lean.js b/dev/assets/constraints_constraint_models.md.B_4-8zkK.lean.js new file mode 100644 index 0000000..e7d8d05 --- /dev/null +++ b/dev/assets/constraints_constraint_models.md.B_4-8zkK.lean.js @@ -0,0 +1 @@ +import{_ as o,c as s,o as n,m as t,a as e}from"./chunks/framework.RTxADYK2.js";const j=JSON.parse('{"title":"ConstraintModels.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraint_models.md","filePath":"constraints/constraint_models.md","lastUpdated":null}'),a={name:"constraints/constraint_models.md"},r=t("h1",{id:"ConstraintModels.jl",tabindex:"-1"},[e("ConstraintModels.jl "),t("a",{class:"header-anchor",href:"#ConstraintModels.jl","aria-label":'Permalink to "ConstraintModels.jl {#ConstraintModels.jl}"'},"​")],-1),l=t("p",null,[e("Documentation for "),t("code",null,"ConstraintModels.jl"),e(".")],-1),d=[r,l];function i(c,_,m,p,h,f){return n(),s("div",null,d)}const C=o(a,[["render",i]]);export{j as __pageData,C as default}; diff --git a/dev/assets/constraints_constraints.md.BSecFW8a.js b/dev/assets/constraints_constraints.md.BSecFW8a.js new file mode 100644 index 0000000..040b61a --- /dev/null +++ b/dev/assets/constraints_constraints.md.BSecFW8a.js @@ -0,0 +1 @@ +import{_ as s,c as t,o as i,a7 as e}from"./chunks/framework.RTxADYK2.js";const k=JSON.parse('{"title":"Constraints.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraints.md","filePath":"constraints/constraints.md","lastUpdated":null}'),a={name:"constraints/constraints.md"},n=e('

Constraints.jl

Documentation for Constraints.jl.

# Constraints.USUAL_CONSTRAINTSConstant.
julia
USUAL_CONSTRAINTS::Dict

Dictionary that contains all the usual constraints defined in Constraint.jl. It is based on XCSP3-core specifications available at https://arxiv.org/abs/2009.00514

Adding a new constraint is as simple as

julia
@usual name p a sym₁ sym₂

where

  • name: constraint name

  • p: the length of the parameters (0 means no parameters)

  • a: the length of the arguments/variables (0 means any length is possible).

  • symᵢ: a sequence of symmetries (can be left empty)

Both a alone, or p and a together are optional.

Note that concept_name needs to be defined. Unless both error_name and icn_error_name are defined, a default error function will be computed. Please (re-)define error_name for a hand_made error function.

source


# Constraints.USUAL_SYMMETRIESConstant.
julia
USUAL_SYMMETRIES

A Dictionary that contains the function to apply for each symmetry to avoid searching a whole space.

source


# Constraints.ConstraintType.
julia
Constraint

Parametric stucture with the following fields.

  • concept: a Boolean function that, given an assignment x, outputs true if x satisfies the constraint, and false otherwise.

  • error: a positive function that works as preferences over invalid assignements. Return 0.0 if the constraint is satisfied, and a strictly positive real otherwise.

source


# Constraints.argsMethod.
julia
args(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of value is accepted.

source


# Constraints.conceptMethod.
julia
concept(c::Constraint)

Return the concept (function) of constraint c. concept(c::Constraint, x...; param = nothing) Apply the concept of c to values x and optionally param.

source


# Constraints.error_fMethod.
julia
error_f(c::Constraint)

Return the error function of constraint c. error_f(c::Constraint, x; param = nothing) Apply the error function of c to values x and optionally param.

source


# Constraints.params_lengthMethod.
julia
params_length(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of parameters is accepted.

source


# Constraints.shrink_conceptMethod.
julia
shrink_concept(s)

Simply delete the concept_ part of symbol or string starting with it. TODO: add a check with a warning if s starts with something different.

source


# Constraints.symmetriesMethod.
julia
symmetries(c::Constraint)

Return the list of symmetries of c.

source


# Constraints.xcsp_intensionMethod.
julia
xcsp_intension(list, predicate)

An intensional constraint is usually defined from a predicate over x. As such it encompass any generic constraint.

source


',22),r=[n];function o(l,p,d,c,h,u){return i(),t("div",null,r)}const g=s(a,[["render",o]]);export{k as __pageData,g as default}; diff --git a/dev/assets/constraints_constraints.md.BSecFW8a.lean.js b/dev/assets/constraints_constraints.md.BSecFW8a.lean.js new file mode 100644 index 0000000..ed75156 --- /dev/null +++ b/dev/assets/constraints_constraints.md.BSecFW8a.lean.js @@ -0,0 +1 @@ +import{_ as s,c as t,o as i,a7 as e}from"./chunks/framework.RTxADYK2.js";const k=JSON.parse('{"title":"Constraints.jl","description":"","frontmatter":{},"headers":[],"relativePath":"constraints/constraints.md","filePath":"constraints/constraints.md","lastUpdated":null}'),a={name:"constraints/constraints.md"},n=e("",22),r=[n];function o(l,p,d,c,h,u){return i(),t("div",null,r)}const g=s(a,[["render",o]]);export{k as __pageData,g as default}; diff --git a/dev/assets/cp_intro.md.BNFii_Eq.js b/dev/assets/cp_intro.md.BNFii_Eq.js new file mode 100644 index 0000000..7c709c7 --- /dev/null +++ b/dev/assets/cp_intro.md.BNFii_Eq.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as n,m as t,a as r}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"cp/intro.md","filePath":"cp/intro.md","lastUpdated":null}'),o={name:"cp/intro.md"},i=t("h1",{id:"Getting-Started",tabindex:"-1"},[r("Getting Started "),t("a",{class:"header-anchor",href:"#Getting-Started","aria-label":'Permalink to "Getting Started {#Getting-Started}"'},"​")],-1),s=t("p",null,"A soon to be starting guide to Constraint Programming in Julia.",-1),d=[i,s];function c(l,_,p,m,g,h){return n(),a("div",null,d)}const S=e(o,[["render",c]]);export{u as __pageData,S as default}; diff --git a/dev/assets/cp_intro.md.BNFii_Eq.lean.js b/dev/assets/cp_intro.md.BNFii_Eq.lean.js new file mode 100644 index 0000000..7c709c7 --- /dev/null +++ b/dev/assets/cp_intro.md.BNFii_Eq.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as n,m as t,a as r}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"cp/intro.md","filePath":"cp/intro.md","lastUpdated":null}'),o={name:"cp/intro.md"},i=t("h1",{id:"Getting-Started",tabindex:"-1"},[r("Getting Started "),t("a",{class:"header-anchor",href:"#Getting-Started","aria-label":'Permalink to "Getting Started {#Getting-Started}"'},"​")],-1),s=t("p",null,"A soon to be starting guide to Constraint Programming in Julia.",-1),d=[i,s];function c(l,_,p,m,g,h){return n(),a("div",null,d)}const S=e(o,[["render",c]]);export{u as __pageData,S as default}; diff --git a/dev/assets/cp_opt.md.BzEDNEew.js b/dev/assets/cp_opt.md.BzEDNEew.js new file mode 100644 index 0000000..a298c6b --- /dev/null +++ b/dev/assets/cp_opt.md.BzEDNEew.js @@ -0,0 +1 @@ +import{_ as o,c as e,o as a,m as t,a as i}from"./chunks/framework.RTxADYK2.js";const z=JSON.parse('{"title":"The World of Optimization","description":"","frontmatter":{},"headers":[],"relativePath":"cp/opt.md","filePath":"cp/opt.md","lastUpdated":null}'),n={name:"cp/opt.md"},r=t("h1",{id:"The-World-of-Optimization",tabindex:"-1"},[i("The World of Optimization "),t("a",{class:"header-anchor",href:"#The-World-of-Optimization","aria-label":'Permalink to "The World of Optimization {#The-World-of-Optimization}"'},"​")],-1),d=t("p",null,"Comparison and guidelines about the different way to do optimization.",-1),s=[r,d];function p(c,l,m,h,f,_){return a(),e("div",null,s)}const O=o(n,[["render",p]]);export{z as __pageData,O as default}; diff --git a/dev/assets/cp_opt.md.BzEDNEew.lean.js b/dev/assets/cp_opt.md.BzEDNEew.lean.js new file mode 100644 index 0000000..a298c6b --- /dev/null +++ b/dev/assets/cp_opt.md.BzEDNEew.lean.js @@ -0,0 +1 @@ +import{_ as o,c as e,o as a,m as t,a as i}from"./chunks/framework.RTxADYK2.js";const z=JSON.parse('{"title":"The World of Optimization","description":"","frontmatter":{},"headers":[],"relativePath":"cp/opt.md","filePath":"cp/opt.md","lastUpdated":null}'),n={name:"cp/opt.md"},r=t("h1",{id:"The-World-of-Optimization",tabindex:"-1"},[i("The World of Optimization "),t("a",{class:"header-anchor",href:"#The-World-of-Optimization","aria-label":'Permalink to "The World of Optimization {#The-World-of-Optimization}"'},"​")],-1),d=t("p",null,"Comparison and guidelines about the different way to do optimization.",-1),s=[r,d];function p(c,l,m,h,f,_){return a(),e("div",null,s)}const O=o(n,[["render",p]]);export{z as __pageData,O as default}; diff --git a/dev/assets/getting_started.md.D1Qzmbqp.js b/dev/assets/getting_started.md.D1Qzmbqp.js deleted file mode 100644 index 3da329e..0000000 --- a/dev/assets/getting_started.md.D1Qzmbqp.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as a,o as n,m as t,a as r}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started.md","filePath":"getting_started.md","lastUpdated":null}'),s={name:"getting_started.md"},i=t("h1",{id:"Getting-Started",tabindex:"-1"},[r("Getting Started "),t("a",{class:"header-anchor",href:"#Getting-Started","aria-label":'Permalink to "Getting Started {#Getting-Started}"'},"​")],-1),o=t("p",null,"A soon to be starting guide to Constraint Programming in Julia.",-1),d=[i,o];function c(_,g,l,m,p,h){return n(),a("div",null,d)}const S=e(s,[["render",c]]);export{u as __pageData,S as default}; diff --git a/dev/assets/getting_started.md.D1Qzmbqp.lean.js b/dev/assets/getting_started.md.D1Qzmbqp.lean.js deleted file mode 100644 index 3da329e..0000000 --- a/dev/assets/getting_started.md.D1Qzmbqp.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as a,o as n,m as t,a as r}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started.md","filePath":"getting_started.md","lastUpdated":null}'),s={name:"getting_started.md"},i=t("h1",{id:"Getting-Started",tabindex:"-1"},[r("Getting Started "),t("a",{class:"header-anchor",href:"#Getting-Started","aria-label":'Permalink to "Getting Started {#Getting-Started}"'},"​")],-1),o=t("p",null,"A soon to be starting guide to Constraint Programming in Julia.",-1),d=[i,o];function c(_,g,l,m,p,h){return n(),a("div",null,d)}const S=e(s,[["render",c]]);export{u as __pageData,S as default}; diff --git a/dev/assets/index copy.md.BptgAnbY.js b/dev/assets/index copy.md.BptgAnbY.js deleted file mode 100644 index 4d34570..0000000 --- a/dev/assets/index copy.md.BptgAnbY.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as t,o as e,a7 as s}from"./chunks/framework.RTxADYK2.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"index copy.md","filePath":"index copy.md","lastUpdated":null}'),r={name:"index copy.md"},i=s('

JuliaConstraints

JuliaConstraints is a collection of packages that help you solve constraint programming problems in Julia. Constraint programming involves modeling problems with constraints, such as "x > 5" or "x + y = 10", and finding solutions that satisfy all of the constraints. It is a part of the JuMP ecosystem that focuses on constraint programming in Julia.

The goal of packages in JuliaConstraints are two-fold: some of them provide a generic interface, others are solvers for CP models (either purely in Julia or wrapping). They make it easy to solve constraint-satisfaction problems (CSPs) and constraint-optimisation problems (COPs) in Julia using industry-standard solvers and mixed-integer solvers.

Other packages for CP in Julia include:

Operational Research vs Constraint Programming

Operational research (OR) is a problem-solving approach that uses mathematical models, statistical analysis, and optimization techniques to help organizations make better decisions. OR is concerned with understanding and optimizing complex systems, such as supply chains, transportation networks, and manufacturing processes, to improve efficiency and reduce costs.

On the other hand, constraint programming (CP) is a programming paradigm that focuses on solving problems with constraints. Constraints are conditions that must be satisfied for a solution to be valid. CP is often used to solve combinatorial problems, such as scheduling, routing, and allocation, where the search space of possible solutions is very large.

So, while both OR and CP are concerned with solving complex problems, they approach the problem-solving process from different angles. OR typically uses mathematical models and optimization techniques to analyze and optimize existing systems, while CP focuses on finding valid solutions that satisfy a set of constraints.

Constraint-based local search (CBLS) is a type of constraint programming solver that uses a heuristic search algorithm to find solutions to problems. It starts with an initial solution and tries to improve it by making small changes that satisfy the constraints. CBLS is especially useful for large and complex problems where finding an exact solution may take too much time or be impossible.

In contrast, other constraint programming solvers use a variety of algorithms and techniques to find exact solutions to problems. These solvers try to find a solution that satisfies all of the constraints in the problem. They can be useful for smaller problems where finding an exact solution is feasible, or for problems that have a clear mathematical structure.

In summary, CBLS is a type of constraint programming solver that uses a heuristic search algorithm to find good solutions, while other constraint programming solvers use various techniques to find exact solutions to problems.

',14),o=[i];function n(l,p,h,c,m,u){return e(),t("div",null,o)}const f=a(r,[["render",n]]);export{g as __pageData,f as default}; diff --git a/dev/assets/index copy.md.BptgAnbY.lean.js b/dev/assets/index copy.md.BptgAnbY.lean.js deleted file mode 100644 index 53bc7f3..0000000 --- a/dev/assets/index copy.md.BptgAnbY.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as t,o as e,a7 as s}from"./chunks/framework.RTxADYK2.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"index copy.md","filePath":"index copy.md","lastUpdated":null}'),r={name:"index copy.md"},i=s("",14),o=[i];function n(l,p,h,c,m,u){return e(),t("div",null,o)}const f=a(r,[["render",n]]);export{g as __pageData,f as default}; diff --git a/dev/assets/index-old.md.D8PnE1wz.js b/dev/assets/index-old.md.D8PnE1wz.js new file mode 100644 index 0000000..50b9d8c --- /dev/null +++ b/dev/assets/index-old.md.D8PnE1wz.js @@ -0,0 +1 @@ +import{_ as a,c as t,o as e,a7 as s}from"./chunks/framework.RTxADYK2.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"index-old.md","filePath":"index-old.md","lastUpdated":null}'),r={name:"index-old.md"},i=s('

JuliaConstraints

JuliaConstraints is a collection of packages that help you solve constraint programming problems in Julia. Constraint programming involves modeling problems with constraints, such as "x > 5" or "x + y = 10", and finding solutions that satisfy all of the constraints. It is a part of the JuMP ecosystem that focuses on constraint programming in Julia.

The goal of packages in JuliaConstraints are two-fold: some of them provide a generic interface, others are solvers for CP models (either purely in Julia or wrapping). They make it easy to solve constraint-satisfaction problems (CSPs) and constraint-optimisation problems (COPs) in Julia using industry-standard solvers and mixed-integer solvers.

Other packages for CP in Julia include:

Operational Research vs Constraint Programming

Operational research (OR) is a problem-solving approach that uses mathematical models, statistical analysis, and optimization techniques to help organizations make better decisions. OR is concerned with understanding and optimizing complex systems, such as supply chains, transportation networks, and manufacturing processes, to improve efficiency and reduce costs.

On the other hand, constraint programming (CP) is a programming paradigm that focuses on solving problems with constraints. Constraints are conditions that must be satisfied for a solution to be valid. CP is often used to solve combinatorial problems, such as scheduling, routing, and allocation, where the search space of possible solutions is very large.

So, while both OR and CP are concerned with solving complex problems, they approach the problem-solving process from different angles. OR typically uses mathematical models and optimization techniques to analyze and optimize existing systems, while CP focuses on finding valid solutions that satisfy a set of constraints.

Constraint-based local search (CBLS) is a type of constraint programming solver that uses a heuristic search algorithm to find solutions to problems. It starts with an initial solution and tries to improve it by making small changes that satisfy the constraints. CBLS is especially useful for large and complex problems where finding an exact solution may take too much time or be impossible.

In contrast, other constraint programming solvers use a variety of algorithms and techniques to find exact solutions to problems. These solvers try to find a solution that satisfies all of the constraints in the problem. They can be useful for smaller problems where finding an exact solution is feasible, or for problems that have a clear mathematical structure.

In summary, CBLS is a type of constraint programming solver that uses a heuristic search algorithm to find good solutions, while other constraint programming solvers use various techniques to find exact solutions to problems.

',14),o=[i];function n(l,h,p,c,m,u){return e(),t("div",null,o)}const f=a(r,[["render",n]]);export{g as __pageData,f as default}; diff --git a/dev/assets/index-old.md.D8PnE1wz.lean.js b/dev/assets/index-old.md.D8PnE1wz.lean.js new file mode 100644 index 0000000..b13eaca --- /dev/null +++ b/dev/assets/index-old.md.D8PnE1wz.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,o as e,a7 as s}from"./chunks/framework.RTxADYK2.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"index-old.md","filePath":"index-old.md","lastUpdated":null}'),r={name:"index-old.md"},i=s("",14),o=[i];function n(l,h,p,c,m,u){return e(),t("div",null,o)}const f=a(r,[["render",n]]);export{g as __pageData,f as default}; diff --git a/dev/assets/index.md.BgLux7MK.js b/dev/assets/index.md.BgLux7MK.js new file mode 100644 index 0000000..84ce378 --- /dev/null +++ b/dev/assets/index.md.BgLux7MK.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a7 as i}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Julia Constraints","text":"Model Smoothly Decide Wisely","tagline":"A Toolkit for Constraint Programming","image":{"src":"/logo.png","alt":"JuliaConstraints"},"actions":[{"theme":"brand","text":"Constraint Programming ?!","link":"/constraint_programming"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaConstraints/JuliaConstraints.github.io"}]},"features":[{"icon":"\\"JuMP.jl\\"/","title":"JuMP.jl","details":"Model optimization problems via JuMP.jl!","link":"https://jump.dev/"},{"icon":"\\"ToQUBO.jl\\"/","title":"ToQUBO.jl","details":"Convert and send optimization models to QUBO solvers!","link":"https://github.com/psrenergy/ToQUBO.jl"},{"icon":"\\"Pluto.jl\\"/","title":"Pluto.jl","details":"Simple, reactive programming environment via Julia notebooks","link":"https://plutojl.org/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),a={name:"index.md"},n=i('

What is Julia Constraints? (chatGPTed atm)

The Julia Constraints organization is dedicated to advancing Constraint Programming within the Julia ecosystem, serving as a hub for resources that facilitate the creation, understanding, and solution of constraint programming problems. Our goal is to make Constraint Programming accessible and efficient for users at all levels of expertise, by providing a comprehensive suite of tools that integrate seamlessly with JuMP.jl, a popular Julia package for mathematical optimization.

Our offerings include:

Core Packages:

A foundation of common packages (ConstraintCommons, ConstraintDomains, Constraints, ConstraintModels) that supply essential features for constraint programming, ensuring users have the basic tools necessary for their projects.

Learning and Translation Tools:

Advanced packages like CompositionalNetworks, QUBOConstraints, and ConstraintsTranslator bridge the gap between ease of modeling and computational efficiency. These tools learn from constraints and convert natural language problems into constraint programming solutions, requiring minimal input from the user beyond the model itself.

Solvers:

We provide a range of solvers, from native Julia solvers (LocalSearchSolvers) to interfaces with JuMP for external CP solvers, catering to various problem-solving needs.

MetaStrategist (Emerging Technology):

In its formative stages, MetaStrategist embodies our pioneering spirit. As a burgeoning meta-solving package, it aims to harness the strengths of CP and JuMP. Its vision is to formulate tailored strategies that consider the unique hardware and software resources at hand, offering a new horizon in problem-solving efficiency and adaptability.

Performance Checker (Community Resource):

PerfChecker.jl transcends its role within Julia Constraints, offering its capabilities to the broader Julia package ecosystem. This indispensable tool for cross-version performance checking not only safeguards the high efficiency and reliability of our packages but also serves the wider community. By facilitating clear and simple performance evaluations, PerfChecker.jl enhances both development and maintenance, contributing to the overall health and progress of Julia's growing library of resources.

At Julia Constraints, our mission is to democratize Constraint Programming by providing robust, user-friendly tools that simplify the modeling process, enhance efficiency, and empower users to solve complex problems with ease.

',2),s=[n];function r(l,c,m,g,h,p){return o(),t("div",null,s)}const f=e(a,[["render",r]]);export{u as __pageData,f as default}; diff --git a/dev/assets/index.md.BgLux7MK.lean.js b/dev/assets/index.md.BgLux7MK.lean.js new file mode 100644 index 0000000..cb3de6a --- /dev/null +++ b/dev/assets/index.md.BgLux7MK.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a7 as i}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Julia Constraints","text":"Model Smoothly Decide Wisely","tagline":"A Toolkit for Constraint Programming","image":{"src":"/logo.png","alt":"JuliaConstraints"},"actions":[{"theme":"brand","text":"Constraint Programming ?!","link":"/constraint_programming"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaConstraints/JuliaConstraints.github.io"}]},"features":[{"icon":"\\"JuMP.jl\\"/","title":"JuMP.jl","details":"Model optimization problems via JuMP.jl!","link":"https://jump.dev/"},{"icon":"\\"ToQUBO.jl\\"/","title":"ToQUBO.jl","details":"Convert and send optimization models to QUBO solvers!","link":"https://github.com/psrenergy/ToQUBO.jl"},{"icon":"\\"Pluto.jl\\"/","title":"Pluto.jl","details":"Simple, reactive programming environment via Julia notebooks","link":"https://plutojl.org/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),a={name:"index.md"},n=i("",2),s=[n];function r(l,c,m,g,h,p){return o(),t("div",null,s)}const f=e(a,[["render",r]]);export{u as __pageData,f as default}; diff --git a/dev/assets/index.md.D3juxETI.js b/dev/assets/index.md.D3juxETI.js deleted file mode 100644 index 6f47337..0000000 --- a/dev/assets/index.md.D3juxETI.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as o,o as i,m as t}from"./chunks/framework.RTxADYK2.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Julia Constraints","text":"Model Smoothly Decide Wisely","tagline":"A Toolkit for Constraint Programming","image":{"src":"/logo.png","alt":"JuliaConstraints"},"actions":[{"theme":"brand","text":"Getting Started","link":"/getting_started"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaConstraints/JuliaConstraints.github.io"},{"theme":"alt","text":"API Examples","link":"/cbls"}]},"features":[{"icon":"\\"JuMP.jl\\"/","title":"JuMP.jl","details":"Model optimization problems via JuMP.jl!","link":"https://jump.dev/"},{"icon":"\\"ToQUBO.jl\\"/","title":"ToQUBO.jl","details":"Convert and send optimization models to QUBO solvers!","link":"https://github.com/psrenergy/ToQUBO.jl"},{"icon":"\\"Pluto.jl\\"/","title":"Pluto.jl","details":"Simple, reactive programming environment via Julia notebooks","link":"https://plutojl.org/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),l={name:"index.md"},n=t("p",{style:{"margin-bottom":"2cm"}},null,-1),a=t("div",{class:"vp-doc",style:{width:"80%",margin:"auto"}},[t("h1",null," What is Julia Constraints? "),t("p",null,"I really wonder!")],-1),s=[n,a];function r(d,m,c,h,p,u){return i(),o("div",null,s)}const x=e(l,[["render",r]]);export{_ as __pageData,x as default}; diff --git a/dev/assets/index.md.D3juxETI.lean.js b/dev/assets/index.md.D3juxETI.lean.js deleted file mode 100644 index 6f47337..0000000 --- a/dev/assets/index.md.D3juxETI.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as o,o as i,m as t}from"./chunks/framework.RTxADYK2.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Julia Constraints","text":"Model Smoothly Decide Wisely","tagline":"A Toolkit for Constraint Programming","image":{"src":"/logo.png","alt":"JuliaConstraints"},"actions":[{"theme":"brand","text":"Getting Started","link":"/getting_started"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaConstraints/JuliaConstraints.github.io"},{"theme":"alt","text":"API Examples","link":"/cbls"}]},"features":[{"icon":"\\"JuMP.jl\\"/","title":"JuMP.jl","details":"Model optimization problems via JuMP.jl!","link":"https://jump.dev/"},{"icon":"\\"ToQUBO.jl\\"/","title":"ToQUBO.jl","details":"Convert and send optimization models to QUBO solvers!","link":"https://github.com/psrenergy/ToQUBO.jl"},{"icon":"\\"Pluto.jl\\"/","title":"Pluto.jl","details":"Simple, reactive programming environment via Julia notebooks","link":"https://plutojl.org/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),l={name:"index.md"},n=t("p",{style:{"margin-bottom":"2cm"}},null,-1),a=t("div",{class:"vp-doc",style:{width:"80%",margin:"auto"}},[t("h1",null," What is Julia Constraints? "),t("p",null,"I really wonder!")],-1),s=[n,a];function r(d,m,c,h,p,u){return i(),o("div",null,s)}const x=e(l,[["render",r]]);export{_ as __pageData,x as default}; diff --git a/dev/assets/compositional_networks.md.BhghO7dc.js b/dev/assets/learning_compositional_networks.md.CcHo_ron.js similarity index 62% rename from dev/assets/compositional_networks.md.BhghO7dc.js rename to dev/assets/learning_compositional_networks.md.CcHo_ron.js index aae7e2b..17fa94b 100644 --- a/dev/assets/compositional_networks.md.BhghO7dc.js +++ b/dev/assets/learning_compositional_networks.md.CcHo_ron.js @@ -1,4 +1,4 @@ -import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const g=JSON.parse('{"title":"CompositionalNetworks.jl","description":"","frontmatter":{},"headers":[],"relativePath":"compositional_networks.md","filePath":"compositional_networks.md","lastUpdated":null}'),t={name:"compositional_networks.md"},o=e(`

CompositionalNetworks.jl

Documentation for CompositionalNetworks.jl.

# CompositionalNetworks.CompositionType.
julia
struct Composition{F<:Function}

Store the all the information of a composition learned by an ICN.

source


# CompositionalNetworks.CompositionMethod.
julia
Composition(f::F, symbols) where {F<:Function}

Construct a Composition.

source


# CompositionalNetworks.ICNType.
julia
ICN(; nvars, dom_size, param, transformation, arithmetic, aggregation, comparison)

Construct an Interpretable Compositional Network, with the following arguments:

  • nvars: number of variable in the constraint

  • dom_size: maximum domain size of any variable in the constraint

  • param: optional parameter (default to nothing)

  • transformation: a transformation layer (optional)

  • arithmetic: a arithmetic layer (optional)

  • aggregation: a aggregation layer (optional)

  • comparison: a comparison layer (optional)

source


# CompositionalNetworks.LayerType.
julia
Layer

A structure to store a LittleDict of operations that can be selected during the learning phase of an ICN. If the layer is exclusive, only one operation can be selected at a time.

source


# Base.lengthMethod.
julia
length(layer)

Return the number of operations in a layer.

source


# Base.lengthMethod.
julia
Base.length(icn)

Return the total number of operations of an ICN.

source


# CompositionalNetworks._composeMethod.
julia
_compose(icn)

Internal function called by compose and show_composition.

source


# CompositionalNetworks.ag_count_positiveMethod.
julia
ag_count_positive(x)

Count the number of strictly positive elements of x.

source


# CompositionalNetworks.ag_sumMethod.
julia
ag_sum(x)

Aggregate through + a vector into a single scalar.

source


# CompositionalNetworks.aggregation_layerMethod.
julia
aggregation_layer()

Generate the layer of aggregations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.ar_prodMethod.
julia
ar_prod(x)

Reduce k = length(x) vectors through product to a single vector.

source


# CompositionalNetworks.ar_sumMethod.
julia
ar_sum(x)

Reduce k = length(x) vectors through sum to a single vector.

source


# CompositionalNetworks.arithmetic_layerMethod.
julia
arithmetic_layer()

Generate the layer of arithmetic operations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.as_bitvectorFunction.
julia
as_bitvector(n::Int, max_n::Int = n)

Convert an Int to a BitVector of minimal size (relatively to max_n).

source


# CompositionalNetworks.as_intMethod.
julia
as_int(v::AbstractVector)

Convert a BitVector into an Int.

source


# CompositionalNetworks.co_abs_diff_val_paramMethod.
julia
co_abs_diff_val_param(x; param)

Return the absolute difference between x and param.

source


# CompositionalNetworks.co_abs_diff_val_varsMethod.
julia
co_abs_diff_val_vars(x; nvars)

Return the absolute difference between x and the number of variables nvars.

source


# CompositionalNetworks.co_euclidianMethod.
julia
co_euclidian(x; dom_size)

Compute an euclidian norm with domain size dom_size of a scalar.

source


# CompositionalNetworks.co_euclidian_paramMethod.
julia
co_euclidian_param(x; param, dom_size)

Compute an euclidian norm with domain size dom_size, weigthed by param, of a scalar.

source


# CompositionalNetworks.co_identityMethod.
julia
co_identity(x)

Identity function. Already defined in Julia as identity, specialized for scalars in the comparison layer.

source


# CompositionalNetworks.co_param_minus_valMethod.
julia
co_param_minus_val(x; param)

Return the difference param - x if positive, 0.0 otherwise.

source


# CompositionalNetworks.co_val_minus_paramMethod.
julia
co_val_minus_param(x; param)

Return the difference x - param if positive, 0.0 otherwise.

source


# CompositionalNetworks.co_val_minus_varsMethod.
julia
co_val_minus_vars(x; nvars)

Return the difference x - nvars if positive, 0.0 otherwise, where nvars denotes the numbers of variables.

source


# CompositionalNetworks.co_vars_minus_valMethod.
julia
co_vars_minus_val(x; nvars)

Return the difference nvars - x if positive, 0.0 otherwise, where nvars denotes the numbers of variables.

source


# CompositionalNetworks.codeFunction.
julia
code(c::Composition, lang=:maths; name="composition")

Access the code of a composition c in a given language lang. The name of the generated method is optional.

source


# CompositionalNetworks.comparison_layerFunction.
julia
comparison_layer(param = false)

Generate the layer of transformations functions of the ICN. Iff param value is set, also includes all the parametric comparison with that value. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.composeFunction.
julia
compose(icn, weigths=nothing)

Return a function composed by some of the operations of a given ICN. Can be applied to any vector of variables. If weigths are given, will assign to icn.

source


# CompositionalNetworks.compose_to_file!Method.
julia
compose_to_file!(concept, name, path; domains, param = nothing, language = :Julia, search = :complete, global_iter = 10, local_iter = 100, metric = hamming, popSize = 200)

Explore, learn and compose a function and write it to a file.

Arguments:

  • concept: the concept to learn

  • name: the name to give to the constraint

  • path: path of the output file

Keywords arguments:

  • domains: domains that defines the search space

  • param: an optional paramater of the constraint

  • language: the language to export to, default to :julia

  • search: either :partial or :complete search

  • global_iter: number of learning iteration

  • local_iter: number of generation in the genetic algorithm

  • metric: the metric to measure the distance between a configuration and known solutions

  • popSize: size of the population in the genetic algorithm

source


# CompositionalNetworks.compositionMethod.
julia
composition(c::Composition)

Access the actual method of an ICN composition c.

source


# CompositionalNetworks.composition_to_file!Function.
julia
composition_to_file!(c::Composition, path, name, language=:Julia)

Write the composition code in a given language into a file at path.

source


# CompositionalNetworks.excluMethod.
julia
exclu(layer)

Return true if the layer has mutually exclusive operations.

source


# CompositionalNetworks.explore_learn_composeMethod.
julia
explore_learn_compose(concept; domains, param = nothing, search = :complete, global_iter = 10, local_iter = 100, metric = hamming, popSize = 200, action = :composition)

Explore a search space, learn a composition from an ICN, and compose an error function.

Arguments:

  • concept: the concept of the targeted constraint

  • domains: domains of the variables that define the training space

  • param: an optional parameter of the constraint

  • search: either flexible,:partial or :complete search. Flexible search will use search_limit and solutions_limit to determine if the search space needs to be partially or completely explored

  • global_iter: number of learning iteration

  • local_iter: number of generation in the genetic algorithm

  • metric: the metric to measure the distance between a configuration and known solutions

  • popSize: size of the population in the genetic algorithm

  • action: either :symbols to have a description of the composition or :composition to have the composed function itself

source


# CompositionalNetworks.functionsMethod.
julia
functions(layer)

Access the operations of a layer. The container is ordered.

source


# CompositionalNetworks.generateMethod.
julia
generate(c::Composition, name, lang)

Generates the code of c in a specific language lang.

source


# CompositionalNetworks.generate_inclusive_operationsMethod.
julia
generate_inclusive_operations(predicate, bits)
+import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const g=JSON.parse('{"title":"CompositionalNetworks.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/compositional_networks.md","filePath":"learning/compositional_networks.md","lastUpdated":null}'),t={name:"learning/compositional_networks.md"},o=e(`

CompositionalNetworks.jl

Documentation for CompositionalNetworks.jl.

# CompositionalNetworks.CompositionType.
julia
struct Composition{F<:Function}

Store the all the information of a composition learned by an ICN.

source


# CompositionalNetworks.CompositionMethod.
julia
Composition(f::F, symbols) where {F<:Function}

Construct a Composition.

source


# CompositionalNetworks.ICNType.
julia
ICN(; nvars, dom_size, param, transformation, arithmetic, aggregation, comparison)

Construct an Interpretable Compositional Network, with the following arguments:

  • nvars: number of variable in the constraint

  • dom_size: maximum domain size of any variable in the constraint

  • param: optional parameter (default to nothing)

  • transformation: a transformation layer (optional)

  • arithmetic: a arithmetic layer (optional)

  • aggregation: a aggregation layer (optional)

  • comparison: a comparison layer (optional)

source


# CompositionalNetworks.LayerType.
julia
Layer

A structure to store a LittleDict of operations that can be selected during the learning phase of an ICN. If the layer is exclusive, only one operation can be selected at a time.

source


# Base.lengthMethod.
julia
length(layer)

Return the number of operations in a layer.

source


# Base.lengthMethod.
julia
Base.length(icn)

Return the total number of operations of an ICN.

source


# CompositionalNetworks._composeMethod.
julia
_compose(icn)

Internal function called by compose and show_composition.

source


# CompositionalNetworks.ag_count_positiveMethod.
julia
ag_count_positive(x)

Count the number of strictly positive elements of x.

source


# CompositionalNetworks.ag_sumMethod.
julia
ag_sum(x)

Aggregate through + a vector into a single scalar.

source


# CompositionalNetworks.aggregation_layerMethod.
julia
aggregation_layer()

Generate the layer of aggregations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.ar_prodMethod.
julia
ar_prod(x)

Reduce k = length(x) vectors through product to a single vector.

source


# CompositionalNetworks.ar_sumMethod.
julia
ar_sum(x)

Reduce k = length(x) vectors through sum to a single vector.

source


# CompositionalNetworks.arithmetic_layerMethod.
julia
arithmetic_layer()

Generate the layer of arithmetic operations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.as_bitvectorFunction.
julia
as_bitvector(n::Int, max_n::Int = n)

Convert an Int to a BitVector of minimal size (relatively to max_n).

source


# CompositionalNetworks.as_intMethod.
julia
as_int(v::AbstractVector)

Convert a BitVector into an Int.

source


# CompositionalNetworks.co_abs_diff_val_paramMethod.
julia
co_abs_diff_val_param(x; param)

Return the absolute difference between x and param.

source


# CompositionalNetworks.co_abs_diff_val_varsMethod.
julia
co_abs_diff_val_vars(x; nvars)

Return the absolute difference between x and the number of variables nvars.

source


# CompositionalNetworks.co_euclidianMethod.
julia
co_euclidian(x; dom_size)

Compute an euclidian norm with domain size dom_size of a scalar.

source


# CompositionalNetworks.co_euclidian_paramMethod.
julia
co_euclidian_param(x; param, dom_size)

Compute an euclidian norm with domain size dom_size, weigthed by param, of a scalar.

source


# CompositionalNetworks.co_identityMethod.
julia
co_identity(x)

Identity function. Already defined in Julia as identity, specialized for scalars in the comparison layer.

source


# CompositionalNetworks.co_param_minus_valMethod.
julia
co_param_minus_val(x; param)

Return the difference param - x if positive, 0.0 otherwise.

source


# CompositionalNetworks.co_val_minus_paramMethod.
julia
co_val_minus_param(x; param)

Return the difference x - param if positive, 0.0 otherwise.

source


# CompositionalNetworks.co_val_minus_varsMethod.
julia
co_val_minus_vars(x; nvars)

Return the difference x - nvars if positive, 0.0 otherwise, where nvars denotes the numbers of variables.

source


# CompositionalNetworks.co_vars_minus_valMethod.
julia
co_vars_minus_val(x; nvars)

Return the difference nvars - x if positive, 0.0 otherwise, where nvars denotes the numbers of variables.

source


# CompositionalNetworks.codeFunction.
julia
code(c::Composition, lang=:maths; name="composition")

Access the code of a composition c in a given language lang. The name of the generated method is optional.

source


# CompositionalNetworks.comparison_layerFunction.
julia
comparison_layer(param = false)

Generate the layer of transformations functions of the ICN. Iff param value is set, also includes all the parametric comparison with that value. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.composeFunction.
julia
compose(icn, weigths=nothing)

Return a function composed by some of the operations of a given ICN. Can be applied to any vector of variables. If weigths are given, will assign to icn.

source


# CompositionalNetworks.compose_to_file!Method.
julia
compose_to_file!(concept, name, path; domains, param = nothing, language = :Julia, search = :complete, global_iter = 10, local_iter = 100, metric = hamming, popSize = 200)

Explore, learn and compose a function and write it to a file.

Arguments:

  • concept: the concept to learn

  • name: the name to give to the constraint

  • path: path of the output file

Keywords arguments:

  • domains: domains that defines the search space

  • param: an optional paramater of the constraint

  • language: the language to export to, default to :julia

  • search: either :partial or :complete search

  • global_iter: number of learning iteration

  • local_iter: number of generation in the genetic algorithm

  • metric: the metric to measure the distance between a configuration and known solutions

  • popSize: size of the population in the genetic algorithm

source


# CompositionalNetworks.compositionMethod.
julia
composition(c::Composition)

Access the actual method of an ICN composition c.

source


# CompositionalNetworks.composition_to_file!Function.
julia
composition_to_file!(c::Composition, path, name, language=:Julia)

Write the composition code in a given language into a file at path.

source


# CompositionalNetworks.excluMethod.
julia
exclu(layer)

Return true if the layer has mutually exclusive operations.

source


# CompositionalNetworks.explore_learn_composeMethod.
julia
explore_learn_compose(concept; domains, param = nothing, search = :complete, global_iter = 10, local_iter = 100, metric = hamming, popSize = 200, action = :composition)

Explore a search space, learn a composition from an ICN, and compose an error function.

Arguments:

  • concept: the concept of the targeted constraint

  • domains: domains of the variables that define the training space

  • param: an optional parameter of the constraint

  • search: either flexible,:partial or :complete search. Flexible search will use search_limit and solutions_limit to determine if the search space needs to be partially or completely explored

  • global_iter: number of learning iteration

  • local_iter: number of generation in the genetic algorithm

  • metric: the metric to measure the distance between a configuration and known solutions

  • popSize: size of the population in the genetic algorithm

  • action: either :symbols to have a description of the composition or :composition to have the composed function itself

source


# CompositionalNetworks.functionsMethod.
julia
functions(layer)

Access the operations of a layer. The container is ordered.

source


# CompositionalNetworks.generateMethod.
julia
generate(c::Composition, name, lang)

Generates the code of c in a specific language lang.

source


# CompositionalNetworks.generate_inclusive_operationsMethod.
julia
generate_inclusive_operations(predicate, bits)
 generate_exclusive_operation(max_op_number)

Generates the operations (weigths) of a layer with inclusive/exclusive operations.

source


# CompositionalNetworks.generate_weigthsMethod.
julia
generate_weigths(layers)
 generate_weigths(icn)

Generate the weigths of a collection of layers or of an ICN.

source


# CompositionalNetworks.hammingMethod.
julia
hamming(x, X)

Compute the hamming distance of x over a collection of solutions X, i.e. the minimal number of variables to switch in xto reach a solution.

source


# CompositionalNetworks.is_viableMethod.
julia
is_viable(layer, w)
 is_viable(icn)
diff --git a/dev/assets/learning_compositional_networks.md.CcHo_ron.lean.js b/dev/assets/learning_compositional_networks.md.CcHo_ron.lean.js
new file mode 100644
index 0000000..6903a5f
--- /dev/null
+++ b/dev/assets/learning_compositional_networks.md.CcHo_ron.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const g=JSON.parse('{"title":"CompositionalNetworks.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/compositional_networks.md","filePath":"learning/compositional_networks.md","lastUpdated":null}'),t={name:"learning/compositional_networks.md"},o=e("",156),l=[o];function r(n,p,d,h,c,k){return a(),s("div",null,l)}const b=i(t,[["render",r]]);export{g as __pageData,b as default};
diff --git a/dev/assets/learning_constraint_learning.md.DntSqYyZ.js b/dev/assets/learning_constraint_learning.md.DntSqYyZ.js
new file mode 100644
index 0000000..e24db40
--- /dev/null
+++ b/dev/assets/learning_constraint_learning.md.DntSqYyZ.js
@@ -0,0 +1 @@
+import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"ConstraintLearning.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/constraint_learning.md","filePath":"learning/constraint_learning.md","lastUpdated":null}'),t={name:"learning/constraint_learning.md"},n=e('

ConstraintLearning.jl

Documentation for ConstraintLearning.jl.

# ConstraintLearning.ICNConfigType.
julia
struct ICNConfig{O <: ICNOptimizer}

A structure to hold the metric and optimizer configurations used in learning the weigths of an ICN.

source


# ConstraintLearning.ICNConfigMethod.
julia
ICNConfig(; metric = :hamming, optimizer = ICNGeneticOptimizer())

Constructor for ICNConfig. Defaults to hamming metric using a genetic algorithm.

source


# ConstraintLearning.ICNGeneticOptimizerMethod.
julia
ICNGeneticOptimizer(; kargs...)

Default constructor to learn an ICN through a Genetic Algorithm. Default kargs TBW.

source


# ConstraintLearning.ICNLocalSearchOptimizerType.
julia
ICNLocalSearchOptimizer(options = LocalSearchSolvers.Options())

Default constructor to learn an ICN through a CBLS solver.

source


# ConstraintLearning.ICNOptimizerType.
julia
const ICNOptimizer = CompositionalNetworks.AbstractOptimizer

An abstract type for optmizers defined to learn ICNs.

source


# ConstraintLearning.QUBOGradientOptimizerMethod.
julia
QUBOGradientOptimizer(; kargs...)

A QUBO optimizer based on gradient descent. Defaults TBW

source


# ConstraintLearning.QUBOOptimizerType.
julia
const QUBOOptimizer = QUBOConstraints.AbstractOptimizer

An abstract type for optimizers used to learn QUBO matrices from constraints.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNGeneticOptimizer; parameters...)

Extends the optimize! method to ICNGeneticOptimizer.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNLocalSearchOptimizer; parameters...)

Extends the optimize! method to ICNLocalSearchOptimizer.

source


# ConstraintLearning._optimize!Method.
julia
_optimize!(icn, X, X_sols; metric = hamming, pop_size = 200)

Optimize and set the weigths of an ICN with a given set of configuration X and solutions X_sols.

source


# ConstraintLearning.domain_sizeMethod.
julia
domain_size(ds::Number)

Extends the domain_size function when ds is number (for dispatch purposes).

source


# ConstraintLearning.generate_populationMethod.
julia
generate_population(icn, pop_size

Generate a pôpulation of weigths (individuals) for the genetic algorithm weigthing icn.

source


# ConstraintLearning.icnMethod.
julia
icn(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.lossMethod.
julia
loss(x, y, Q)

Loss of the prediction given by Q, a training set y, and a given configuration x.

source


# ConstraintLearning.make_dfMethod.
julia
make_df(X, Q, penalty, binarization, domains)

DataFrame arrangement to ouput some basic evaluation of a matrix Q.

source


# ConstraintLearning.make_set_penaltyMethod.
julia
make_set_penalty(X, X̅, args...; kargs)

Return a penalty function when the training set is already split into a pair of solutions X and non solutions .

source


# ConstraintLearning.make_training_setsMethod.
julia
make_training_sets(X, penalty, args...)

Return a pair of solutions and non solutions sets based on X and penalty.

source


# ConstraintLearning.mutually_exclusiveMethod.
julia
mutually_exclusive(layer, w)

Constraint ensuring that w encode exclusive operations in layer.

source


# ConstraintLearning.no_empty_layerMethod.
julia
no_empty_layer(x; X = nothing)

Constraint ensuring that at least one operation is selected.

source


# ConstraintLearning.optimize!Method.
julia
optimize!(icn, X, X_sols, global_iter, local_iter; metric=hamming, popSize=100)

Optimize and set the weigths of an ICN with a given set of configuration X and solutions X_sols. The best weigths among global_iter will be set.

source


# ConstraintLearning.parameter_specific_operationsMethod.
julia
parameter_specific_operations(x; X = nothing)

Constraint ensuring that at least one operation related to parameters is selected if the error function to be learned is parametric.

source


# ConstraintLearning.predictMethod.
julia
predict(x, Q)

Return the predictions given by Q for a given configuration x.

source


# ConstraintLearning.preliminariesMethod.
julia
preliminaries(args)

Preliminaries to the training process in a QUBOGradientOptimizer run.

source


# ConstraintLearning.quboFunction.
julia
qubo(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.sub_eltypeMethod.
julia
sub_eltype(X)

Return the element type of of the first element of a collection.

source


# ConstraintLearning.train!Method.
julia
train!(Q, X, penalty, η, precision, X_test, oversampling, binarization, domains)

Training inner method.

source


# ConstraintLearning.trainMethod.
julia
train(X, penalty[, d]; optimizer = QUBOGradientOptimizer(), X_test = X)

Learn a QUBO matrix on training set X for a constraint defined by penalty with optional domain information d. By default, it uses a QUBOGradientOptimizer and X as a testing set.

source


# ConstraintLearning.δMethod.
julia
δ(X[, Y]; discrete = true)

Compute the extrema over a collection X``or a pair of collection(X, Y)`.

source


',58),r=[n];function l(o,p,d,h,c,g){return a(),s("div",null,r)}const b=i(t,[["render",l]]);export{u as __pageData,b as default}; diff --git a/dev/assets/learning_constraint_learning.md.DntSqYyZ.lean.js b/dev/assets/learning_constraint_learning.md.DntSqYyZ.lean.js new file mode 100644 index 0000000..36bade1 --- /dev/null +++ b/dev/assets/learning_constraint_learning.md.DntSqYyZ.lean.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"ConstraintLearning.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/constraint_learning.md","filePath":"learning/constraint_learning.md","lastUpdated":null}'),t={name:"learning/constraint_learning.md"},n=e("",58),r=[n];function l(o,p,d,h,c,g){return a(),s("div",null,r)}const b=i(t,[["render",l]]);export{u as __pageData,b as default}; diff --git a/dev/assets/learning_qubo_constraints.md.D6WkgtAs.js b/dev/assets/learning_qubo_constraints.md.D6WkgtAs.js new file mode 100644 index 0000000..88b97d0 --- /dev/null +++ b/dev/assets/learning_qubo_constraints.md.D6WkgtAs.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const k=JSON.parse('{"title":"QUBOConstraints.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_constraints.md","filePath":"learning/qubo_constraints.md","lastUpdated":null}'),t={name:"learning/qubo_constraints.md"},n=e('

QUBOConstraints.jl

Documentation for QUBOConstraints.jl.

# QUBOConstraints.AbstractOptimizerType.
julia
AbstractOptimizer

An abstract type (interface) used to learn QUBO matrices from constraints. Only a train method is required.

source


# QUBOConstraints.QUBO_baseFunction.
julia
QUBO_base(n, weight = 1)

A basic QUBO matrix to ensure that binarized variables keep a valid encoding.

source


# QUBOConstraints.QUBO_linear_sumMethod.
julia
QUBO_linear_sum(n, σ)

One valid QUBO matrix given n variables and parameter σ for the linear sum constraint.

source


# QUBOConstraints.binarizeMethod.
julia
binarize(x[, domain]; binarization = :one_hot)

Binarize x following the binarization encoding. If x is a vector (instead of a number per say), domain is optional.

source


# QUBOConstraints.debinarizeMethod.
julia
debinarize(x[, domain]; binarization = :one_hot)

Transform a binary vector into a number or a set of number. If domain is not given, it will compute a default value based on binarization and x.

source


# QUBOConstraints.is_validFunction.
julia
is_valid(x, encoding::Symbol = :none)

Check if x has a valid format for encoding.

For instance, if encoding == :one_hot, at most one bit of x can be set to 1.

source


# QUBOConstraints.trainMethod.
julia
train(args...)

Default train method for any AbstractOptimizer.

source


',16),r=[n];function o(l,d,p,h,c,b){return a(),s("div",null,r)}const g=i(t,[["render",o]]);export{k as __pageData,g as default}; diff --git a/dev/assets/learning_qubo_constraints.md.D6WkgtAs.lean.js b/dev/assets/learning_qubo_constraints.md.D6WkgtAs.lean.js new file mode 100644 index 0000000..bfc0c68 --- /dev/null +++ b/dev/assets/learning_qubo_constraints.md.D6WkgtAs.lean.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const k=JSON.parse('{"title":"QUBOConstraints.jl","description":"","frontmatter":{},"headers":[],"relativePath":"learning/qubo_constraints.md","filePath":"learning/qubo_constraints.md","lastUpdated":null}'),t={name:"learning/qubo_constraints.md"},n=e("",16),r=[n];function o(l,d,p,h,c,b){return a(),s("div",null,r)}const g=i(t,[["render",o]]);export{k as __pageData,g as default}; diff --git a/dev/assets/local_search_solvers.md.C_V13GvZ.lean.js b/dev/assets/local_search_solvers.md.C_V13GvZ.lean.js deleted file mode 100644 index 3a091c7..0000000 --- a/dev/assets/local_search_solvers.md.C_V13GvZ.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"LocalSearchSolvers.jl","description":"","frontmatter":{},"headers":[],"relativePath":"local_search_solvers.md","filePath":"local_search_solvers.md","lastUpdated":null}'),l={name:"local_search_solvers.md"},t=e("",286),r=[t];function o(h,n,p,d,c,k){return a(),i("div",null,r)}const g=s(l,[["render",o]]);export{u as __pageData,g as default}; diff --git a/dev/assets/meta_meta_strategist.md.DPB3xUTb.js b/dev/assets/meta_meta_strategist.md.DPB3xUTb.js new file mode 100644 index 0000000..e6d662e --- /dev/null +++ b/dev/assets/meta_meta_strategist.md.DPB3xUTb.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as r,m as t,a as e}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"MetaStrategist.jl","description":"","frontmatter":{},"headers":[],"relativePath":"meta/meta_strategist.md","filePath":"meta/meta_strategist.md","lastUpdated":null}'),o={name:"meta/meta_strategist.md"},i=t("h1",{id:"MetaStrategist.jl",tabindex:"-1"},[e("MetaStrategist.jl "),t("a",{class:"header-anchor",href:"#MetaStrategist.jl","aria-label":'Permalink to "MetaStrategist.jl {#MetaStrategist.jl}"'},"​")],-1),l=t("p",null,[e("Documentation for "),t("code",null,"MetaStrategist.jl"),e(".")],-1),n=[i,l];function c(d,_,m,p,g,h){return r(),s("div",null,n)}const S=a(o,[["render",c]]);export{u as __pageData,S as default}; diff --git a/dev/assets/meta_meta_strategist.md.DPB3xUTb.lean.js b/dev/assets/meta_meta_strategist.md.DPB3xUTb.lean.js new file mode 100644 index 0000000..e6d662e --- /dev/null +++ b/dev/assets/meta_meta_strategist.md.DPB3xUTb.lean.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as r,m as t,a as e}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"MetaStrategist.jl","description":"","frontmatter":{},"headers":[],"relativePath":"meta/meta_strategist.md","filePath":"meta/meta_strategist.md","lastUpdated":null}'),o={name:"meta/meta_strategist.md"},i=t("h1",{id:"MetaStrategist.jl",tabindex:"-1"},[e("MetaStrategist.jl "),t("a",{class:"header-anchor",href:"#MetaStrategist.jl","aria-label":'Permalink to "MetaStrategist.jl {#MetaStrategist.jl}"'},"​")],-1),l=t("p",null,[e("Documentation for "),t("code",null,"MetaStrategist.jl"),e(".")],-1),n=[i,l];function c(d,_,m,p,g,h){return r(),s("div",null,n)}const S=a(o,[["render",c]]);export{u as __pageData,S as default}; diff --git a/dev/assets/meta_strategist.md.CMoOFVoq.js b/dev/assets/meta_strategist.md.CMoOFVoq.js deleted file mode 100644 index 8cde4fb..0000000 --- a/dev/assets/meta_strategist.md.CMoOFVoq.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as s,o as r,m as t,a as e}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"MetaStrategist.jl","description":"","frontmatter":{},"headers":[],"relativePath":"meta_strategist.md","filePath":"meta_strategist.md","lastUpdated":null}'),o={name:"meta_strategist.md"},i=t("h1",{id:"MetaStrategist.jl",tabindex:"-1"},[e("MetaStrategist.jl "),t("a",{class:"header-anchor",href:"#MetaStrategist.jl","aria-label":'Permalink to "MetaStrategist.jl {#MetaStrategist.jl}"'},"​")],-1),l=t("p",null,[e("Documentation for "),t("code",null,"MetaStrategist.jl"),e(".")],-1),n=[i,l];function c(d,_,m,p,g,h){return r(),s("div",null,n)}const S=a(o,[["render",c]]);export{u as __pageData,S as default}; diff --git a/dev/assets/meta_strategist.md.CMoOFVoq.lean.js b/dev/assets/meta_strategist.md.CMoOFVoq.lean.js deleted file mode 100644 index 8cde4fb..0000000 --- a/dev/assets/meta_strategist.md.CMoOFVoq.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as s,o as r,m as t,a as e}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"MetaStrategist.jl","description":"","frontmatter":{},"headers":[],"relativePath":"meta_strategist.md","filePath":"meta_strategist.md","lastUpdated":null}'),o={name:"meta_strategist.md"},i=t("h1",{id:"MetaStrategist.jl",tabindex:"-1"},[e("MetaStrategist.jl "),t("a",{class:"header-anchor",href:"#MetaStrategist.jl","aria-label":'Permalink to "MetaStrategist.jl {#MetaStrategist.jl}"'},"​")],-1),l=t("p",null,[e("Documentation for "),t("code",null,"MetaStrategist.jl"),e(".")],-1),n=[i,l];function c(d,_,m,p,g,h){return r(),s("div",null,n)}const S=a(o,[["render",c]]);export{u as __pageData,S as default}; diff --git a/dev/assets/perf_benchmark_ext.md.BF6daeNT.js b/dev/assets/perf_benchmark_ext.md.BF6daeNT.js new file mode 100644 index 0000000..1d2a22f --- /dev/null +++ b/dev/assets/perf_benchmark_ext.md.BF6daeNT.js @@ -0,0 +1 @@ +import{_ as o,c as a,o as t,m as e,a as n}from"./chunks/framework.RTxADYK2.js";const f=JSON.parse('{"title":"BenchmarkTools Extension","description":"","frontmatter":{},"headers":[],"relativePath":"perf/benchmark_ext.md","filePath":"perf/benchmark_ext.md","lastUpdated":null}'),s={name:"perf/benchmark_ext.md"},r=e("h1",{id:"BenchmarkTools-Extension",tabindex:"-1"},[n("BenchmarkTools Extension "),e("a",{class:"header-anchor",href:"#BenchmarkTools-Extension","aria-label":'Permalink to "BenchmarkTools Extension {#BenchmarkTools-Extension}"'},"​")],-1),c=e("p",null,[n("A benchmarking extension, based on "),e("code",null,"BenchmarkTools.jl"),n(", has been interfaced with "),e("code",null,"PerfChecker.jl"),n(". This section (will) provides some usage examples, documentation, and links to related notebooks.")],-1),l=[r,c];function i(d,h,m,_,k,p){return t(),a("div",null,l)}const u=o(s,[["render",i]]);export{f as __pageData,u as default}; diff --git a/dev/assets/perf_benchmark_ext.md.BF6daeNT.lean.js b/dev/assets/perf_benchmark_ext.md.BF6daeNT.lean.js new file mode 100644 index 0000000..1d2a22f --- /dev/null +++ b/dev/assets/perf_benchmark_ext.md.BF6daeNT.lean.js @@ -0,0 +1 @@ +import{_ as o,c as a,o as t,m as e,a as n}from"./chunks/framework.RTxADYK2.js";const f=JSON.parse('{"title":"BenchmarkTools Extension","description":"","frontmatter":{},"headers":[],"relativePath":"perf/benchmark_ext.md","filePath":"perf/benchmark_ext.md","lastUpdated":null}'),s={name:"perf/benchmark_ext.md"},r=e("h1",{id:"BenchmarkTools-Extension",tabindex:"-1"},[n("BenchmarkTools Extension "),e("a",{class:"header-anchor",href:"#BenchmarkTools-Extension","aria-label":'Permalink to "BenchmarkTools Extension {#BenchmarkTools-Extension}"'},"​")],-1),c=e("p",null,[n("A benchmarking extension, based on "),e("code",null,"BenchmarkTools.jl"),n(", has been interfaced with "),e("code",null,"PerfChecker.jl"),n(". This section (will) provides some usage examples, documentation, and links to related notebooks.")],-1),l=[r,c];function i(d,h,m,_,k,p){return t(),a("div",null,l)}const u=o(s,[["render",i]]);export{f as __pageData,u as default}; diff --git a/dev/assets/perf_checker.md.Ceglkxdw.js b/dev/assets/perf_checker.md.Ceglkxdw.js deleted file mode 100644 index 0586cf4..0000000 --- a/dev/assets/perf_checker.md.Ceglkxdw.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c,o as a,m as e,a as r}from"./chunks/framework.RTxADYK2.js";const P=JSON.parse('{"title":"PerfChecker.jl","description":"","frontmatter":{},"headers":[],"relativePath":"perf_checker.md","filePath":"perf_checker.md","lastUpdated":null}'),o={name:"perf_checker.md"},s=e("h1",{id:"PerfChecker.jl",tabindex:"-1"},[r("PerfChecker.jl "),e("a",{class:"header-anchor",href:"#PerfChecker.jl","aria-label":'Permalink to "PerfChecker.jl {#PerfChecker.jl}"'},"​")],-1),l=e("p",null,[r("Documentation for "),e("code",null,"PerfChecker.jl"),r(".")],-1),n=[s,l];function h(d,f,_,i,p,k){return a(),c("div",null,n)}const u=t(o,[["render",h]]);export{P as __pageData,u as default}; diff --git a/dev/assets/perf_checker.md.Ceglkxdw.lean.js b/dev/assets/perf_checker.md.Ceglkxdw.lean.js deleted file mode 100644 index 0586cf4..0000000 --- a/dev/assets/perf_checker.md.Ceglkxdw.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c,o as a,m as e,a as r}from"./chunks/framework.RTxADYK2.js";const P=JSON.parse('{"title":"PerfChecker.jl","description":"","frontmatter":{},"headers":[],"relativePath":"perf_checker.md","filePath":"perf_checker.md","lastUpdated":null}'),o={name:"perf_checker.md"},s=e("h1",{id:"PerfChecker.jl",tabindex:"-1"},[r("PerfChecker.jl "),e("a",{class:"header-anchor",href:"#PerfChecker.jl","aria-label":'Permalink to "PerfChecker.jl {#PerfChecker.jl}"'},"​")],-1),l=e("p",null,[r("Documentation for "),e("code",null,"PerfChecker.jl"),r(".")],-1),n=[s,l];function h(d,f,_,i,p,k){return a(),c("div",null,n)}const u=t(o,[["render",h]]);export{P as __pageData,u as default}; diff --git a/dev/assets/perf_interface.md.C99Ei7Qh.js b/dev/assets/perf_interface.md.C99Ei7Qh.js deleted file mode 100644 index 66c61be..0000000 --- a/dev/assets/perf_interface.md.C99Ei7Qh.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as r,c as t,o as a,m as e,a as n}from"./chunks/framework.RTxADYK2.js";const P=JSON.parse('{"title":"Interfacing PerfChecker","description":"","frontmatter":{},"headers":[],"relativePath":"perf_interface.md","filePath":"perf_interface.md","lastUpdated":null}'),c={name:"perf_interface.md"},i=e("h1",{id:"Interfacing-PerfChecker",tabindex:"-1"},[n("Interfacing PerfChecker "),e("a",{class:"header-anchor",href:"#Interfacing-PerfChecker","aria-label":'Permalink to "Interfacing PerfChecker {#Interfacing-PerfChecker}"'},"​")],-1),s=e("p",null,"PerfChecker was build as an easy to extend interface. This section will cover the few method required.",-1),f=[i,s];function o(d,h,l,_,p,m){return a(),t("div",null,f)}const u=r(c,[["render",o]]);export{P as __pageData,u as default}; diff --git a/dev/assets/perf_interface.md.C99Ei7Qh.lean.js b/dev/assets/perf_interface.md.C99Ei7Qh.lean.js deleted file mode 100644 index 66c61be..0000000 --- a/dev/assets/perf_interface.md.C99Ei7Qh.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as r,c as t,o as a,m as e,a as n}from"./chunks/framework.RTxADYK2.js";const P=JSON.parse('{"title":"Interfacing PerfChecker","description":"","frontmatter":{},"headers":[],"relativePath":"perf_interface.md","filePath":"perf_interface.md","lastUpdated":null}'),c={name:"perf_interface.md"},i=e("h1",{id:"Interfacing-PerfChecker",tabindex:"-1"},[n("Interfacing PerfChecker "),e("a",{class:"header-anchor",href:"#Interfacing-PerfChecker","aria-label":'Permalink to "Interfacing PerfChecker {#Interfacing-PerfChecker}"'},"​")],-1),s=e("p",null,"PerfChecker was build as an easy to extend interface. This section will cover the few method required.",-1),f=[i,s];function o(d,h,l,_,p,m){return a(),t("div",null,f)}const u=r(c,[["render",o]]);export{P as __pageData,u as default}; diff --git a/dev/assets/perf_perf_checker.md.Mp2EYC4l.js b/dev/assets/perf_perf_checker.md.Mp2EYC4l.js new file mode 100644 index 0000000..4af3a23 --- /dev/null +++ b/dev/assets/perf_perf_checker.md.Mp2EYC4l.js @@ -0,0 +1 @@ +import{_ as t,c,o as a,m as e,a as r}from"./chunks/framework.RTxADYK2.js";const P=JSON.parse('{"title":"PerfChecker.jl","description":"","frontmatter":{},"headers":[],"relativePath":"perf/perf_checker.md","filePath":"perf/perf_checker.md","lastUpdated":null}'),o={name:"perf/perf_checker.md"},s=e("h1",{id:"PerfChecker.jl",tabindex:"-1"},[r("PerfChecker.jl "),e("a",{class:"header-anchor",href:"#PerfChecker.jl","aria-label":'Permalink to "PerfChecker.jl {#PerfChecker.jl}"'},"​")],-1),l=e("p",null,[r("Documentation for "),e("code",null,"PerfChecker.jl"),r(".")],-1),n=[s,l];function f(h,d,_,p,i,k){return a(),c("div",null,n)}const u=t(o,[["render",f]]);export{P as __pageData,u as default}; diff --git a/dev/assets/perf_perf_checker.md.Mp2EYC4l.lean.js b/dev/assets/perf_perf_checker.md.Mp2EYC4l.lean.js new file mode 100644 index 0000000..4af3a23 --- /dev/null +++ b/dev/assets/perf_perf_checker.md.Mp2EYC4l.lean.js @@ -0,0 +1 @@ +import{_ as t,c,o as a,m as e,a as r}from"./chunks/framework.RTxADYK2.js";const P=JSON.parse('{"title":"PerfChecker.jl","description":"","frontmatter":{},"headers":[],"relativePath":"perf/perf_checker.md","filePath":"perf/perf_checker.md","lastUpdated":null}'),o={name:"perf/perf_checker.md"},s=e("h1",{id:"PerfChecker.jl",tabindex:"-1"},[r("PerfChecker.jl "),e("a",{class:"header-anchor",href:"#PerfChecker.jl","aria-label":'Permalink to "PerfChecker.jl {#PerfChecker.jl}"'},"​")],-1),l=e("p",null,[r("Documentation for "),e("code",null,"PerfChecker.jl"),r(".")],-1),n=[s,l];function f(h,d,_,p,i,k){return a(),c("div",null,n)}const u=t(o,[["render",f]]);export{P as __pageData,u as default}; diff --git a/dev/assets/perf_perf_interface.md.BojTEMgF.js b/dev/assets/perf_perf_interface.md.BojTEMgF.js new file mode 100644 index 0000000..127ff39 --- /dev/null +++ b/dev/assets/perf_perf_interface.md.BojTEMgF.js @@ -0,0 +1 @@ +import{_ as r,c as t,o as a,m as e,a as n}from"./chunks/framework.RTxADYK2.js";const P=JSON.parse('{"title":"Interfacing PerfChecker","description":"","frontmatter":{},"headers":[],"relativePath":"perf/perf_interface.md","filePath":"perf/perf_interface.md","lastUpdated":null}'),c={name:"perf/perf_interface.md"},f=e("h1",{id:"Interfacing-PerfChecker",tabindex:"-1"},[n("Interfacing PerfChecker "),e("a",{class:"header-anchor",href:"#Interfacing-PerfChecker","aria-label":'Permalink to "Interfacing PerfChecker {#Interfacing-PerfChecker}"'},"​")],-1),i=e("p",null,"PerfChecker was build as an easy to extend interface. This section will cover the few method required.",-1),s=[f,i];function o(d,h,l,_,p,m){return a(),t("div",null,s)}const u=r(c,[["render",o]]);export{P as __pageData,u as default}; diff --git a/dev/assets/perf_perf_interface.md.BojTEMgF.lean.js b/dev/assets/perf_perf_interface.md.BojTEMgF.lean.js new file mode 100644 index 0000000..127ff39 --- /dev/null +++ b/dev/assets/perf_perf_interface.md.BojTEMgF.lean.js @@ -0,0 +1 @@ +import{_ as r,c as t,o as a,m as e,a as n}from"./chunks/framework.RTxADYK2.js";const P=JSON.parse('{"title":"Interfacing PerfChecker","description":"","frontmatter":{},"headers":[],"relativePath":"perf/perf_interface.md","filePath":"perf/perf_interface.md","lastUpdated":null}'),c={name:"perf/perf_interface.md"},f=e("h1",{id:"Interfacing-PerfChecker",tabindex:"-1"},[n("Interfacing PerfChecker "),e("a",{class:"header-anchor",href:"#Interfacing-PerfChecker","aria-label":'Permalink to "Interfacing PerfChecker {#Interfacing-PerfChecker}"'},"​")],-1),i=e("p",null,"PerfChecker was build as an easy to extend interface. This section will cover the few method required.",-1),s=[f,i];function o(d,h,l,_,p,m){return a(),t("div",null,s)}const u=r(c,[["render",o]]);export{P as __pageData,u as default}; diff --git a/dev/assets/qubo_constraints.md.DnnK5RAO.js b/dev/assets/qubo_constraints.md.DnnK5RAO.js deleted file mode 100644 index 66ac406..0000000 --- a/dev/assets/qubo_constraints.md.DnnK5RAO.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const k=JSON.parse('{"title":"QUBOConstraints.jl","description":"","frontmatter":{},"headers":[],"relativePath":"qubo_constraints.md","filePath":"qubo_constraints.md","lastUpdated":null}'),t={name:"qubo_constraints.md"},n=e('

QUBOConstraints.jl

Documentation for QUBOConstraints.jl.

# QUBOConstraints.AbstractOptimizerType.
julia
AbstractOptimizer

An abstract type (interface) used to learn QUBO matrices from constraints. Only a train method is required.

source


# QUBOConstraints.QUBO_baseFunction.
julia
QUBO_base(n, weight = 1)

A basic QUBO matrix to ensure that binarized variables keep a valid encoding.

source


# QUBOConstraints.QUBO_linear_sumMethod.
julia
QUBO_linear_sum(n, σ)

One valid QUBO matrix given n variables and parameter σ for the linear sum constraint.

source


# QUBOConstraints.binarizeMethod.
julia
binarize(x[, domain]; binarization = :one_hot)

Binarize x following the binarization encoding. If x is a vector (instead of a number per say), domain is optional.

source


# QUBOConstraints.debinarizeMethod.
julia
debinarize(x[, domain]; binarization = :one_hot)

Transform a binary vector into a number or a set of number. If domain is not given, it will compute a default value based on binarization and x.

source


# QUBOConstraints.is_validFunction.
julia
is_valid(x, encoding::Symbol = :none)

Check if x has a valid format for encoding.

For instance, if encoding == :one_hot, at most one bit of x can be set to 1.

source


# QUBOConstraints.trainMethod.
julia
train(args...)

Default train method for any AbstractOptimizer.

source


',16),r=[n];function o(l,d,p,h,c,b){return a(),s("div",null,r)}const g=i(t,[["render",o]]);export{k as __pageData,g as default}; diff --git a/dev/assets/qubo_constraints.md.DnnK5RAO.lean.js b/dev/assets/qubo_constraints.md.DnnK5RAO.lean.js deleted file mode 100644 index f3b176d..0000000 --- a/dev/assets/qubo_constraints.md.DnnK5RAO.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const k=JSON.parse('{"title":"QUBOConstraints.jl","description":"","frontmatter":{},"headers":[],"relativePath":"qubo_constraints.md","filePath":"qubo_constraints.md","lastUpdated":null}'),t={name:"qubo_constraints.md"},n=e("",16),r=[n];function o(l,d,p,h,c,b){return a(),s("div",null,r)}const g=i(t,[["render",o]]);export{k as __pageData,g as default}; diff --git a/dev/assets/solvers_cbls.md.EsXDaOSr.js b/dev/assets/solvers_cbls.md.EsXDaOSr.js new file mode 100644 index 0000000..f34d44a --- /dev/null +++ b/dev/assets/solvers_cbls.md.EsXDaOSr.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const b=JSON.parse('{"title":"CBLS.jl","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/cbls.md","filePath":"solvers/cbls.md","lastUpdated":null}'),t={name:"solvers/cbls.md"},l=e('

CBLS.jl

Documentation for CBLS.jl.

# CBLS.AllDifferentType.

Global constraint ensuring that all the values of a given configuration are unique.

julia
@constraint(model, X in AllDifferent())

source


# CBLS.AllEqualType.

Global constraint ensuring that all the values of X are all equal.

julia
@constraint(model, X in AllEqual())

source


# CBLS.AllEqualParamType.

Global constraint ensuring that all the values of X are all equal to a given parameter param.

julia
@constraint(model, X in AllEqualParam(param))

source


# CBLS.AlwaysTrueType.

Always return true. Mainly used for testing purpose.

julia
@constraint(model, X in AlwaysTrue())

source


# CBLS.DiscreteSetType.
julia
DiscreteSet(values)

source


# CBLS.DistDifferentType.

Local constraint ensuring that, given a vector X of size 4, |X[1] - X[2]| ≠ |X[3] - X[4]|).

julia
@constraint(model, X in DistDifferent())

source


# CBLS.EqType.

Equality between two variables.

julia
@constraint(model, X in Eq())

source


# CBLS.ErrorType.
julia
Error{F <: Function} <: JuMP.AbstractVectorSet

The solver will compute a straightforward error function based on the concept. To run the solver efficiently, it is possible to provide an error function err instead of concept. err must return a nonnegative real number.

julia
@constraint(model, X in Error(err))

source


# CBLS.LessThanParamType.

Constraint ensuring that the value of x is less than a given parameter param.

julia
@constraint(model, x in LessThanParam(param))

source


# CBLS.MOIAllDifferentType.
julia
MOIAllDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIAllEqualType.
julia
MOIAllEqual <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIAllEqualParamType.
julia
MOIAllEqualParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • param::T: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIAllEqualParam(param, dim = 0) = begin #= none:5 =# new{typeof(param)}(param, dim) end: DESCRIPTION

source


# CBLS.MOIAlwaysTrueType.
julia
MOIAlwaysTrue <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIDistDifferentType.
julia
MOIDistDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIEqType.
julia
MOIEq <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIErrorType.
julia
MOIError{F <: Function} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • f::F: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIError(f, dim = 0) = begin #= none:5 =# new{typeof(f)}(f, dim) end: DESCRIPTION

source


# CBLS.MOILessThanParamType.
julia
MOILessThanParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • param::T: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOILessThanParam(param, dim = 0) = begin #= none:5 =# new{typeof(param)}(param, dim) end: DESCRIPTION

source


# CBLS.MOIMinusEqualParamType.
julia
MOIMinusEqualParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • param::T: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIMinusEqualParam(param, dim = 0) = begin #= none:5 =# new{typeof(param)}(param, dim) end: DESCRIPTION

source


# CBLS.MOIOrderedType.
julia
MOIOrdered <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIPredicateType.
julia
MOIPredicate{F <: Function} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • f::F: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIPredicate(f, dim = 0) = begin #= none:5 =# new{typeof(f)}(f, dim) end: DESCRIPTION

source


# CBLS.MOISequentialTasksType.
julia
MOISequentialTasks <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOISumEqualParamType.
julia
MOISumEqualParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • param::T: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOISumEqualParam(param, dim = 0) = begin #= none:5 =# new{typeof(param)}(param, dim) end: DESCRIPTION

source


# CBLS.MinusEqualParamType.

Constraint ensuring that the value of x is less than a given parameter param.

julia
@constraint(model, x in MinusEqualParam(param))

source


# CBLS.OptimizerType.
julia
Optimizer(model = Model(); options = Options())

DOCSTRING

source


# CBLS.OptimizerType.
julia
Optimizer <: MOI.AbstractOptimizer

DOCSTRING

Arguments:

  • solver::Solver: DESCRIPTION

  • status::MOI.TerminationStatusCode: DESCRIPTION

  • options::Options: DESCRIPTION

source


# CBLS.OrderedType.

Global constraint ensuring that all the values of x are ordered.

julia
@constraint(model, X in Ordered())

source


# CBLS.PredicateType.
julia
Predicate{F <: Function} <: JuMP.AbstractVectorSet

Assuming X is a (collection of) variables, concept a boolean function over X, and that a model is defined. In JuMP syntax we can create a constraint based on concept as follows.

julia
@constraint(model, X in Predicate(concept))

source


# CBLS.ScalarFunctionType.
julia
ScalarFunction{F <: Function, V <: Union{Nothing, VOV}} <: MOI.AbstractScalarFunction

A container to express any function with real value in JuMP syntax. Used with the @objective macro.

Arguments:

  • f::F: function to be applied to X

  • X::V: a subset of the variables of the model.

Given a model, and some (collection of) variables X to optimize. an objective function f can be added as follows. Note that only Min for minimization us currently defined. Max will come soon.

julia
# Applies to all variables in order of insertion.\n# Recommended only when the function argument order does not matter.\n@objective(model, ScalarFunction(f))\n\n# Generic use\n@objective(model, ScalarFunction(f, X))

source


# CBLS.SequentialTasksType.

Local constraint ensuring that, given a vector X of size 4, |X[1] - X[2]| ≠ |X[3] - X[4]|).

julia
@constraint(model, X in SequentialTasks())

source


# CBLS.SumEqualParamType.

Global constraint ensuring that the sum of the values of X is equal to a given parameter param.

julia
@constraint(model, X in SumEqualParam(param))

source


# Base.copyMethod.
julia
Base.copy(set::MOIError) = begin

DOCSTRING

source


# Base.copyMethod.
julia
Base.copy(set::DiscreteSet) = begin

DOCSTRING

source


# JuMP.build_variableMethod.
julia
JuMP.build_variable(::Function, info::JuMP.VariableInfo, set::T) where T <: MOI.AbstractScalarSet

DOCSTRING

Arguments:

  • ``: DESCRIPTION

  • info: DESCRIPTION

  • set: DESCRIPTION

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, vars::MOI.VectorOfVariables, set::MOIError)

DOCSTRING

Arguments:

  • optimizer: DESCRIPTION

  • vars: DESCRIPTION

  • set: DESCRIPTION

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, v::VI, set::DiscreteSet{T}) where T <: Number

DOCSTRING

Arguments:

  • optimizer: DESCRIPTION

  • v: DESCRIPTION

  • set: DESCRIPTION

source


# MathOptInterface.add_variableMethod.
julia
MOI.add_variable(model::Optimizer) = begin

DOCSTRING

source


# MathOptInterface.empty!Method.
julia
MOI.empty!(opt) = begin

DOCSTRING

source


# MathOptInterface.getMethod.
julia
MOI.get(::Optimizer, ::MOI.SolverName) = begin

DOCSTRING

source


# MathOptInterface.is_emptyMethod.
julia
MOI.is_empty(model::Optimizer) = begin

DOCSTRING

source


# MathOptInterface.optimize!Method.
julia
MOI.optimize!(model::Optimizer)

source


# MathOptInterface.setFunction.
julia
MOI.set(::Optimizer, ::MOI.Silent, bool = true) = begin

DOCSTRING

Arguments:

  • ``: DESCRIPTION

  • ``: DESCRIPTION

  • bool: DESCRIPTION

source


# MathOptInterface.setMethod.
julia
MOI.set(model::Optimizer, p::MOI.RawOptimizerAttribute, value)

Set a RawOptimizerAttribute to value

source


# MathOptInterface.setMethod.
julia
MOI.set(model::Optimizer, ::MOI.TimeLimitSec, value::Union{Nothing,Float64})

Set the time limit

source


# MathOptInterface.supports_constraintMethod.
julia
MOI.supports_constraint(::Optimizer, ::Type{VOV}, ::Type{MOIError}) = begin

DOCSTRING

Arguments:

  • ``: DESCRIPTION

  • ``: DESCRIPTION

  • ``: DESCRIPTION

source


# MathOptInterface.supports_incremental_interfaceMethod.

Copy constructor for the optimizer

source


',92),r=[l];function p(n,h,d,o,k,c){return a(),s("div",null,r)}const g=i(t,[["render",p]]);export{b as __pageData,g as default}; diff --git a/dev/assets/solvers_cbls.md.EsXDaOSr.lean.js b/dev/assets/solvers_cbls.md.EsXDaOSr.lean.js new file mode 100644 index 0000000..e842675 --- /dev/null +++ b/dev/assets/solvers_cbls.md.EsXDaOSr.lean.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const b=JSON.parse('{"title":"CBLS.jl","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/cbls.md","filePath":"solvers/cbls.md","lastUpdated":null}'),t={name:"solvers/cbls.md"},l=e("",92),r=[l];function p(n,h,d,o,k,c){return a(),s("div",null,r)}const g=i(t,[["render",p]]);export{b as __pageData,g as default}; diff --git a/dev/assets/local_search_solvers.md.C_V13GvZ.js b/dev/assets/solvers_local_search_solvers.md.BVMxw1Dj.js similarity index 94% rename from dev/assets/local_search_solvers.md.C_V13GvZ.js rename to dev/assets/solvers_local_search_solvers.md.BVMxw1Dj.js index efa2062..52d8edc 100644 --- a/dev/assets/local_search_solvers.md.C_V13GvZ.js +++ b/dev/assets/solvers_local_search_solvers.md.BVMxw1Dj.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"LocalSearchSolvers.jl","description":"","frontmatter":{},"headers":[],"relativePath":"local_search_solvers.md","filePath":"local_search_solvers.md","lastUpdated":null}'),l={name:"local_search_solvers.md"},t=e(`

LocalSearchSolvers.jl

Documentation for LocalSearchSolvers.jl.

# LocalSearchSolvers.AbstractSolverType.
julia
AbstractSolver

Abstract type to encapsulate the different solver types such as Solver or _SubSolver.

source


# LocalSearchSolvers.ConstraintType.
julia
Constraint{F <: Function}

Structure to store an error function and the variables it constrains.

source


# LocalSearchSolvers.LeadSolverType.
julia
LeadSolver <: MetaSolver

Solver managed remotely by a MainSolver. Can manage its own set of local sub solvers.

source


# LocalSearchSolvers.MainSolverType.
julia
MainSolver <: AbstractSolver

Main solver. Handle the solving of a model, and optional multithreaded and/or distributed subsolvers.

Arguments:

  • model::Model: A formal description of the targeted problem

  • state::_State: An internal state to store the info necessary to a solving run

  • options::Options: User options for this solver

  • subs::Vector{_SubSolver}: Optional subsolvers

source


# LocalSearchSolvers.MetaSolverType.

Abstract type to encapsulate all solver types that manages other solvers.

source


# LocalSearchSolvers.ObjectiveType.
julia
Objective{F <: Function}

A structure to handle objectives in a solver. \`struct Objective{F <: Function} name::String f::F end\`\`

source


# LocalSearchSolvers.ObjectiveMethod.
julia
Objective(F, o::Objective{F2}) where {F2 <: Function}

Constructor used in specializing a solver. Should never be called externally.

source


# LocalSearchSolvers.OptionsType.
julia
Options()

Arguments:

  • dynamic::Bool: is the model dynamic?

  • iteration::Union{Int, Float64}: limit on the number of iterations

  • print_level::Symbol: verbosity to choose among :silent, :minimal, :partial, :verbose

  • solutions::Int: number of solutions to return

  • specialize::Bool: should the types of the model be specialized or not. Usually yes for static problems. For dynamic in depends if the user intend to introduce new types. The specialized model is about 10% faster.

  • tabu_time::Int: DESCRIPTION

  • tabu_local::Int: DESCRIPTION

  • tabu_delta::Float64: DESCRIPTION

  • threads::Int: Number of threads to use

  • time_limit::Float64: time limit in seconds

  • \`function Options(; dynamic = false, iteration = 10000, print_level = :minimal, solutions = 1, specialize = !dynamic, tabu_time = 0, tabu_local = 0, tabu_delta = 0.0, threads = typemax(0), time_limit = Inf)

julia
# Setting options in JuMP syntax: print_level, time_limit, iteration
+import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"LocalSearchSolvers.jl","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/local_search_solvers.md","filePath":"solvers/local_search_solvers.md","lastUpdated":null}'),l={name:"solvers/local_search_solvers.md"},t=e(`

LocalSearchSolvers.jl

Documentation for LocalSearchSolvers.jl.

# LocalSearchSolvers.AbstractSolverType.
julia
AbstractSolver

Abstract type to encapsulate the different solver types such as Solver or _SubSolver.

source


# LocalSearchSolvers.ConstraintType.
julia
Constraint{F <: Function}

Structure to store an error function and the variables it constrains.

source


# LocalSearchSolvers.LeadSolverType.
julia
LeadSolver <: MetaSolver

Solver managed remotely by a MainSolver. Can manage its own set of local sub solvers.

source


# LocalSearchSolvers.MainSolverType.
julia
MainSolver <: AbstractSolver

Main solver. Handle the solving of a model, and optional multithreaded and/or distributed subsolvers.

Arguments:

  • model::Model: A formal description of the targeted problem

  • state::_State: An internal state to store the info necessary to a solving run

  • options::Options: User options for this solver

  • subs::Vector{_SubSolver}: Optional subsolvers

source


# LocalSearchSolvers.MetaSolverType.

Abstract type to encapsulate all solver types that manages other solvers.

source


# LocalSearchSolvers.ObjectiveType.
julia
Objective{F <: Function}

A structure to handle objectives in a solver. \`struct Objective{F <: Function} name::String f::F end\`\`

source


# LocalSearchSolvers.ObjectiveMethod.
julia
Objective(F, o::Objective{F2}) where {F2 <: Function}

Constructor used in specializing a solver. Should never be called externally.

source


# LocalSearchSolvers.OptionsType.
julia
Options()

Arguments:

  • dynamic::Bool: is the model dynamic?

  • iteration::Union{Int, Float64}: limit on the number of iterations

  • print_level::Symbol: verbosity to choose among :silent, :minimal, :partial, :verbose

  • solutions::Int: number of solutions to return

  • specialize::Bool: should the types of the model be specialized or not. Usually yes for static problems. For dynamic in depends if the user intend to introduce new types. The specialized model is about 10% faster.

  • tabu_time::Int: DESCRIPTION

  • tabu_local::Int: DESCRIPTION

  • tabu_delta::Float64: DESCRIPTION

  • threads::Int: Number of threads to use

  • time_limit::Float64: time limit in seconds

  • \`function Options(; dynamic = false, iteration = 10000, print_level = :minimal, solutions = 1, specialize = !dynamic, tabu_time = 0, tabu_local = 0, tabu_delta = 0.0, threads = typemax(0), time_limit = Inf)

julia
# Setting options in JuMP syntax: print_level, time_limit, iteration
 model = Model(CBLS.Optimizer)
 set_optimizer_attribute(model, "iteration", 100)
 set_optimizer_attribute(model, "print_level", :verbose)
diff --git a/dev/assets/solvers_local_search_solvers.md.BVMxw1Dj.lean.js b/dev/assets/solvers_local_search_solvers.md.BVMxw1Dj.lean.js
new file mode 100644
index 0000000..d5bed5c
--- /dev/null
+++ b/dev/assets/solvers_local_search_solvers.md.BVMxw1Dj.lean.js
@@ -0,0 +1 @@
+import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.RTxADYK2.js";const u=JSON.parse('{"title":"LocalSearchSolvers.jl","description":"","frontmatter":{},"headers":[],"relativePath":"solvers/local_search_solvers.md","filePath":"solvers/local_search_solvers.md","lastUpdated":null}'),l={name:"solvers/local_search_solvers.md"},t=e("",286),r=[t];function o(h,n,p,d,c,k){return a(),i("div",null,r)}const g=s(l,[["render",o]]);export{u as __pageData,g as default};
diff --git a/dev/benchmark_ext.html b/dev/benchmark_ext.html
deleted file mode 100644
index 2794265..0000000
--- a/dev/benchmark_ext.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-  
-    
-    
-    BenchmarkTools Extension | Julia Constraints
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-  
-  
-    
Skip to content

BenchmarkTools Extension

A benchmarking extension, based on BenchmarkTools.jl, has been interfaced with PerfChecker.jl. This section (will) provides some usage examples, documentation, and links to related notebooks.

- - - - \ No newline at end of file diff --git a/dev/cbls.html b/dev/cbls.html deleted file mode 100644 index 17888c9..0000000 --- a/dev/cbls.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - CBLS.jl | Julia Constraints - - - - - - - - - - - - - -
Skip to content

CBLS.jl

Documentation for CBLS.jl.

# CBLS.AllDifferentType.

Global constraint ensuring that all the values of a given configuration are unique.

julia
@constraint(model, X in AllDifferent())

source


# CBLS.AllEqualType.

Global constraint ensuring that all the values of X are all equal.

julia
@constraint(model, X in AllEqual())

source


# CBLS.AllEqualParamType.

Global constraint ensuring that all the values of X are all equal to a given parameter param.

julia
@constraint(model, X in AllEqualParam(param))

source


# CBLS.AlwaysTrueType.

Always return true. Mainly used for testing purpose.

julia
@constraint(model, X in AlwaysTrue())

source


# CBLS.DiscreteSetType.
julia
DiscreteSet(values)

source


# CBLS.DistDifferentType.

Local constraint ensuring that, given a vector X of size 4, |X[1] - X[2]| ≠ |X[3] - X[4]|).

julia
@constraint(model, X in DistDifferent())

source


# CBLS.EqType.

Equality between two variables.

julia
@constraint(model, X in Eq())

source


# CBLS.ErrorType.
julia
Error{F <: Function} <: JuMP.AbstractVectorSet

The solver will compute a straightforward error function based on the concept. To run the solver efficiently, it is possible to provide an error function err instead of concept. err must return a nonnegative real number.

julia
@constraint(model, X in Error(err))

source


# CBLS.LessThanParamType.

Constraint ensuring that the value of x is less than a given parameter param.

julia
@constraint(model, x in LessThanParam(param))

source


# CBLS.MOIAllDifferentType.
julia
MOIAllDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIAllEqualType.
julia
MOIAllEqual <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIAllEqualParamType.
julia
MOIAllEqualParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • param::T: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIAllEqualParam(param, dim = 0) = begin #= none:5 =# new{typeof(param)}(param, dim) end: DESCRIPTION

source


# CBLS.MOIAlwaysTrueType.
julia
MOIAlwaysTrue <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIDistDifferentType.
julia
MOIDistDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIEqType.
julia
MOIEq <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIErrorType.
julia
MOIError{F <: Function} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • f::F: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIError(f, dim = 0) = begin #= none:5 =# new{typeof(f)}(f, dim) end: DESCRIPTION

source


# CBLS.MOILessThanParamType.
julia
MOILessThanParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • param::T: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOILessThanParam(param, dim = 0) = begin #= none:5 =# new{typeof(param)}(param, dim) end: DESCRIPTION

source


# CBLS.MOIMinusEqualParamType.
julia
MOIMinusEqualParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • param::T: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIMinusEqualParam(param, dim = 0) = begin #= none:5 =# new{typeof(param)}(param, dim) end: DESCRIPTION

source


# CBLS.MOIOrderedType.
julia
MOIOrdered <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIPredicateType.
julia
MOIPredicate{F <: Function} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • f::F: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIPredicate(f, dim = 0) = begin #= none:5 =# new{typeof(f)}(f, dim) end: DESCRIPTION

source


# CBLS.MOISequentialTasksType.
julia
MOISequentialTasks <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOISumEqualParamType.
julia
MOISumEqualParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • param::T: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOISumEqualParam(param, dim = 0) = begin #= none:5 =# new{typeof(param)}(param, dim) end: DESCRIPTION

source


# CBLS.MinusEqualParamType.

Constraint ensuring that the value of x is less than a given parameter param.

julia
@constraint(model, x in MinusEqualParam(param))

source


# CBLS.OptimizerType.
julia
Optimizer(model = Model(); options = Options())

DOCSTRING

source


# CBLS.OptimizerType.
julia
Optimizer <: MOI.AbstractOptimizer

DOCSTRING

Arguments:

  • solver::Solver: DESCRIPTION

  • status::MOI.TerminationStatusCode: DESCRIPTION

  • options::Options: DESCRIPTION

source


# CBLS.OrderedType.

Global constraint ensuring that all the values of x are ordered.

julia
@constraint(model, X in Ordered())

source


# CBLS.PredicateType.
julia
Predicate{F <: Function} <: JuMP.AbstractVectorSet

Assuming X is a (collection of) variables, concept a boolean function over X, and that a model is defined. In JuMP syntax we can create a constraint based on concept as follows.

julia
@constraint(model, X in Predicate(concept))

source


# CBLS.ScalarFunctionType.
julia
ScalarFunction{F <: Function, V <: Union{Nothing, VOV}} <: MOI.AbstractScalarFunction

A container to express any function with real value in JuMP syntax. Used with the @objective macro.

Arguments:

  • f::F: function to be applied to X

  • X::V: a subset of the variables of the model.

Given a model, and some (collection of) variables X to optimize. an objective function f can be added as follows. Note that only Min for minimization us currently defined. Max will come soon.

julia
# Applies to all variables in order of insertion.
-# Recommended only when the function argument order does not matter.
-@objective(model, ScalarFunction(f))
-
-# Generic use
-@objective(model, ScalarFunction(f, X))

source


# CBLS.SequentialTasksType.

Local constraint ensuring that, given a vector X of size 4, |X[1] - X[2]| ≠ |X[3] - X[4]|).

julia
@constraint(model, X in SequentialTasks())

source


# CBLS.SumEqualParamType.

Global constraint ensuring that the sum of the values of X is equal to a given parameter param.

julia
@constraint(model, X in SumEqualParam(param))

source


# Base.copyMethod.
julia
Base.copy(set::MOIError) = begin

DOCSTRING

source


# Base.copyMethod.
julia
Base.copy(set::DiscreteSet) = begin

DOCSTRING

source


# JuMP.build_variableMethod.
julia
JuMP.build_variable(::Function, info::JuMP.VariableInfo, set::T) where T <: MOI.AbstractScalarSet

DOCSTRING

Arguments:

  • ``: DESCRIPTION

  • info: DESCRIPTION

  • set: DESCRIPTION

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, vars::MOI.VectorOfVariables, set::MOIError)

DOCSTRING

Arguments:

  • optimizer: DESCRIPTION

  • vars: DESCRIPTION

  • set: DESCRIPTION

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, v::VI, set::DiscreteSet{T}) where T <: Number

DOCSTRING

Arguments:

  • optimizer: DESCRIPTION

  • v: DESCRIPTION

  • set: DESCRIPTION

source


# MathOptInterface.add_variableMethod.
julia
MOI.add_variable(model::Optimizer) = begin

DOCSTRING

source


# MathOptInterface.empty!Method.
julia
MOI.empty!(opt) = begin

DOCSTRING

source


# MathOptInterface.getMethod.
julia
MOI.get(::Optimizer, ::MOI.SolverName) = begin

DOCSTRING

source


# MathOptInterface.is_emptyMethod.
julia
MOI.is_empty(model::Optimizer) = begin

DOCSTRING

source


# MathOptInterface.optimize!Method.
julia
MOI.optimize!(model::Optimizer)

source


# MathOptInterface.setFunction.
julia
MOI.set(::Optimizer, ::MOI.Silent, bool = true) = begin

DOCSTRING

Arguments:

  • ``: DESCRIPTION

  • ``: DESCRIPTION

  • bool: DESCRIPTION

source


# MathOptInterface.setMethod.
julia
MOI.set(model::Optimizer, p::MOI.RawOptimizerAttribute, value)

Set a RawOptimizerAttribute to value

source


# MathOptInterface.setMethod.
julia
MOI.set(model::Optimizer, ::MOI.TimeLimitSec, value::Union{Nothing,Float64})

Set the time limit

source


# MathOptInterface.supports_constraintMethod.
julia
MOI.supports_constraint(::Optimizer, ::Type{VOV}, ::Type{MOIError}) = begin

DOCSTRING

Arguments:

  • ``: DESCRIPTION

  • ``: DESCRIPTION

  • ``: DESCRIPTION

source


# MathOptInterface.supports_incremental_interfaceMethod.

Copy constructor for the optimizer

source


- - - - \ No newline at end of file diff --git a/dev/constraint_commons.html b/dev/constraint_commons.html deleted file mode 100644 index e6ef7d6..0000000 --- a/dev/constraint_commons.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - ConstraintCommons.jl | Julia Constraints - - - - - - - - - - - - - -
Skip to content

ConstraintCommons.jl

Documentation for ConstraintCommons.jl.

# ConstraintCommons.USUAL_CONSTRAINT_PARAMETERSConstant.
julia
const USUAL_CONSTRAINT_PARAMETERS

List of usual constraints parameters (based on XCSP3-core constraints).

julia
const USUAL_CONSTRAINT_PARAMETERS = [
-    :bool,
-    :dim,
-    :id,
-    :language,
-    :op,
-    :pair_vars,
-    :val,
-    :vals,
-]

source


# ConstraintCommons.AbstractAutomatonType.
julia
AbstractAutomaton

An abstract interface for automata used in Julia Constraints packages. Requirements:

  • accept(a<:AbstractAutomaton, word): return true if a accepts word.

source


# ConstraintCommons.AbstractMultivaluedDecisionDiagramType.
julia
AbstractMultivaluedDecisionDiagram

An abstract interface for Multivalued Decision Diagrams (MDD) used in Julia Constraints packages. Requirements:

  • accept(a<:AbstractMultivaluedDecisionDiagram, word): return true if a accepts word.

source


# ConstraintCommons.AutomatonType.
julia
Automaton{S, T, F <: Union{S, Vector{S}, Set{S}}} <: AbstractAutomaton

A minimal implementation of a deterministic automaton structure.

source


# ConstraintCommons.AutomatonMethod.
julia
Automaton(a::MDD)

Construct an automaton based on a given Multivalued Decision Diagrams (MDD).

source


# ConstraintCommons.MDDType.
julia
MDD{S,T} <: AbstractMultivaluedDecisionDiagram

A minimal implementation of a multivalued decision diagram structure.

source


# Base.:*Function.
julia
Base.:*(s1::Symbol, s2::Symbol, connector::AbstractString="_")

Extends * to Symbols multiplication by connecting the symbols by an _.

source


# Base.inMethod.
julia
Base.in(::Any, ::Nothing)

Extends Base.in (or ) when the set is nothing. Returns false.

source


# Base.isemptyMethod.
julia
Base.isempty(::Nothing)

Extends Base.isempty when the set is nothing. Returns true.

source


# ConstraintCommons.acceptMethod.
julia
accept(a::Union{Automaton, MDD}, w)

Return true if a accepts the word w and false otherwise.

source


# ConstraintCommons.at_endMethod.
julia
at_end(a::Automaton, s)

Internal method used by accept with Automaton.

source


# ConstraintCommons.extract_parametersMethod.
julia
extract_parameters(m::Union{Method, Function}; parameters)

Extracts the intersection between the kargs of m and parameters (defaults to USUAL_CONSTRAINT_PARAMETERS).

source


# ConstraintCommons.incsert!Function.
julia
incsert!(d::Union{AbstractDict, AbstractDictionary}, ind, val = 1)

Increase or insert a counter in a dictionary-based collection. The counter insertion defaults to val = 1.

source


# ConstraintCommons.oversampleMethod.
julia
oversample(X, f)

Oversample elements of X until the boolean function f has as many true and false configurations.

source


# ConstraintCommons.δ_extremaMethod.
julia
δ_extrema(X...)

Compute both the difference between the maximum and the minimum of over all the collections of X.

source


- - - - \ No newline at end of file diff --git a/dev/constraint_learning.html b/dev/constraint_learning.html deleted file mode 100644 index 2375342..0000000 --- a/dev/constraint_learning.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - ConstraintLearning.jl | Julia Constraints - - - - - - - - - - - - - -
Skip to content

ConstraintLearning.jl

Documentation for ConstraintLearning.jl.

# ConstraintLearning.ICNConfigType.
julia
struct ICNConfig{O <: ICNOptimizer}

A structure to hold the metric and optimizer configurations used in learning the weigths of an ICN.

source


# ConstraintLearning.ICNConfigMethod.
julia
ICNConfig(; metric = :hamming, optimizer = ICNGeneticOptimizer())

Constructor for ICNConfig. Defaults to hamming metric using a genetic algorithm.

source


# ConstraintLearning.ICNGeneticOptimizerMethod.
julia
ICNGeneticOptimizer(; kargs...)

Default constructor to learn an ICN through a Genetic Algorithm. Default kargs TBW.

source


# ConstraintLearning.ICNLocalSearchOptimizerType.
julia
ICNLocalSearchOptimizer(options = LocalSearchSolvers.Options())

Default constructor to learn an ICN through a CBLS solver.

source


# ConstraintLearning.ICNOptimizerType.
julia
const ICNOptimizer = CompositionalNetworks.AbstractOptimizer

An abstract type for optmizers defined to learn ICNs.

source


# ConstraintLearning.QUBOGradientOptimizerMethod.
julia
QUBOGradientOptimizer(; kargs...)

A QUBO optimizer based on gradient descent. Defaults TBW

source


# ConstraintLearning.QUBOOptimizerType.
julia
const QUBOOptimizer = QUBOConstraints.AbstractOptimizer

An abstract type for optimizers used to learn QUBO matrices from constraints.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNGeneticOptimizer; parameters...)

Extends the optimize! method to ICNGeneticOptimizer.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNLocalSearchOptimizer; parameters...)

Extends the optimize! method to ICNLocalSearchOptimizer.

source


# ConstraintLearning._optimize!Method.
julia
_optimize!(icn, X, X_sols; metric = hamming, pop_size = 200)

Optimize and set the weigths of an ICN with a given set of configuration X and solutions X_sols.

source


# ConstraintLearning.domain_sizeMethod.
julia
domain_size(ds::Number)

Extends the domain_size function when ds is number (for dispatch purposes).

source


# ConstraintLearning.generate_populationMethod.
julia
generate_population(icn, pop_size

Generate a pôpulation of weigths (individuals) for the genetic algorithm weigthing icn.

source


# ConstraintLearning.icnMethod.
julia
icn(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.lossMethod.
julia
loss(x, y, Q)

Loss of the prediction given by Q, a training set y, and a given configuration x.

source


# ConstraintLearning.make_dfMethod.
julia
make_df(X, Q, penalty, binarization, domains)

DataFrame arrangement to ouput some basic evaluation of a matrix Q.

source


# ConstraintLearning.make_set_penaltyMethod.
julia
make_set_penalty(X, X̅, args...; kargs)

Return a penalty function when the training set is already split into a pair of solutions X and non solutions .

source


# ConstraintLearning.make_training_setsMethod.
julia
make_training_sets(X, penalty, args...)

Return a pair of solutions and non solutions sets based on X and penalty.

source


# ConstraintLearning.mutually_exclusiveMethod.
julia
mutually_exclusive(layer, w)

Constraint ensuring that w encode exclusive operations in layer.

source


# ConstraintLearning.no_empty_layerMethod.
julia
no_empty_layer(x; X = nothing)

Constraint ensuring that at least one operation is selected.

source


# ConstraintLearning.optimize!Method.
julia
optimize!(icn, X, X_sols, global_iter, local_iter; metric=hamming, popSize=100)

Optimize and set the weigths of an ICN with a given set of configuration X and solutions X_sols. The best weigths among global_iter will be set.

source


# ConstraintLearning.parameter_specific_operationsMethod.
julia
parameter_specific_operations(x; X = nothing)

Constraint ensuring that at least one operation related to parameters is selected if the error function to be learned is parametric.

source


# ConstraintLearning.predictMethod.
julia
predict(x, Q)

Return the predictions given by Q for a given configuration x.

source


# ConstraintLearning.preliminariesMethod.
julia
preliminaries(args)

Preliminaries to the training process in a QUBOGradientOptimizer run.

source


# ConstraintLearning.quboFunction.
julia
qubo(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.sub_eltypeMethod.
julia
sub_eltype(X)

Return the element type of of the first element of a collection.

source


# ConstraintLearning.train!Method.
julia
train!(Q, X, penalty, η, precision, X_test, oversampling, binarization, domains)

Training inner method.

source


# ConstraintLearning.trainMethod.
julia
train(X, penalty[, d]; optimizer = QUBOGradientOptimizer(), X_test = X)

Learn a QUBO matrix on training set X for a constraint defined by penalty with optional domain information d. By default, it uses a QUBOGradientOptimizer and X as a testing set.

source


# ConstraintLearning.δMethod.
julia
δ(X[, Y]; discrete = true)

Compute the extrema over a collection X``or a pair of collection(X, Y)`.

source


- - - - \ No newline at end of file diff --git a/dev/constraint_models.html b/dev/constraint_models.html deleted file mode 100644 index ae81223..0000000 --- a/dev/constraint_models.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - ConstraintModels.jl | Julia Constraints - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dev/constraints.html b/dev/constraints.html deleted file mode 100644 index 94e3959..0000000 --- a/dev/constraints.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Constraints.jl | Julia Constraints - - - - - - - - - - - - - -
Skip to content

Constraints.jl

Documentation for Constraints.jl.

# Constraints.USUAL_CONSTRAINTSConstant.
julia
USUAL_CONSTRAINTS::Dict

Dictionary that contains all the usual constraints defined in Constraint.jl. It is based on XCSP3-core specifications available at https://arxiv.org/abs/2009.00514

Adding a new constraint is as simple as

julia
@usual name p a sym₁ sym₂

where

  • name: constraint name

  • p: the length of the parameters (0 means no parameters)

  • a: the length of the arguments/variables (0 means any length is possible).

  • symᵢ: a sequence of symmetries (can be left empty)

Both a alone, or p and a together are optional.

Note that concept_name needs to be defined. Unless both error_name and icn_error_name are defined, a default error function will be computed. Please (re-)define error_name for a hand_made error function.

source


# Constraints.USUAL_SYMMETRIESConstant.
julia
USUAL_SYMMETRIES

A Dictionary that contains the function to apply for each symmetry to avoid searching a whole space.

source


# Constraints.ConstraintType.
julia
Constraint

Parametric stucture with the following fields.

  • concept: a Boolean function that, given an assignment x, outputs true if x satisfies the constraint, and false otherwise.

  • error: a positive function that works as preferences over invalid assignements. Return 0.0 if the constraint is satisfied, and a strictly positive real otherwise.

source


# Constraints.argsMethod.
julia
args(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of value is accepted.

source


# Constraints.conceptMethod.
julia
concept(c::Constraint)

Return the concept (function) of constraint c. concept(c::Constraint, x...; param = nothing) Apply the concept of c to values x and optionally param.

source


# Constraints.error_fMethod.
julia
error_f(c::Constraint)

Return the error function of constraint c. error_f(c::Constraint, x; param = nothing) Apply the error function of c to values x and optionally param.

source


# Constraints.params_lengthMethod.
julia
params_length(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of parameters is accepted.

source


# Constraints.shrink_conceptMethod.
julia
shrink_concept(s)

Simply delete the concept_ part of symbol or string starting with it. TODO: add a check with a warning if s starts with something different.

source


# Constraints.symmetriesMethod.
julia
symmetries(c::Constraint)

Return the list of symmetries of c.

source


# Constraints.xcsp_intensionMethod.
julia
xcsp_intension(list, predicate)

An intensional constraint is usually defined from a predicate over x. As such it encompass any generic constraint.

source


- - - - \ No newline at end of file diff --git a/dev/constraints/constraint_commons.html b/dev/constraints/constraint_commons.html new file mode 100644 index 0000000..5aaaa4e --- /dev/null +++ b/dev/constraints/constraint_commons.html @@ -0,0 +1,33 @@ + + + + + + ConstraintCommons.jl | Julia Constraints + + + + + + + + + + + + + +
Skip to content

ConstraintCommons.jl

Documentation for ConstraintCommons.jl.

# ConstraintCommons.USUAL_CONSTRAINT_PARAMETERSConstant.
julia
const USUAL_CONSTRAINT_PARAMETERS

List of usual constraints parameters (based on XCSP3-core constraints).

julia
const USUAL_CONSTRAINT_PARAMETERS = [
+    :bool,
+    :dim,
+    :id,
+    :language,
+    :op,
+    :pair_vars,
+    :val,
+    :vals,
+]

source


# ConstraintCommons.AbstractAutomatonType.
julia
AbstractAutomaton

An abstract interface for automata used in Julia Constraints packages. Requirements:

  • accept(a<:AbstractAutomaton, word): return true if a accepts word.

source


# ConstraintCommons.AbstractMultivaluedDecisionDiagramType.
julia
AbstractMultivaluedDecisionDiagram

An abstract interface for Multivalued Decision Diagrams (MDD) used in Julia Constraints packages. Requirements:

  • accept(a<:AbstractMultivaluedDecisionDiagram, word): return true if a accepts word.

source


# ConstraintCommons.AutomatonType.
julia
Automaton{S, T, F <: Union{S, Vector{S}, Set{S}}} <: AbstractAutomaton

A minimal implementation of a deterministic automaton structure.

source


# ConstraintCommons.AutomatonMethod.
julia
Automaton(a::MDD)

Construct an automaton based on a given Multivalued Decision Diagrams (MDD).

source


# ConstraintCommons.MDDType.
julia
MDD{S,T} <: AbstractMultivaluedDecisionDiagram

A minimal implementation of a multivalued decision diagram structure.

source


# Base.:*Function.
julia
Base.:*(s1::Symbol, s2::Symbol, connector::AbstractString="_")

Extends * to Symbols multiplication by connecting the symbols by an _.

source


# Base.inMethod.
julia
Base.in(::Any, ::Nothing)

Extends Base.in (or ) when the set is nothing. Returns false.

source


# Base.isemptyMethod.
julia
Base.isempty(::Nothing)

Extends Base.isempty when the set is nothing. Returns true.

source


# ConstraintCommons.acceptMethod.
julia
accept(a::Union{Automaton, MDD}, w)

Return true if a accepts the word w and false otherwise.

source


# ConstraintCommons.at_endMethod.
julia
at_end(a::Automaton, s)

Internal method used by accept with Automaton.

source


# ConstraintCommons.extract_parametersMethod.
julia
extract_parameters(m::Union{Method, Function}; parameters)

Extracts the intersection between the kargs of m and parameters (defaults to USUAL_CONSTRAINT_PARAMETERS).

source


# ConstraintCommons.incsert!Function.
julia
incsert!(d::Union{AbstractDict, AbstractDictionary}, ind, val = 1)

Increase or insert a counter in a dictionary-based collection. The counter insertion defaults to val = 1.

source


# ConstraintCommons.oversampleMethod.
julia
oversample(X, f)

Oversample elements of X until the boolean function f has as many true and false configurations.

source


# ConstraintCommons.δ_extremaMethod.
julia
δ_extrema(X...)

Compute both the difference between the maximum and the minimum of over all the collections of X.

source


+ + + + \ No newline at end of file diff --git a/dev/constraint_domains.html b/dev/constraints/constraint_domains.html similarity index 62% rename from dev/constraint_domains.html rename to dev/constraints/constraint_domains.html index 7e13b42..81a92d0 100644 --- a/dev/constraint_domains.html +++ b/dev/constraints/constraint_domains.html @@ -8,16 +8,16 @@ - + - - + + -
Skip to content

ConstraintDomains.jl

Documentation for ConstraintDomains.jl.

# ConstraintDomains.AbstractDomainType.
julia
AbstractDomain

An abstract super type for any domain type. A domain type D <: AbstractDomain must implement the following methods to properly interface AbstractDomain.

  • Base.∈(val, ::D)

  • Base.rand(::D)

  • Base.length(::D) that is the number of elements in a discrete domain, and the distance between bounds or similar for a continuous domain

Addtionally, if the domain is used in a dynamic context, it can extend

  • add!(::D, args)

  • delete!(::D, args)

where args depends on D's structure

source


# ConstraintDomains.ContinuousDomainType.
julia
ContinuousDomain{T <: Real} <: AbstractDomain

An abstract supertype for all continuous domains.

source


# ConstraintDomains.DiscreteDomainType.
julia
DiscreteDomain{T <: Number} <: AbstractDomain

An abstract supertype for discrete domains (set, range).

source


# ConstraintDomains.EmptyDomainType.
julia
EmptyDomain

A struct to handle yet to be defined domains.

source


# ConstraintDomains.ExploreSettingsMethod.
julia
ExploreSettings(
+    
Skip to content

ConstraintDomains.jl

Documentation for ConstraintDomains.jl.

# ConstraintDomains.AbstractDomainType.
julia
AbstractDomain

An abstract super type for any domain type. A domain type D <: AbstractDomain must implement the following methods to properly interface AbstractDomain.

  • Base.∈(val, ::D)

  • Base.rand(::D)

  • Base.length(::D) that is the number of elements in a discrete domain, and the distance between bounds or similar for a continuous domain

Addtionally, if the domain is used in a dynamic context, it can extend

  • add!(::D, args)

  • delete!(::D, args)

where args depends on D's structure

source


# ConstraintDomains.ContinuousDomainType.
julia
ContinuousDomain{T <: Real} <: AbstractDomain

An abstract supertype for all continuous domains.

source


# ConstraintDomains.DiscreteDomainType.
julia
DiscreteDomain{T <: Number} <: AbstractDomain

An abstract supertype for discrete domains (set, range).

source


# ConstraintDomains.EmptyDomainType.
julia
EmptyDomain

A struct to handle yet to be defined domains.

source


# ConstraintDomains.ExploreSettingsMethod.
julia
ExploreSettings(
     domains;
     complete_search_limit = 10^6,
     max_samplings = sum(domain_size, domains),
@@ -26,13 +26,13 @@
 )

Settings for the exploration of a search space composed by a collection of domains.

source


# ConstraintDomains.FakeAutomatonType.
julia
FakeAutomaton{T} <: ConstraintCommons.AbstractAutomaton

A structure to generate pseudo automaton enough for parameter exploration.

source


# ConstraintDomains.IntervalsType.
julia
Intervals{T <: Real} <: ContinuousDomain{T}

An encapsuler to store a vector of PatternFolds.Interval. Dynamic changes to Intervals are not handled yet.

source


# ConstraintDomains.RangeDomainType.
julia
RangeDomain

A discrete domain defined by a range <: AbstractRange{Real}. As ranges are immutable in Julia, changes in RangeDomain must use set_domain!.

source


# ConstraintDomains.SetDomainType.
julia
SetDomain{T <: Number} <: DiscreteDomain{T}

Domain that stores discrete values as a set of (unordered) points.

source


# Base.convertMethod.
julia
Base.convert(::Type{Union{Intervals, RangeDomain}}, d::Union{Intervals, RangeDomain})

Extends Base.convert for domains.

source


# Base.delete!Method.
julia
Base.delete!(d::SetDomain, value)(d::SetDomain, value)

Delete value from the list of points in d.

source


# Base.eltypeMethod.
julia
Base.eltype(::AbstractDomain)

Extend eltype for domains.

source


# Base.inMethod.
julia
Base.in(x, itv::Intervals)

Return true if x ∈ I for any 'I ∈ itv, false otherwise.x ∈ I` is equivalent to

  • a < x < b if I = (a, b)

  • a < x ≤ b if I = (a, b]

  • a ≤ x < b if I = [a, b)

  • a ≤ x ≤ b if I = [a, b]

source


# Base.inMethod.
julia
Base.in(value, d <: AbstractDomain)

Fallback method for value ∈ d that returns false.

source


# Base.inMethod.
julia
Base.in(value, d::D) where D <: DiscreteDomain

Return true if value is a point of d.

source


# Base.isemptyMethod.
julia
Base.isempty(d <: AbstractDomain)

Fallback method for isempty(d) that return length(d) == 0 which default to 0.

source


# Base.lengthMethod.
julia
Base.length(itv::Intervals)

Return the sum of the length of each interval in itv.

source


# Base.lengthMethod.
julia
Base.rand(d <: AbstractDomain)

Fallback method for length(d) that return 0.

source


# Base.lengthMethod.
julia
Base.length(d::D) where D <: DiscreteDomain

Return the number of points in d.

source


# Base.randMethod.
julia
Base.rand(d::Union{Vector{D},Set{D}, D}) where {D<:AbstractDomain}

Extends Base.rand to (a collection of) domains.

source


# Base.randMethod.
julia
Base.rand(fa::FakeAutomaton)

Extends Base.rand. Currently simply returns fa.

source


# Base.randMethod.
julia
Base.rand(itv::Intervals)
 Base.rand(itv::Intervals, i)

Return a random value from itv, specifically from the ith interval if i is specified.

source


# Base.randMethod.
julia
Base.rand(d::D) where D <: DiscreteDomain

Draw randomly a point in d.

source


# Base.stringMethod.
julia
Base.string(D::Vector{<:AbstractDomain})
 Base.string(d<:AbstractDomain)

Extends the string method to (a vector of) domains.

source


# ConstraintCommons.acceptMethod.
julia
ConstraintCommons.accept(fa::FakeAutomaton, word)

Implement the accept methods for FakeAutomaton.

source


# ConstraintDomains._exploreMethod.
julia
_explore(args...)

Internals of the explore function. Behavior is automatically adjusted on the kind of exploration: :flexible, :complete, :partial.

source


# ConstraintDomains.add!Method.
julia
add!(d::SetDomain, value)

Add value to the list of points in d.

source


# ConstraintDomains.domainMethod.
julia
domain(values)
-domain(range::R) where {T <: Real, R <: AbstractRange{T}}

Construct either a SetDomain or a RangeDomain.

julia
d1 = domain(1:5)
+domain(range::R) where {T <: Real, R <: AbstractRange{T}}

Construct either a SetDomain or a RangeDomain.

julia
d1 = domain(1:5)
 d2 = domain([53.69, 89.2, 0.12])
 d3 = domain([2//3, 89//123])
 d4 = domain(4.3)
-d5 = domain(1,42,86.9)

source


# ConstraintDomains.domainMethod.
julia
domain()

Construct an EmptyDomain.

source


# ConstraintDomains.domainMethod.
julia
domain(a::Tuple{T, Bool}, b::Tuple{T, Bool}) where {T <: Real}
-domain(intervals::Vector{Tuple{Tuple{T, Bool},Tuple{T, Bool}}}) where {T <: Real}

Construct a domain of continuous interval(s). ```julia d1 = domain((0., true), (1., false)) # d1 = [0, 1) d2 = domain([ # d2 = 0, 1) ∪ (3.5, 42, (1., false), (3.5, false), (42., true), ])

source


# ConstraintDomains.domain_sizeMethod.
julia
domain_size(itv::Intervals)

Return the difference between the highest and lowest values in itv.

source


# ConstraintDomains.domain_sizeMethod.
julia
domain_size(d <: AbstractDomain)

Fallback method for domain_size(d) that return length(d).

source


# ConstraintDomains.domain_sizeMethod.
julia
domain_size(d::D) where D <: DiscreteDomain

Return the maximum distance between two points in d.

source


# ConstraintDomains.exploreMethod.
julia
explore(domains, concept, param = nothing; search_limit = 1000, solutions_limit = 100)

Search (a part of) a search space and returns a pair of vector of configurations: (solutions, non_solutions). If the search space size is over search_limit, then both solutions and non_solutions are limited to solutions_limit.

Beware that if the density of the solutions in the search space is low, solutions_limit needs to be reduced. This process will be automatic in the future (simple reinforcement learning).

Arguments:

  • domains: a collection of domains

  • concept: the concept of the targeted constraint

  • param: an optional parameter of the constraint

  • sol_number: the required number of solutions (half of the number of configurations), default to 100

source


# ConstraintDomains.fake_automatonMethod.
julia
fake_automaton(d)

Construct a FakeAutomaton.

source


# ConstraintDomains.generate_parametersMethod.
julia
generate_parameters(d<:AbstractDomain, param)

Generates random parameters based on the domain d and the kind of parameters param.

source


# ConstraintDomains.get_domainMethod.
julia
get_domain(::AbstractDomain)

Access the internal structure of any domain type.

source


# ConstraintDomains.intersect_domainsMethod.
julia
intersect_domains(d₁, d₂)

Compute the intersections of two domains.

source


# ConstraintDomains.merge_domainsMethod.
julia
merge_domains(d₁::AbstractDomain, d₂::AbstractDomain)

Merge two domains of same nature (discrete/contiuous).

source


# ConstraintDomains.sizeMethod.
julia
Base.size(i::I) where {I <: Interval}

Defines the size of an interval as its span.

source


# ConstraintDomains.to_domainsMethod.
julia
to_domains(args...)

Convert various arguments into valid domains format.

source


- +d5 = domain(1,42,86.9)

source


# ConstraintDomains.domainMethod.
julia
domain()

Construct an EmptyDomain.

source


# ConstraintDomains.domainMethod.
julia
domain(a::Tuple{T, Bool}, b::Tuple{T, Bool}) where {T <: Real}
+domain(intervals::Vector{Tuple{Tuple{T, Bool},Tuple{T, Bool}}}) where {T <: Real}

Construct a domain of continuous interval(s). ```julia d1 = domain((0., true), (1., false)) # d1 = [0, 1) d2 = domain([ # d2 = 0, 1) ∪ (3.5, 42, (1., false), (3.5, false), (42., true), ])

source


# ConstraintDomains.domain_sizeMethod.
julia
domain_size(itv::Intervals)

Return the difference between the highest and lowest values in itv.

source


# ConstraintDomains.domain_sizeMethod.
julia
domain_size(d <: AbstractDomain)

Fallback method for domain_size(d) that return length(d).

source


# ConstraintDomains.domain_sizeMethod.
julia
domain_size(d::D) where D <: DiscreteDomain

Return the maximum distance between two points in d.

source


# ConstraintDomains.exploreMethod.
julia
explore(domains, concept, param = nothing; search_limit = 1000, solutions_limit = 100)

Search (a part of) a search space and returns a pair of vector of configurations: (solutions, non_solutions). If the search space size is over search_limit, then both solutions and non_solutions are limited to solutions_limit.

Beware that if the density of the solutions in the search space is low, solutions_limit needs to be reduced. This process will be automatic in the future (simple reinforcement learning).

Arguments:

  • domains: a collection of domains

  • concept: the concept of the targeted constraint

  • param: an optional parameter of the constraint

  • sol_number: the required number of solutions (half of the number of configurations), default to 100

source


# ConstraintDomains.fake_automatonMethod.
julia
fake_automaton(d)

Construct a FakeAutomaton.

source


# ConstraintDomains.generate_parametersMethod.
julia
generate_parameters(d<:AbstractDomain, param)

Generates random parameters based on the domain d and the kind of parameters param.

source


# ConstraintDomains.get_domainMethod.
julia
get_domain(::AbstractDomain)

Access the internal structure of any domain type.

source


# ConstraintDomains.intersect_domainsMethod.
julia
intersect_domains(d₁, d₂)

Compute the intersections of two domains.

source


# ConstraintDomains.merge_domainsMethod.
julia
merge_domains(d₁::AbstractDomain, d₂::AbstractDomain)

Merge two domains of same nature (discrete/contiuous).

source


# ConstraintDomains.sizeMethod.
julia
Base.size(i::I) where {I <: Interval}

Defines the size of an interval as its span.

source


# ConstraintDomains.to_domainsMethod.
julia
to_domains(args...)

Convert various arguments into valid domains format.

source


+ \ No newline at end of file diff --git a/dev/constraints/constraint_models.html b/dev/constraints/constraint_models.html new file mode 100644 index 0000000..be31dc9 --- /dev/null +++ b/dev/constraints/constraint_models.html @@ -0,0 +1,24 @@ + + + + + + ConstraintModels.jl | Julia Constraints + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dev/constraints/constraints.html b/dev/constraints/constraints.html new file mode 100644 index 0000000..31a8bd2 --- /dev/null +++ b/dev/constraints/constraints.html @@ -0,0 +1,24 @@ + + + + + + Constraints.jl | Julia Constraints + + + + + + + + + + + + + +
Skip to content

Constraints.jl

Documentation for Constraints.jl.

# Constraints.USUAL_CONSTRAINTSConstant.
julia
USUAL_CONSTRAINTS::Dict

Dictionary that contains all the usual constraints defined in Constraint.jl. It is based on XCSP3-core specifications available at https://arxiv.org/abs/2009.00514

Adding a new constraint is as simple as

julia
@usual name p a sym₁ sym₂

where

  • name: constraint name

  • p: the length of the parameters (0 means no parameters)

  • a: the length of the arguments/variables (0 means any length is possible).

  • symᵢ: a sequence of symmetries (can be left empty)

Both a alone, or p and a together are optional.

Note that concept_name needs to be defined. Unless both error_name and icn_error_name are defined, a default error function will be computed. Please (re-)define error_name for a hand_made error function.

source


# Constraints.USUAL_SYMMETRIESConstant.
julia
USUAL_SYMMETRIES

A Dictionary that contains the function to apply for each symmetry to avoid searching a whole space.

source


# Constraints.ConstraintType.
julia
Constraint

Parametric stucture with the following fields.

  • concept: a Boolean function that, given an assignment x, outputs true if x satisfies the constraint, and false otherwise.

  • error: a positive function that works as preferences over invalid assignements. Return 0.0 if the constraint is satisfied, and a strictly positive real otherwise.

source


# Constraints.argsMethod.
julia
args(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of value is accepted.

source


# Constraints.conceptMethod.
julia
concept(c::Constraint)

Return the concept (function) of constraint c. concept(c::Constraint, x...; param = nothing) Apply the concept of c to values x and optionally param.

source


# Constraints.error_fMethod.
julia
error_f(c::Constraint)

Return the error function of constraint c. error_f(c::Constraint, x; param = nothing) Apply the error function of c to values x and optionally param.

source


# Constraints.params_lengthMethod.
julia
params_length(c::Constraint)

Return the expected length restriction of the arguments in a constraint c. The value nothing indicates that any strictly positive number of parameters is accepted.

source


# Constraints.shrink_conceptMethod.
julia
shrink_concept(s)

Simply delete the concept_ part of symbol or string starting with it. TODO: add a check with a warning if s starts with something different.

source


# Constraints.symmetriesMethod.
julia
symmetries(c::Constraint)

Return the list of symmetries of c.

source


# Constraints.xcsp_intensionMethod.
julia
xcsp_intension(list, predicate)

An intensional constraint is usually defined from a predicate over x. As such it encompass any generic constraint.

source


+ + + + \ No newline at end of file diff --git a/dev/cp/intro.html b/dev/cp/intro.html new file mode 100644 index 0000000..3561d2c --- /dev/null +++ b/dev/cp/intro.html @@ -0,0 +1,24 @@ + + + + + + Getting Started | Julia Constraints + + + + + + + + + + + + + +
Skip to content

Getting Started

A soon to be starting guide to Constraint Programming in Julia.

+ + + + \ No newline at end of file diff --git a/dev/cp/opt.html b/dev/cp/opt.html new file mode 100644 index 0000000..19328ba --- /dev/null +++ b/dev/cp/opt.html @@ -0,0 +1,24 @@ + + + + + + The World of Optimization | Julia Constraints + + + + + + + + + + + + + +
Skip to content

The World of Optimization

Comparison and guidelines about the different way to do optimization.

+ + + + \ No newline at end of file diff --git a/dev/getting_started.html b/dev/getting_started.html deleted file mode 100644 index c343572..0000000 --- a/dev/getting_started.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Getting Started | Julia Constraints - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dev/hashmap.json b/dev/hashmap.json index 65daf6a..9272f2e 100644 --- a/dev/hashmap.json +++ b/dev/hashmap.json @@ -1 +1 @@ -{"benchmark_ext.md":"Bp6mh-J0","index copy.md":"BptgAnbY","index.md":"D3juxETI","perf_checker.md":"Ceglkxdw","meta_strategist.md":"CMoOFVoq","perf_interface.md":"C99Ei7Qh","qubo_constraints.md":"DnnK5RAO","cbls.md":"doV2wO36","constraint_commons.md":"C75tWCM4","constraint_models.md":"DJfVEzwr","getting_started.md":"D1Qzmbqp","constraints.md":"CIqVzD9y","compositional_networks.md":"BhghO7dc","constraint_learning.md":"Cq9Qshoe","constraint_domains.md":"Djni_Jg6","local_search_solvers.md":"C_V13GvZ"} +{"constraints_constraint_commons.md":"DieObjHT","index.md":"BgLux7MK","constraints_constraint_models.md":"B_4-8zkK","cp_opt.md":"BzEDNEew","learning_qubo_constraints.md":"D6WkgtAs","meta_meta_strategist.md":"DPB3xUTb","cp_intro.md":"BNFii_Eq","constraints_constraints.md":"BSecFW8a","index-old.md":"D8PnE1wz","learning_constraint_learning.md":"DntSqYyZ","perf_perf_interface.md":"BojTEMgF","learning_compositional_networks.md":"CcHo_ron","constraints_constraint_domains.md":"BfoWRoqf","perf_benchmark_ext.md":"BF6daeNT","perf_perf_checker.md":"Mp2EYC4l","solvers_cbls.md":"EsXDaOSr","solvers_local_search_solvers.md":"BVMxw1Dj"} diff --git a/dev/index copy.html b/dev/index copy.html deleted file mode 100644 index 1f90088..0000000 --- a/dev/index copy.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Julia Constraints - - - - - - - - - - - - - -
Skip to content

JuliaConstraints

JuliaConstraints is a collection of packages that help you solve constraint programming problems in Julia. Constraint programming involves modeling problems with constraints, such as "x > 5" or "x + y = 10", and finding solutions that satisfy all of the constraints. It is a part of the JuMP ecosystem that focuses on constraint programming in Julia.

The goal of packages in JuliaConstraints are two-fold: some of them provide a generic interface, others are solvers for CP models (either purely in Julia or wrapping). They make it easy to solve constraint-satisfaction problems (CSPs) and constraint-optimisation problems (COPs) in Julia using industry-standard solvers and mixed-integer solvers.

Other packages for CP in Julia include:

Operational Research vs Constraint Programming

Operational research (OR) is a problem-solving approach that uses mathematical models, statistical analysis, and optimization techniques to help organizations make better decisions. OR is concerned with understanding and optimizing complex systems, such as supply chains, transportation networks, and manufacturing processes, to improve efficiency and reduce costs.

On the other hand, constraint programming (CP) is a programming paradigm that focuses on solving problems with constraints. Constraints are conditions that must be satisfied for a solution to be valid. CP is often used to solve combinatorial problems, such as scheduling, routing, and allocation, where the search space of possible solutions is very large.

So, while both OR and CP are concerned with solving complex problems, they approach the problem-solving process from different angles. OR typically uses mathematical models and optimization techniques to analyze and optimize existing systems, while CP focuses on finding valid solutions that satisfy a set of constraints.

Constraint-based local search (CBLS) is a type of constraint programming solver that uses a heuristic search algorithm to find solutions to problems. It starts with an initial solution and tries to improve it by making small changes that satisfy the constraints. CBLS is especially useful for large and complex problems where finding an exact solution may take too much time or be impossible.

In contrast, other constraint programming solvers use a variety of algorithms and techniques to find exact solutions to problems. These solvers try to find a solution that satisfies all of the constraints in the problem. They can be useful for smaller problems where finding an exact solution is feasible, or for problems that have a clear mathematical structure.

In summary, CBLS is a type of constraint programming solver that uses a heuristic search algorithm to find good solutions, while other constraint programming solvers use various techniques to find exact solutions to problems.

- - - - \ No newline at end of file diff --git a/dev/index-old.html b/dev/index-old.html new file mode 100644 index 0000000..65f603e --- /dev/null +++ b/dev/index-old.html @@ -0,0 +1,24 @@ + + + + + + Julia Constraints + + + + + + + + + + + + + +
Skip to content

JuliaConstraints

JuliaConstraints is a collection of packages that help you solve constraint programming problems in Julia. Constraint programming involves modeling problems with constraints, such as "x > 5" or "x + y = 10", and finding solutions that satisfy all of the constraints. It is a part of the JuMP ecosystem that focuses on constraint programming in Julia.

The goal of packages in JuliaConstraints are two-fold: some of them provide a generic interface, others are solvers for CP models (either purely in Julia or wrapping). They make it easy to solve constraint-satisfaction problems (CSPs) and constraint-optimisation problems (COPs) in Julia using industry-standard solvers and mixed-integer solvers.

Other packages for CP in Julia include:

Operational Research vs Constraint Programming

Operational research (OR) is a problem-solving approach that uses mathematical models, statistical analysis, and optimization techniques to help organizations make better decisions. OR is concerned with understanding and optimizing complex systems, such as supply chains, transportation networks, and manufacturing processes, to improve efficiency and reduce costs.

On the other hand, constraint programming (CP) is a programming paradigm that focuses on solving problems with constraints. Constraints are conditions that must be satisfied for a solution to be valid. CP is often used to solve combinatorial problems, such as scheduling, routing, and allocation, where the search space of possible solutions is very large.

So, while both OR and CP are concerned with solving complex problems, they approach the problem-solving process from different angles. OR typically uses mathematical models and optimization techniques to analyze and optimize existing systems, while CP focuses on finding valid solutions that satisfy a set of constraints.

Constraint-based local search (CBLS) is a type of constraint programming solver that uses a heuristic search algorithm to find solutions to problems. It starts with an initial solution and tries to improve it by making small changes that satisfy the constraints. CBLS is especially useful for large and complex problems where finding an exact solution may take too much time or be impossible.

In contrast, other constraint programming solvers use a variety of algorithms and techniques to find exact solutions to problems. These solvers try to find a solution that satisfies all of the constraints in the problem. They can be useful for smaller problems where finding an exact solution is feasible, or for problems that have a clear mathematical structure.

In summary, CBLS is a type of constraint programming solver that uses a heuristic search algorithm to find good solutions, while other constraint programming solvers use various techniques to find exact solutions to problems.

+ + + + \ No newline at end of file diff --git a/dev/index.html b/dev/index.html index b3e7adc..e6d7cf5 100644 --- a/dev/index.html +++ b/dev/index.html @@ -8,17 +8,17 @@ - + - - + + - - +
Skip to content

Julia Constraints

Model Smoothly Decide Wisely

A Toolkit for Constraint Programming

JuliaConstraints

What is Julia Constraints? (chatGPTed atm)

The Julia Constraints organization is dedicated to advancing Constraint Programming within the Julia ecosystem, serving as a hub for resources that facilitate the creation, understanding, and solution of constraint programming problems. Our goal is to make Constraint Programming accessible and efficient for users at all levels of expertise, by providing a comprehensive suite of tools that integrate seamlessly with JuMP.jl, a popular Julia package for mathematical optimization.

Our offerings include:

Core Packages:

A foundation of common packages (ConstraintCommons, ConstraintDomains, Constraints, ConstraintModels) that supply essential features for constraint programming, ensuring users have the basic tools necessary for their projects.

Learning and Translation Tools:

Advanced packages like CompositionalNetworks, QUBOConstraints, and ConstraintsTranslator bridge the gap between ease of modeling and computational efficiency. These tools learn from constraints and convert natural language problems into constraint programming solutions, requiring minimal input from the user beyond the model itself.

Solvers:

We provide a range of solvers, from native Julia solvers (LocalSearchSolvers) to interfaces with JuMP for external CP solvers, catering to various problem-solving needs.

MetaStrategist (Emerging Technology):

In its formative stages, MetaStrategist embodies our pioneering spirit. As a burgeoning meta-solving package, it aims to harness the strengths of CP and JuMP. Its vision is to formulate tailored strategies that consider the unique hardware and software resources at hand, offering a new horizon in problem-solving efficiency and adaptability.

Performance Checker (Community Resource):

PerfChecker.jl transcends its role within Julia Constraints, offering its capabilities to the broader Julia package ecosystem. This indispensable tool for cross-version performance checking not only safeguards the high efficiency and reliability of our packages but also serves the wider community. By facilitating clear and simple performance evaluations, PerfChecker.jl enhances both development and maintenance, contributing to the overall health and progress of Julia's growing library of resources.

At Julia Constraints, our mission is to democratize Constraint Programming by providing robust, user-friendly tools that simplify the modeling process, enhance efficiency, and empower users to solve complex problems with ease.

+ \ No newline at end of file diff --git a/dev/compositional_networks.html b/dev/learning/compositional_networks.html similarity index 50% rename from dev/compositional_networks.html rename to dev/learning/compositional_networks.html index 4398baa..c196c6f 100644 --- a/dev/compositional_networks.html +++ b/dev/learning/compositional_networks.html @@ -8,16 +8,16 @@ - + - - + + -
Skip to content

CompositionalNetworks.jl

Documentation for CompositionalNetworks.jl.

# CompositionalNetworks.CompositionType.
julia
struct Composition{F<:Function}

Store the all the information of a composition learned by an ICN.

source


# CompositionalNetworks.CompositionMethod.
julia
Composition(f::F, symbols) where {F<:Function}

Construct a Composition.

source


# CompositionalNetworks.ICNType.
julia
ICN(; nvars, dom_size, param, transformation, arithmetic, aggregation, comparison)

Construct an Interpretable Compositional Network, with the following arguments:

  • nvars: number of variable in the constraint

  • dom_size: maximum domain size of any variable in the constraint

  • param: optional parameter (default to nothing)

  • transformation: a transformation layer (optional)

  • arithmetic: a arithmetic layer (optional)

  • aggregation: a aggregation layer (optional)

  • comparison: a comparison layer (optional)

source


# CompositionalNetworks.LayerType.
julia
Layer

A structure to store a LittleDict of operations that can be selected during the learning phase of an ICN. If the layer is exclusive, only one operation can be selected at a time.

source


# Base.lengthMethod.
julia
length(layer)

Return the number of operations in a layer.

source


# Base.lengthMethod.
julia
Base.length(icn)

Return the total number of operations of an ICN.

source


# CompositionalNetworks._composeMethod.
julia
_compose(icn)

Internal function called by compose and show_composition.

source


# CompositionalNetworks.ag_count_positiveMethod.
julia
ag_count_positive(x)

Count the number of strictly positive elements of x.

source


# CompositionalNetworks.ag_sumMethod.
julia
ag_sum(x)

Aggregate through + a vector into a single scalar.

source


# CompositionalNetworks.aggregation_layerMethod.
julia
aggregation_layer()

Generate the layer of aggregations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.ar_prodMethod.
julia
ar_prod(x)

Reduce k = length(x) vectors through product to a single vector.

source


# CompositionalNetworks.ar_sumMethod.
julia
ar_sum(x)

Reduce k = length(x) vectors through sum to a single vector.

source


# CompositionalNetworks.arithmetic_layerMethod.
julia
arithmetic_layer()

Generate the layer of arithmetic operations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.as_bitvectorFunction.
julia
as_bitvector(n::Int, max_n::Int = n)

Convert an Int to a BitVector of minimal size (relatively to max_n).

source


# CompositionalNetworks.as_intMethod.
julia
as_int(v::AbstractVector)

Convert a BitVector into an Int.

source


# CompositionalNetworks.co_abs_diff_val_paramMethod.
julia
co_abs_diff_val_param(x; param)

Return the absolute difference between x and param.

source


# CompositionalNetworks.co_abs_diff_val_varsMethod.
julia
co_abs_diff_val_vars(x; nvars)

Return the absolute difference between x and the number of variables nvars.

source


# CompositionalNetworks.co_euclidianMethod.
julia
co_euclidian(x; dom_size)

Compute an euclidian norm with domain size dom_size of a scalar.

source


# CompositionalNetworks.co_euclidian_paramMethod.
julia
co_euclidian_param(x; param, dom_size)

Compute an euclidian norm with domain size dom_size, weigthed by param, of a scalar.

source


# CompositionalNetworks.co_identityMethod.
julia
co_identity(x)

Identity function. Already defined in Julia as identity, specialized for scalars in the comparison layer.

source


# CompositionalNetworks.co_param_minus_valMethod.
julia
co_param_minus_val(x; param)

Return the difference param - x if positive, 0.0 otherwise.

source


# CompositionalNetworks.co_val_minus_paramMethod.
julia
co_val_minus_param(x; param)

Return the difference x - param if positive, 0.0 otherwise.

source


# CompositionalNetworks.co_val_minus_varsMethod.
julia
co_val_minus_vars(x; nvars)

Return the difference x - nvars if positive, 0.0 otherwise, where nvars denotes the numbers of variables.

source


# CompositionalNetworks.co_vars_minus_valMethod.
julia
co_vars_minus_val(x; nvars)

Return the difference nvars - x if positive, 0.0 otherwise, where nvars denotes the numbers of variables.

source


# CompositionalNetworks.codeFunction.
julia
code(c::Composition, lang=:maths; name="composition")

Access the code of a composition c in a given language lang. The name of the generated method is optional.

source


# CompositionalNetworks.comparison_layerFunction.
julia
comparison_layer(param = false)

Generate the layer of transformations functions of the ICN. Iff param value is set, also includes all the parametric comparison with that value. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.composeFunction.
julia
compose(icn, weigths=nothing)

Return a function composed by some of the operations of a given ICN. Can be applied to any vector of variables. If weigths are given, will assign to icn.

source


# CompositionalNetworks.compose_to_file!Method.
julia
compose_to_file!(concept, name, path; domains, param = nothing, language = :Julia, search = :complete, global_iter = 10, local_iter = 100, metric = hamming, popSize = 200)

Explore, learn and compose a function and write it to a file.

Arguments:

  • concept: the concept to learn

  • name: the name to give to the constraint

  • path: path of the output file

Keywords arguments:

  • domains: domains that defines the search space

  • param: an optional paramater of the constraint

  • language: the language to export to, default to :julia

  • search: either :partial or :complete search

  • global_iter: number of learning iteration

  • local_iter: number of generation in the genetic algorithm

  • metric: the metric to measure the distance between a configuration and known solutions

  • popSize: size of the population in the genetic algorithm

source


# CompositionalNetworks.compositionMethod.
julia
composition(c::Composition)

Access the actual method of an ICN composition c.

source


# CompositionalNetworks.composition_to_file!Function.
julia
composition_to_file!(c::Composition, path, name, language=:Julia)

Write the composition code in a given language into a file at path.

source


# CompositionalNetworks.excluMethod.
julia
exclu(layer)

Return true if the layer has mutually exclusive operations.

source


# CompositionalNetworks.explore_learn_composeMethod.
julia
explore_learn_compose(concept; domains, param = nothing, search = :complete, global_iter = 10, local_iter = 100, metric = hamming, popSize = 200, action = :composition)

Explore a search space, learn a composition from an ICN, and compose an error function.

Arguments:

  • concept: the concept of the targeted constraint

  • domains: domains of the variables that define the training space

  • param: an optional parameter of the constraint

  • search: either flexible,:partial or :complete search. Flexible search will use search_limit and solutions_limit to determine if the search space needs to be partially or completely explored

  • global_iter: number of learning iteration

  • local_iter: number of generation in the genetic algorithm

  • metric: the metric to measure the distance between a configuration and known solutions

  • popSize: size of the population in the genetic algorithm

  • action: either :symbols to have a description of the composition or :composition to have the composed function itself

source


# CompositionalNetworks.functionsMethod.
julia
functions(layer)

Access the operations of a layer. The container is ordered.

source


# CompositionalNetworks.generateMethod.
julia
generate(c::Composition, name, lang)

Generates the code of c in a specific language lang.

source


# CompositionalNetworks.generate_inclusive_operationsMethod.
julia
generate_inclusive_operations(predicate, bits)
+    
Skip to content

CompositionalNetworks.jl

Documentation for CompositionalNetworks.jl.

# CompositionalNetworks.CompositionType.
julia
struct Composition{F<:Function}

Store the all the information of a composition learned by an ICN.

source


# CompositionalNetworks.CompositionMethod.
julia
Composition(f::F, symbols) where {F<:Function}

Construct a Composition.

source


# CompositionalNetworks.ICNType.
julia
ICN(; nvars, dom_size, param, transformation, arithmetic, aggregation, comparison)

Construct an Interpretable Compositional Network, with the following arguments:

  • nvars: number of variable in the constraint

  • dom_size: maximum domain size of any variable in the constraint

  • param: optional parameter (default to nothing)

  • transformation: a transformation layer (optional)

  • arithmetic: a arithmetic layer (optional)

  • aggregation: a aggregation layer (optional)

  • comparison: a comparison layer (optional)

source


# CompositionalNetworks.LayerType.
julia
Layer

A structure to store a LittleDict of operations that can be selected during the learning phase of an ICN. If the layer is exclusive, only one operation can be selected at a time.

source


# Base.lengthMethod.
julia
length(layer)

Return the number of operations in a layer.

source


# Base.lengthMethod.
julia
Base.length(icn)

Return the total number of operations of an ICN.

source


# CompositionalNetworks._composeMethod.
julia
_compose(icn)

Internal function called by compose and show_composition.

source


# CompositionalNetworks.ag_count_positiveMethod.
julia
ag_count_positive(x)

Count the number of strictly positive elements of x.

source


# CompositionalNetworks.ag_sumMethod.
julia
ag_sum(x)

Aggregate through + a vector into a single scalar.

source


# CompositionalNetworks.aggregation_layerMethod.
julia
aggregation_layer()

Generate the layer of aggregations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.ar_prodMethod.
julia
ar_prod(x)

Reduce k = length(x) vectors through product to a single vector.

source


# CompositionalNetworks.ar_sumMethod.
julia
ar_sum(x)

Reduce k = length(x) vectors through sum to a single vector.

source


# CompositionalNetworks.arithmetic_layerMethod.
julia
arithmetic_layer()

Generate the layer of arithmetic operations of the ICN. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.as_bitvectorFunction.
julia
as_bitvector(n::Int, max_n::Int = n)

Convert an Int to a BitVector of minimal size (relatively to max_n).

source


# CompositionalNetworks.as_intMethod.
julia
as_int(v::AbstractVector)

Convert a BitVector into an Int.

source


# CompositionalNetworks.co_abs_diff_val_paramMethod.
julia
co_abs_diff_val_param(x; param)

Return the absolute difference between x and param.

source


# CompositionalNetworks.co_abs_diff_val_varsMethod.
julia
co_abs_diff_val_vars(x; nvars)

Return the absolute difference between x and the number of variables nvars.

source


# CompositionalNetworks.co_euclidianMethod.
julia
co_euclidian(x; dom_size)

Compute an euclidian norm with domain size dom_size of a scalar.

source


# CompositionalNetworks.co_euclidian_paramMethod.
julia
co_euclidian_param(x; param, dom_size)

Compute an euclidian norm with domain size dom_size, weigthed by param, of a scalar.

source


# CompositionalNetworks.co_identityMethod.
julia
co_identity(x)

Identity function. Already defined in Julia as identity, specialized for scalars in the comparison layer.

source


# CompositionalNetworks.co_param_minus_valMethod.
julia
co_param_minus_val(x; param)

Return the difference param - x if positive, 0.0 otherwise.

source


# CompositionalNetworks.co_val_minus_paramMethod.
julia
co_val_minus_param(x; param)

Return the difference x - param if positive, 0.0 otherwise.

source


# CompositionalNetworks.co_val_minus_varsMethod.
julia
co_val_minus_vars(x; nvars)

Return the difference x - nvars if positive, 0.0 otherwise, where nvars denotes the numbers of variables.

source


# CompositionalNetworks.co_vars_minus_valMethod.
julia
co_vars_minus_val(x; nvars)

Return the difference nvars - x if positive, 0.0 otherwise, where nvars denotes the numbers of variables.

source


# CompositionalNetworks.codeFunction.
julia
code(c::Composition, lang=:maths; name="composition")

Access the code of a composition c in a given language lang. The name of the generated method is optional.

source


# CompositionalNetworks.comparison_layerFunction.
julia
comparison_layer(param = false)

Generate the layer of transformations functions of the ICN. Iff param value is set, also includes all the parametric comparison with that value. The operations are mutually exclusive, that is only one will be selected.

source


# CompositionalNetworks.composeFunction.
julia
compose(icn, weigths=nothing)

Return a function composed by some of the operations of a given ICN. Can be applied to any vector of variables. If weigths are given, will assign to icn.

source


# CompositionalNetworks.compose_to_file!Method.
julia
compose_to_file!(concept, name, path; domains, param = nothing, language = :Julia, search = :complete, global_iter = 10, local_iter = 100, metric = hamming, popSize = 200)

Explore, learn and compose a function and write it to a file.

Arguments:

  • concept: the concept to learn

  • name: the name to give to the constraint

  • path: path of the output file

Keywords arguments:

  • domains: domains that defines the search space

  • param: an optional paramater of the constraint

  • language: the language to export to, default to :julia

  • search: either :partial or :complete search

  • global_iter: number of learning iteration

  • local_iter: number of generation in the genetic algorithm

  • metric: the metric to measure the distance between a configuration and known solutions

  • popSize: size of the population in the genetic algorithm

source


# CompositionalNetworks.compositionMethod.
julia
composition(c::Composition)

Access the actual method of an ICN composition c.

source


# CompositionalNetworks.composition_to_file!Function.
julia
composition_to_file!(c::Composition, path, name, language=:Julia)

Write the composition code in a given language into a file at path.

source


# CompositionalNetworks.excluMethod.
julia
exclu(layer)

Return true if the layer has mutually exclusive operations.

source


# CompositionalNetworks.explore_learn_composeMethod.
julia
explore_learn_compose(concept; domains, param = nothing, search = :complete, global_iter = 10, local_iter = 100, metric = hamming, popSize = 200, action = :composition)

Explore a search space, learn a composition from an ICN, and compose an error function.

Arguments:

  • concept: the concept of the targeted constraint

  • domains: domains of the variables that define the training space

  • param: an optional parameter of the constraint

  • search: either flexible,:partial or :complete search. Flexible search will use search_limit and solutions_limit to determine if the search space needs to be partially or completely explored

  • global_iter: number of learning iteration

  • local_iter: number of generation in the genetic algorithm

  • metric: the metric to measure the distance between a configuration and known solutions

  • popSize: size of the population in the genetic algorithm

  • action: either :symbols to have a description of the composition or :composition to have the composed function itself

source


# CompositionalNetworks.functionsMethod.
julia
functions(layer)

Access the operations of a layer. The container is ordered.

source


# CompositionalNetworks.generateMethod.
julia
generate(c::Composition, name, lang)

Generates the code of c in a specific language lang.

source


# CompositionalNetworks.generate_inclusive_operationsMethod.
julia
generate_inclusive_operations(predicate, bits)
 generate_exclusive_operation(max_op_number)

Generates the operations (weigths) of a layer with inclusive/exclusive operations.

source


# CompositionalNetworks.generate_weigthsMethod.
julia
generate_weigths(layers)
 generate_weigths(icn)

Generate the weigths of a collection of layers or of an ICN.

source


# CompositionalNetworks.hammingMethod.
julia
hamming(x, X)

Compute the hamming distance of x over a collection of solutions X, i.e. the minimal number of variables to switch in xto reach a solution.

source


# CompositionalNetworks.is_viableMethod.
julia
is_viable(layer, w)
 is_viable(icn)
@@ -60,8 +60,8 @@
 tr_param_minus_val(x; param)
 tr_param_minus_val(x, X::AbstractVector; param)

Return the difference param - x[i] if positive, 0.0 otherwise. Extended method to vector with sig (x, param) are generated. When X is provided, the result is computed without allocations.

source


# CompositionalNetworks.tr_val_minus_paramMethod.
julia
tr_val_minus_param(i, x; param)
 tr_val_minus_param(x; param)
-tr_val_minus_param(x, X::AbstractVector; param)

Return the difference x[i] - param if positive, 0.0 otherwise. Extended method to vector with sig (x, param) are generated. When X is provided, the result is computed without allocations.

source


# CompositionalNetworks.transformation_layerFunction.
julia
transformation_layer(param = false)

Generate the layer of transformations functions of the ICN. Iff param value is true, also includes all the parametric transformations.

source


# CompositionalNetworks.weigths!Method.
julia
weigths!(icn, weigths)

Set the weigths of an ICN with a BitVector.

source


# CompositionalNetworks.weigthsMethod.
julia
weigths(icn)

Access the current set of weigths of an ICN.

source


# CompositionalNetworks.weigths_biasMethod.
julia
weigths_bias(x)

A metric that bias x towards operations with a lower bit. Do not affect the main metric.

source


- +tr_val_minus_param(x, X::AbstractVector; param)

Return the difference x[i] - param if positive, 0.0 otherwise. Extended method to vector with sig (x, param) are generated. When X is provided, the result is computed without allocations.

source


# CompositionalNetworks.transformation_layerFunction.
julia
transformation_layer(param = false)

Generate the layer of transformations functions of the ICN. Iff param value is true, also includes all the parametric transformations.

source


# CompositionalNetworks.weigths!Method.
julia
weigths!(icn, weigths)

Set the weigths of an ICN with a BitVector.

source


# CompositionalNetworks.weigthsMethod.
julia
weigths(icn)

Access the current set of weigths of an ICN.

source


# CompositionalNetworks.weigths_biasMethod.
julia
weigths_bias(x)

A metric that bias x towards operations with a lower bit. Do not affect the main metric.

source


+ \ No newline at end of file diff --git a/dev/learning/constraint_learning.html b/dev/learning/constraint_learning.html new file mode 100644 index 0000000..8f3d197 --- /dev/null +++ b/dev/learning/constraint_learning.html @@ -0,0 +1,24 @@ + + + + + + ConstraintLearning.jl | Julia Constraints + + + + + + + + + + + + + +
Skip to content

ConstraintLearning.jl

Documentation for ConstraintLearning.jl.

# ConstraintLearning.ICNConfigType.
julia
struct ICNConfig{O <: ICNOptimizer}

A structure to hold the metric and optimizer configurations used in learning the weigths of an ICN.

source


# ConstraintLearning.ICNConfigMethod.
julia
ICNConfig(; metric = :hamming, optimizer = ICNGeneticOptimizer())

Constructor for ICNConfig. Defaults to hamming metric using a genetic algorithm.

source


# ConstraintLearning.ICNGeneticOptimizerMethod.
julia
ICNGeneticOptimizer(; kargs...)

Default constructor to learn an ICN through a Genetic Algorithm. Default kargs TBW.

source


# ConstraintLearning.ICNLocalSearchOptimizerType.
julia
ICNLocalSearchOptimizer(options = LocalSearchSolvers.Options())

Default constructor to learn an ICN through a CBLS solver.

source


# ConstraintLearning.ICNOptimizerType.
julia
const ICNOptimizer = CompositionalNetworks.AbstractOptimizer

An abstract type for optmizers defined to learn ICNs.

source


# ConstraintLearning.QUBOGradientOptimizerMethod.
julia
QUBOGradientOptimizer(; kargs...)

A QUBO optimizer based on gradient descent. Defaults TBW

source


# ConstraintLearning.QUBOOptimizerType.
julia
const QUBOOptimizer = QUBOConstraints.AbstractOptimizer

An abstract type for optimizers used to learn QUBO matrices from constraints.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNGeneticOptimizer; parameters...)

Extends the optimize! method to ICNGeneticOptimizer.

source


# CompositionalNetworks.optimize!Method.
julia
CompositionalNetworks.optimize!(icn, solutions, non_sltns, dom_size, metric, optimizer::ICNLocalSearchOptimizer; parameters...)

Extends the optimize! method to ICNLocalSearchOptimizer.

source


# ConstraintLearning._optimize!Method.
julia
_optimize!(icn, X, X_sols; metric = hamming, pop_size = 200)

Optimize and set the weigths of an ICN with a given set of configuration X and solutions X_sols.

source


# ConstraintLearning.domain_sizeMethod.
julia
domain_size(ds::Number)

Extends the domain_size function when ds is number (for dispatch purposes).

source


# ConstraintLearning.generate_populationMethod.
julia
generate_population(icn, pop_size

Generate a pôpulation of weigths (individuals) for the genetic algorithm weigthing icn.

source


# ConstraintLearning.icnMethod.
julia
icn(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.lossMethod.
julia
loss(x, y, Q)

Loss of the prediction given by Q, a training set y, and a given configuration x.

source


# ConstraintLearning.make_dfMethod.
julia
make_df(X, Q, penalty, binarization, domains)

DataFrame arrangement to ouput some basic evaluation of a matrix Q.

source


# ConstraintLearning.make_set_penaltyMethod.
julia
make_set_penalty(X, X̅, args...; kargs)

Return a penalty function when the training set is already split into a pair of solutions X and non solutions .

source


# ConstraintLearning.make_training_setsMethod.
julia
make_training_sets(X, penalty, args...)

Return a pair of solutions and non solutions sets based on X and penalty.

source


# ConstraintLearning.mutually_exclusiveMethod.
julia
mutually_exclusive(layer, w)

Constraint ensuring that w encode exclusive operations in layer.

source


# ConstraintLearning.no_empty_layerMethod.
julia
no_empty_layer(x; X = nothing)

Constraint ensuring that at least one operation is selected.

source


# ConstraintLearning.optimize!Method.
julia
optimize!(icn, X, X_sols, global_iter, local_iter; metric=hamming, popSize=100)

Optimize and set the weigths of an ICN with a given set of configuration X and solutions X_sols. The best weigths among global_iter will be set.

source


# ConstraintLearning.parameter_specific_operationsMethod.
julia
parameter_specific_operations(x; X = nothing)

Constraint ensuring that at least one operation related to parameters is selected if the error function to be learned is parametric.

source


# ConstraintLearning.predictMethod.
julia
predict(x, Q)

Return the predictions given by Q for a given configuration x.

source


# ConstraintLearning.preliminariesMethod.
julia
preliminaries(args)

Preliminaries to the training process in a QUBOGradientOptimizer run.

source


# ConstraintLearning.quboFunction.
julia
qubo(X,X̅; kargs..., parameters...)

TBW

source


# ConstraintLearning.sub_eltypeMethod.
julia
sub_eltype(X)

Return the element type of of the first element of a collection.

source


# ConstraintLearning.train!Method.
julia
train!(Q, X, penalty, η, precision, X_test, oversampling, binarization, domains)

Training inner method.

source


# ConstraintLearning.trainMethod.
julia
train(X, penalty[, d]; optimizer = QUBOGradientOptimizer(), X_test = X)

Learn a QUBO matrix on training set X for a constraint defined by penalty with optional domain information d. By default, it uses a QUBOGradientOptimizer and X as a testing set.

source


# ConstraintLearning.δMethod.
julia
δ(X[, Y]; discrete = true)

Compute the extrema over a collection X``or a pair of collection(X, Y)`.

source


+ + + + \ No newline at end of file diff --git a/dev/learning/qubo_constraints.html b/dev/learning/qubo_constraints.html new file mode 100644 index 0000000..73a8f28 --- /dev/null +++ b/dev/learning/qubo_constraints.html @@ -0,0 +1,24 @@ + + + + + + QUBOConstraints.jl | Julia Constraints + + + + + + + + + + + + + +
Skip to content

QUBOConstraints.jl

Documentation for QUBOConstraints.jl.

# QUBOConstraints.AbstractOptimizerType.
julia
AbstractOptimizer

An abstract type (interface) used to learn QUBO matrices from constraints. Only a train method is required.

source


# QUBOConstraints.QUBO_baseFunction.
julia
QUBO_base(n, weight = 1)

A basic QUBO matrix to ensure that binarized variables keep a valid encoding.

source


# QUBOConstraints.QUBO_linear_sumMethod.
julia
QUBO_linear_sum(n, σ)

One valid QUBO matrix given n variables and parameter σ for the linear sum constraint.

source


# QUBOConstraints.binarizeMethod.
julia
binarize(x[, domain]; binarization = :one_hot)

Binarize x following the binarization encoding. If x is a vector (instead of a number per say), domain is optional.

source


# QUBOConstraints.debinarizeMethod.
julia
debinarize(x[, domain]; binarization = :one_hot)

Transform a binary vector into a number or a set of number. If domain is not given, it will compute a default value based on binarization and x.

source


# QUBOConstraints.is_validFunction.
julia
is_valid(x, encoding::Symbol = :none)

Check if x has a valid format for encoding.

For instance, if encoding == :one_hot, at most one bit of x can be set to 1.

source


# QUBOConstraints.trainMethod.
julia
train(args...)

Default train method for any AbstractOptimizer.

source


+ + + + \ No newline at end of file diff --git a/dev/meta/meta_strategist.html b/dev/meta/meta_strategist.html new file mode 100644 index 0000000..4be02ad --- /dev/null +++ b/dev/meta/meta_strategist.html @@ -0,0 +1,24 @@ + + + + + + MetaStrategist.jl | Julia Constraints + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dev/meta_strategist.html b/dev/meta_strategist.html deleted file mode 100644 index 7d2b51e..0000000 --- a/dev/meta_strategist.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - MetaStrategist.jl | Julia Constraints - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dev/perf/benchmark_ext.html b/dev/perf/benchmark_ext.html new file mode 100644 index 0000000..f6ba3fc --- /dev/null +++ b/dev/perf/benchmark_ext.html @@ -0,0 +1,24 @@ + + + + + + BenchmarkTools Extension | Julia Constraints + + + + + + + + + + + + + +
Skip to content

BenchmarkTools Extension

A benchmarking extension, based on BenchmarkTools.jl, has been interfaced with PerfChecker.jl. This section (will) provides some usage examples, documentation, and links to related notebooks.

+ + + + \ No newline at end of file diff --git a/dev/perf/perf_checker.html b/dev/perf/perf_checker.html new file mode 100644 index 0000000..01605b5 --- /dev/null +++ b/dev/perf/perf_checker.html @@ -0,0 +1,24 @@ + + + + + + PerfChecker.jl | Julia Constraints + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dev/perf/perf_interface.html b/dev/perf/perf_interface.html new file mode 100644 index 0000000..1a6ff8f --- /dev/null +++ b/dev/perf/perf_interface.html @@ -0,0 +1,24 @@ + + + + + + Interfacing PerfChecker | Julia Constraints + + + + + + + + + + + + + +
Skip to content

Interfacing PerfChecker

PerfChecker was build as an easy to extend interface. This section will cover the few method required.

+ + + + \ No newline at end of file diff --git a/dev/perf_checker.html b/dev/perf_checker.html deleted file mode 100644 index ca2156d..0000000 --- a/dev/perf_checker.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - PerfChecker.jl | Julia Constraints - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dev/perf_interface.html b/dev/perf_interface.html deleted file mode 100644 index 43932ec..0000000 --- a/dev/perf_interface.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Interfacing PerfChecker | Julia Constraints - - - - - - - - - - - - - -
Skip to content

Interfacing PerfChecker

PerfChecker was build as an easy to extend interface. This section will cover the few method required.

- - - - \ No newline at end of file diff --git a/dev/qubo_constraints.html b/dev/qubo_constraints.html deleted file mode 100644 index 281df5e..0000000 --- a/dev/qubo_constraints.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - QUBOConstraints.jl | Julia Constraints - - - - - - - - - - - - - -
Skip to content

QUBOConstraints.jl

Documentation for QUBOConstraints.jl.

# QUBOConstraints.AbstractOptimizerType.
julia
AbstractOptimizer

An abstract type (interface) used to learn QUBO matrices from constraints. Only a train method is required.

source


# QUBOConstraints.QUBO_baseFunction.
julia
QUBO_base(n, weight = 1)

A basic QUBO matrix to ensure that binarized variables keep a valid encoding.

source


# QUBOConstraints.QUBO_linear_sumMethod.
julia
QUBO_linear_sum(n, σ)

One valid QUBO matrix given n variables and parameter σ for the linear sum constraint.

source


# QUBOConstraints.binarizeMethod.
julia
binarize(x[, domain]; binarization = :one_hot)

Binarize x following the binarization encoding. If x is a vector (instead of a number per say), domain is optional.

source


# QUBOConstraints.debinarizeMethod.
julia
debinarize(x[, domain]; binarization = :one_hot)

Transform a binary vector into a number or a set of number. If domain is not given, it will compute a default value based on binarization and x.

source


# QUBOConstraints.is_validFunction.
julia
is_valid(x, encoding::Symbol = :none)

Check if x has a valid format for encoding.

For instance, if encoding == :one_hot, at most one bit of x can be set to 1.

source


# QUBOConstraints.trainMethod.
julia
train(args...)

Default train method for any AbstractOptimizer.

source


- - - - \ No newline at end of file diff --git a/dev/solvers/cbls.html b/dev/solvers/cbls.html new file mode 100644 index 0000000..1d3873a --- /dev/null +++ b/dev/solvers/cbls.html @@ -0,0 +1,29 @@ + + + + + + CBLS.jl | Julia Constraints + + + + + + + + + + + + + +
Skip to content

CBLS.jl

Documentation for CBLS.jl.

# CBLS.AllDifferentType.

Global constraint ensuring that all the values of a given configuration are unique.

julia
@constraint(model, X in AllDifferent())

source


# CBLS.AllEqualType.

Global constraint ensuring that all the values of X are all equal.

julia
@constraint(model, X in AllEqual())

source


# CBLS.AllEqualParamType.

Global constraint ensuring that all the values of X are all equal to a given parameter param.

julia
@constraint(model, X in AllEqualParam(param))

source


# CBLS.AlwaysTrueType.

Always return true. Mainly used for testing purpose.

julia
@constraint(model, X in AlwaysTrue())

source


# CBLS.DiscreteSetType.
julia
DiscreteSet(values)

source


# CBLS.DistDifferentType.

Local constraint ensuring that, given a vector X of size 4, |X[1] - X[2]| ≠ |X[3] - X[4]|).

julia
@constraint(model, X in DistDifferent())

source


# CBLS.EqType.

Equality between two variables.

julia
@constraint(model, X in Eq())

source


# CBLS.ErrorType.
julia
Error{F <: Function} <: JuMP.AbstractVectorSet

The solver will compute a straightforward error function based on the concept. To run the solver efficiently, it is possible to provide an error function err instead of concept. err must return a nonnegative real number.

julia
@constraint(model, X in Error(err))

source


# CBLS.LessThanParamType.

Constraint ensuring that the value of x is less than a given parameter param.

julia
@constraint(model, x in LessThanParam(param))

source


# CBLS.MOIAllDifferentType.
julia
MOIAllDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIAllEqualType.
julia
MOIAllEqual <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIAllEqualParamType.
julia
MOIAllEqualParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • param::T: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIAllEqualParam(param, dim = 0) = begin #= none:5 =# new{typeof(param)}(param, dim) end: DESCRIPTION

source


# CBLS.MOIAlwaysTrueType.
julia
MOIAlwaysTrue <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIDistDifferentType.
julia
MOIDistDifferent <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIEqType.
julia
MOIEq <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIErrorType.
julia
MOIError{F <: Function} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • f::F: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIError(f, dim = 0) = begin #= none:5 =# new{typeof(f)}(f, dim) end: DESCRIPTION

source


# CBLS.MOILessThanParamType.
julia
MOILessThanParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • param::T: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOILessThanParam(param, dim = 0) = begin #= none:5 =# new{typeof(param)}(param, dim) end: DESCRIPTION

source


# CBLS.MOIMinusEqualParamType.
julia
MOIMinusEqualParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • param::T: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIMinusEqualParam(param, dim = 0) = begin #= none:5 =# new{typeof(param)}(param, dim) end: DESCRIPTION

source


# CBLS.MOIOrderedType.
julia
MOIOrdered <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOIPredicateType.
julia
MOIPredicate{F <: Function} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • f::F: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOIPredicate(f, dim = 0) = begin #= none:5 =# new{typeof(f)}(f, dim) end: DESCRIPTION

source


# CBLS.MOISequentialTasksType.
julia
MOISequentialTasks <: MOI.AbstractVectorSet

DOCSTRING

source


# CBLS.MOISumEqualParamType.
julia
MOISumEqualParam{T <: Number} <: MOI.AbstractVectorSet

DOCSTRING

Arguments:

  • param::T: DESCRIPTION

  • dimension::Int: DESCRIPTION

  • MOISumEqualParam(param, dim = 0) = begin #= none:5 =# new{typeof(param)}(param, dim) end: DESCRIPTION

source


# CBLS.MinusEqualParamType.

Constraint ensuring that the value of x is less than a given parameter param.

julia
@constraint(model, x in MinusEqualParam(param))

source


# CBLS.OptimizerType.
julia
Optimizer(model = Model(); options = Options())

DOCSTRING

source


# CBLS.OptimizerType.
julia
Optimizer <: MOI.AbstractOptimizer

DOCSTRING

Arguments:

  • solver::Solver: DESCRIPTION

  • status::MOI.TerminationStatusCode: DESCRIPTION

  • options::Options: DESCRIPTION

source


# CBLS.OrderedType.

Global constraint ensuring that all the values of x are ordered.

julia
@constraint(model, X in Ordered())

source


# CBLS.PredicateType.
julia
Predicate{F <: Function} <: JuMP.AbstractVectorSet

Assuming X is a (collection of) variables, concept a boolean function over X, and that a model is defined. In JuMP syntax we can create a constraint based on concept as follows.

julia
@constraint(model, X in Predicate(concept))

source


# CBLS.ScalarFunctionType.
julia
ScalarFunction{F <: Function, V <: Union{Nothing, VOV}} <: MOI.AbstractScalarFunction

A container to express any function with real value in JuMP syntax. Used with the @objective macro.

Arguments:

  • f::F: function to be applied to X

  • X::V: a subset of the variables of the model.

Given a model, and some (collection of) variables X to optimize. an objective function f can be added as follows. Note that only Min for minimization us currently defined. Max will come soon.

julia
# Applies to all variables in order of insertion.
+# Recommended only when the function argument order does not matter.
+@objective(model, ScalarFunction(f))
+
+# Generic use
+@objective(model, ScalarFunction(f, X))

source


# CBLS.SequentialTasksType.

Local constraint ensuring that, given a vector X of size 4, |X[1] - X[2]| ≠ |X[3] - X[4]|).

julia
@constraint(model, X in SequentialTasks())

source


# CBLS.SumEqualParamType.

Global constraint ensuring that the sum of the values of X is equal to a given parameter param.

julia
@constraint(model, X in SumEqualParam(param))

source


# Base.copyMethod.
julia
Base.copy(set::MOIError) = begin

DOCSTRING

source


# Base.copyMethod.
julia
Base.copy(set::DiscreteSet) = begin

DOCSTRING

source


# JuMP.build_variableMethod.
julia
JuMP.build_variable(::Function, info::JuMP.VariableInfo, set::T) where T <: MOI.AbstractScalarSet

DOCSTRING

Arguments:

  • ``: DESCRIPTION

  • info: DESCRIPTION

  • set: DESCRIPTION

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, vars::MOI.VectorOfVariables, set::MOIError)

DOCSTRING

Arguments:

  • optimizer: DESCRIPTION

  • vars: DESCRIPTION

  • set: DESCRIPTION

source


# MathOptInterface.add_constraintMethod.
julia
MOI.add_constraint(optimizer::Optimizer, v::VI, set::DiscreteSet{T}) where T <: Number

DOCSTRING

Arguments:

  • optimizer: DESCRIPTION

  • v: DESCRIPTION

  • set: DESCRIPTION

source


# MathOptInterface.add_variableMethod.
julia
MOI.add_variable(model::Optimizer) = begin

DOCSTRING

source


# MathOptInterface.empty!Method.
julia
MOI.empty!(opt) = begin

DOCSTRING

source


# MathOptInterface.getMethod.
julia
MOI.get(::Optimizer, ::MOI.SolverName) = begin

DOCSTRING

source


# MathOptInterface.is_emptyMethod.
julia
MOI.is_empty(model::Optimizer) = begin

DOCSTRING

source


# MathOptInterface.optimize!Method.
julia
MOI.optimize!(model::Optimizer)

source


# MathOptInterface.setFunction.
julia
MOI.set(::Optimizer, ::MOI.Silent, bool = true) = begin

DOCSTRING

Arguments:

  • ``: DESCRIPTION

  • ``: DESCRIPTION

  • bool: DESCRIPTION

source


# MathOptInterface.setMethod.
julia
MOI.set(model::Optimizer, p::MOI.RawOptimizerAttribute, value)

Set a RawOptimizerAttribute to value

source


# MathOptInterface.setMethod.
julia
MOI.set(model::Optimizer, ::MOI.TimeLimitSec, value::Union{Nothing,Float64})

Set the time limit

source


# MathOptInterface.supports_constraintMethod.
julia
MOI.supports_constraint(::Optimizer, ::Type{VOV}, ::Type{MOIError}) = begin

DOCSTRING

Arguments:

  • ``: DESCRIPTION

  • ``: DESCRIPTION

  • ``: DESCRIPTION

source


# MathOptInterface.supports_incremental_interfaceMethod.

Copy constructor for the optimizer

source


+ + + + \ No newline at end of file diff --git a/dev/local_search_solvers.html b/dev/solvers/local_search_solvers.html similarity index 83% rename from dev/local_search_solvers.html rename to dev/solvers/local_search_solvers.html index 08ac550..64105d6 100644 --- a/dev/local_search_solvers.html +++ b/dev/solvers/local_search_solvers.html @@ -8,16 +8,16 @@ - + - - + + -
Skip to content

LocalSearchSolvers.jl

Documentation for LocalSearchSolvers.jl.

# LocalSearchSolvers.AbstractSolverType.
julia
AbstractSolver

Abstract type to encapsulate the different solver types such as Solver or _SubSolver.

source


# LocalSearchSolvers.ConstraintType.
julia
Constraint{F <: Function}

Structure to store an error function and the variables it constrains.

source


# LocalSearchSolvers.LeadSolverType.
julia
LeadSolver <: MetaSolver

Solver managed remotely by a MainSolver. Can manage its own set of local sub solvers.

source


# LocalSearchSolvers.MainSolverType.
julia
MainSolver <: AbstractSolver

Main solver. Handle the solving of a model, and optional multithreaded and/or distributed subsolvers.

Arguments:

  • model::Model: A formal description of the targeted problem

  • state::_State: An internal state to store the info necessary to a solving run

  • options::Options: User options for this solver

  • subs::Vector{_SubSolver}: Optional subsolvers

source


# LocalSearchSolvers.MetaSolverType.

Abstract type to encapsulate all solver types that manages other solvers.

source


# LocalSearchSolvers.ObjectiveType.
julia
Objective{F <: Function}

A structure to handle objectives in a solver. `struct Objective{F <: Function} name::String f::F end``

source


# LocalSearchSolvers.ObjectiveMethod.
julia
Objective(F, o::Objective{F2}) where {F2 <: Function}

Constructor used in specializing a solver. Should never be called externally.

source


# LocalSearchSolvers.OptionsType.
julia
Options()

Arguments:

  • dynamic::Bool: is the model dynamic?

  • iteration::Union{Int, Float64}: limit on the number of iterations

  • print_level::Symbol: verbosity to choose among :silent, :minimal, :partial, :verbose

  • solutions::Int: number of solutions to return

  • specialize::Bool: should the types of the model be specialized or not. Usually yes for static problems. For dynamic in depends if the user intend to introduce new types. The specialized model is about 10% faster.

  • tabu_time::Int: DESCRIPTION

  • tabu_local::Int: DESCRIPTION

  • tabu_delta::Float64: DESCRIPTION

  • threads::Int: Number of threads to use

  • time_limit::Float64: time limit in seconds

  • `function Options(; dynamic = false, iteration = 10000, print_level = :minimal, solutions = 1, specialize = !dynamic, tabu_time = 0, tabu_local = 0, tabu_delta = 0.0, threads = typemax(0), time_limit = Inf)

julia
# Setting options in JuMP syntax: print_level, time_limit, iteration
+    
Skip to content

LocalSearchSolvers.jl

Documentation for LocalSearchSolvers.jl.

# LocalSearchSolvers.AbstractSolverType.
julia
AbstractSolver

Abstract type to encapsulate the different solver types such as Solver or _SubSolver.

source


# LocalSearchSolvers.ConstraintType.
julia
Constraint{F <: Function}

Structure to store an error function and the variables it constrains.

source


# LocalSearchSolvers.LeadSolverType.
julia
LeadSolver <: MetaSolver

Solver managed remotely by a MainSolver. Can manage its own set of local sub solvers.

source


# LocalSearchSolvers.MainSolverType.
julia
MainSolver <: AbstractSolver

Main solver. Handle the solving of a model, and optional multithreaded and/or distributed subsolvers.

Arguments:

  • model::Model: A formal description of the targeted problem

  • state::_State: An internal state to store the info necessary to a solving run

  • options::Options: User options for this solver

  • subs::Vector{_SubSolver}: Optional subsolvers

source


# LocalSearchSolvers.MetaSolverType.

Abstract type to encapsulate all solver types that manages other solvers.

source


# LocalSearchSolvers.ObjectiveType.
julia
Objective{F <: Function}

A structure to handle objectives in a solver. `struct Objective{F <: Function} name::String f::F end``

source


# LocalSearchSolvers.ObjectiveMethod.
julia
Objective(F, o::Objective{F2}) where {F2 <: Function}

Constructor used in specializing a solver. Should never be called externally.

source


# LocalSearchSolvers.OptionsType.
julia
Options()

Arguments:

  • dynamic::Bool: is the model dynamic?

  • iteration::Union{Int, Float64}: limit on the number of iterations

  • print_level::Symbol: verbosity to choose among :silent, :minimal, :partial, :verbose

  • solutions::Int: number of solutions to return

  • specialize::Bool: should the types of the model be specialized or not. Usually yes for static problems. For dynamic in depends if the user intend to introduce new types. The specialized model is about 10% faster.

  • tabu_time::Int: DESCRIPTION

  • tabu_local::Int: DESCRIPTION

  • tabu_delta::Float64: DESCRIPTION

  • threads::Int: Number of threads to use

  • time_limit::Float64: time limit in seconds

  • `function Options(; dynamic = false, iteration = 10000, print_level = :minimal, solutions = 1, specialize = !dynamic, tabu_time = 0, tabu_local = 0, tabu_delta = 0.0, threads = typemax(0), time_limit = Inf)

julia
# Setting options in JuMP syntax: print_level, time_limit, iteration
 model = Model(CBLS.Optimizer)
 set_optimizer_attribute(model, "iteration", 100)
 set_optimizer_attribute(model, "print_level", :verbose)
@@ -52,8 +52,8 @@
 add!(m::M, o) where M <: Union{Model, AbstractSolver}

Add a variable x, a constraint c, or an objective o to m.

source


# LocalSearchSolvers.add_value!Method.
julia
add_value!(m::M, x, val) where M <: Union{Model, AbstractSolver}

Add val to x domain.

source


# LocalSearchSolvers.add_var_to_cons!Method.
julia
add_var_to_cons!(m::M, c, x) where M <: Union{Model, AbstractSolver}

Add x to the constraint c list of restricted variables.

source


# LocalSearchSolvers.constraint!Method.
julia
constraint!(m::M, func, vars) where M <: Union{Model, AbstractSolver}

Add a constraint with an error function func defined over variables vars.

source


# LocalSearchSolvers.constraintMethod.
julia
constraint(f, vars)

DOCSTRING

source


# LocalSearchSolvers.constrictionMethod.
julia
constriction(m::M, x) where M <: Union{Model, AbstractSolver}

Return the constriction of variable x.

source


# LocalSearchSolvers.decay_tabu!Method.
julia
_decay_tabu!(s::S) where S <: Union{_State, AbstractSolver}

Decay the tabu list.

source


# LocalSearchSolvers.decrease_tabu!Method.
julia
_decrease_tabu!(s::S, x) where S <: Union{_State, AbstractSolver}

Decrement the tabu value of variable x.

source


# LocalSearchSolvers.delete_tabu!Method.
julia
_delete_tabu!(s::S, x) where S <: Union{_State, AbstractSolver}

Delete the tabu entry of variable x.

source


# LocalSearchSolvers.delete_value!Method.
julia
delete_value(m::M, x, val) where M <: Union{Model, AbstractSolver}

Delete val from x domain.

source


# LocalSearchSolvers.delete_var_from_cons!Method.
julia
delete_var_from_cons(m::M, c, x) where M <: Union{Model, AbstractSolver}

Delete x from the constraint c list of restricted variables.

source


# LocalSearchSolvers.describeMethod.
julia
describe(m::M) where M <: Union{Model, AbstractSolver}

Describe the model.

source


# LocalSearchSolvers.domain_sizeMethod.
julia
domain_size(m::Model, x) = begin

DOCSTRING

source


# LocalSearchSolvers.drawMethod.
julia
draw(m::M, x) where M <: Union{Model, AbstractSolver}

Draw a random value of x domain.

source


# LocalSearchSolvers.empty_tabu!Method.
julia
_empty_tabu!(s::S) where S <: Union{_State, AbstractSolver}

Empty the tabu list.

source


# LocalSearchSolvers.get_cons_from_varMethod.
julia
get_cons_from_var(m::M, x) where M <: Union{Model, AbstractSolver}

Access the constraints restricting variable x.

source


# LocalSearchSolvers.get_constraintMethod.
julia
get_constraint(m::M, c) where M <: Union{Model, AbstractSolver}

Access the constraint c.

source


# LocalSearchSolvers.get_constraintsMethod.
julia
get_constraints(m::M) where M <: Union{Model, AbstractSolver}

Access the constraints of m.

source


# LocalSearchSolvers.get_domainMethod.
julia
get_domain(m::M, x) where M <: Union{Model, AbstractSolver}

Access the domain of variable x.

source


# LocalSearchSolvers.get_kindMethod.
julia
get_kind(m::M) where M <: Union{Model, AbstractSolver}

Access the kind of m, such as :sudoku or :generic (default).

source


# LocalSearchSolvers.get_nameMethod.
julia
get_name(m::M, x) where M <: Union{Model, AbstractSolver}

Access the name of variable x.

source


# LocalSearchSolvers.get_objectiveMethod.
julia
get_objective(m::M, o) where M <: Union{Model, AbstractSolver}

Access the objective o.

source


# LocalSearchSolvers.get_objectivesMethod.
julia
get_objectives(m::M) where M <: Union{Model, AbstractSolver}

Access the objectives of m.

source


# LocalSearchSolvers.get_time_stampMethod.
julia
get_time_stamp(m::M) where M <: Union{Model, AbstractSolver}

Access the time (since epoch) when the model was created. This time stamp is for internal performance measurement.

source


# LocalSearchSolvers.get_variableMethod.
julia
get_variable(m::M, x) where M <: Union{Model, AbstractSolver}

Access the variable x.

source


# LocalSearchSolvers.get_variablesMethod.
julia
get_variables(m::M) where M <: Union{Model, AbstractSolver}

Access the variables of m.

source


# LocalSearchSolvers.get_vars_from_consMethod.
julia
get_vars_from_cons(m::M, c) where M <: Union{Model, AbstractSolver}

Access the variables restricted by constraint c.

source


# LocalSearchSolvers.insert_tabu!Method.
julia
_insert_tabu!(s::S, x, tabu_time) where S <: Union{_State, AbstractSolver}

Insert the bariable x as tabu for tabu_time.

source


# LocalSearchSolvers.is_satMethod.
julia
is_sat(m::M) where M <: Union{Model, AbstractSolver}

Return true if m is a satisfaction model.

source


# LocalSearchSolvers.is_specializedMethod.
julia
is_specialized(m::M) where M <: Union{Model, AbstractSolver}

Return true if the model is already specialized.

source


# LocalSearchSolvers.length_consMethod.
julia
length_cons(m::M, c) where M <: Union{Model, AbstractSolver}

Return the length of constraint c.

source


# LocalSearchSolvers.length_consMethod.
julia
length_cons(m::M) where M <: Union{Model, AbstractSolver}

Return the number of constraints in m.

source


# LocalSearchSolvers.length_objsMethod.
julia
length_objs(m::M) where M <: Union{Model, AbstractSolver}

Return the number of objectives in m.

source


# LocalSearchSolvers.length_tabuMethod.
julia
_length_tabu!(s::S) where S <: Union{_State, AbstractSolver}

Return the length of the tabu list.

source


# LocalSearchSolvers.length_varMethod.
julia
length_var(m::M, x) where M <: Union{Model, AbstractSolver}

Return the domain length of variable x.

source


# LocalSearchSolvers.length_varsMethod.
julia
length_vars(m::M) where M <: Union{Model, AbstractSolver}

Return the number of variables in m.

source


# LocalSearchSolvers.max_domains_sizeMethod.
julia
max_domains_size(m::Model, vars) = begin

DOCSTRING

source


# LocalSearchSolvers.modelMethod.
julia
model()

Construct a _Model, empty by default. It is recommended to add the constraints, variables, and objectives from an empty _Model. The following keyword arguments are available,

  • vars=Dictionary{Int,Variable}(): collection of variables

  • cons=Dictionary{Int,Constraint}(): collection of cosntraints

  • objs=Dictionary{Int,Objective}(): collection of objectives

  • kind=:generic: the kind of problem modeled (useful for specialized methods such as pretty printing)

source


# LocalSearchSolvers.o_dist_extremaMethod.
julia
dist_extrema(values::T...) where {T <: Number}

Computes the distance between extrema in an ordered set.

source


# LocalSearchSolvers.o_mincutMethod.
julia
o_mincut(graph, values; interdiction = 0)

Compute the capacity of a cut (determined by the state of the solver) with a possible interdiction on the highest capacited links.

source


# LocalSearchSolvers.objective!Method.
julia
objective!(m::M, func) where M <: Union{Model, AbstractSolver}

Add an objective evaluated by func.

source


# LocalSearchSolvers.objectiveMethod.
julia
objective(func, name)

Construct an objective with a function func that should be applied to a collection of variables.

source


# LocalSearchSolvers.post_processMethod.
julia
post_process(s::MainSolver)

Launch a serie of tasks to round-up a solving run, for instance, export a run's info.

source


# LocalSearchSolvers.remote_dispatch!Method.
julia
remote_dispatch!(solver)

Starts the LeadSolvers attached to the MainSolver.

source


# LocalSearchSolvers.remote_stop!Method.
julia
remote_stop!!(solver)

Fetch the pool of solutions from LeadSolvers and merge it into the MainSolver.

source


# LocalSearchSolvers.solutionMethod.
julia
solution(s)

Return the only/best known solution of a satisfaction/optimization model.

source


# LocalSearchSolvers.solve_for_loop!Method.
julia
solve_for_loop!(solver, stop, sat, iter)

First loop in the solving process that starts LeadSolvers from the MainSolver, and _SubSolvers from each MetaSolver.

source


# LocalSearchSolvers.solve_while_loop!Method.
julia
solve_while_loop!(s, )

Search the space of configurations.

source


# LocalSearchSolvers.specialize!Method.
julia
specialize!(solver)

Replace the model of solver by one with specialized types (variables, constraints, objectives).

source


# LocalSearchSolvers.specializeMethod.
julia
specialize(m::M) where M <: Union{Model, AbstractSolver}

Specialize the structure of a model to avoid dynamic type attribution at runtime.

source


# LocalSearchSolvers.statusMethod.
julia
status(solver)

Return the status of a MainSolver.

source


# LocalSearchSolvers.stop_while_loopMethod.
julia
stop_while_loop()

Check the stop conditions of the solve! while inner loop.

source


# LocalSearchSolvers.tabu_listMethod.
julia
_tabu(s::S) where S <: Union{_State, AbstractSolver}

Access the list of tabu variables.

source


# LocalSearchSolvers.tabu_valueMethod.
julia
_tabu(s::S, x) where S <: Union{_State, AbstractSolver}

Return the tabu value of variable x.

source


# LocalSearchSolvers.variable!Function.
julia
variable!(m::M, d) where M <: Union{Model, AbstractSolver}

Add a variable with domain d to m.

source


# LocalSearchSolvers.variableMethod.
julia
variable(values::AbstractVector{T}, name::AbstractString; domain = :set) where T <: Number
 variable(domain::AbstractDomain, name::AbstractString) where D <: AbstractDomain

Construct a variable with discrete domain. See the domain method for other options.

julia
d = domain([1,2,3,4], types = :indices)
 x1 = variable(d, "x1")
-x2 = variable([-89,56,28], "x2", domain = :indices)

source


- +x2 = variable([-89,56,28], "x2", domain = :indices)

source


+ \ No newline at end of file