Skip to content

Commit

Permalink
Fix XCSP3 output for undefined variables (#423)
Browse files Browse the repository at this point in the history
  • Loading branch information
navaxel authored Jul 7, 2023
1 parent 299e6f4 commit 6577b1c
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/output.jl
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ using CSV, DataFrames
- `memory_limit::Union{Nothing, Int}`: the reversible representation of the table.
"""
function solve_XCSP3_instance(file_path::AbstractString, strategy::SearchStrategy=DFSearch(), time_limit::Union{Nothing, Int}=nothing, memory_limit::Union{Nothing, Int}=nothing, save_performance::Bool=false, save_path::AbstractString="", include_time::Float64=0.0)
function solve_XCSP3_instance(file_path::AbstractString; strategy::SearchStrategy=DFSearch(), time_limit::Union{Nothing, Int}=nothing, memory_limit::Union{Nothing, Int}=nothing, save_performance::Bool=false, save_path::AbstractString="", include_time::Float64=0.0)

solving_time = @elapsed begin

Expand Down Expand Up @@ -126,7 +126,7 @@ function print_solutions(model::SeaPearl.CPModel, dict_variables::Dict{String,An
print("v <list> ")
values = Int[]
for (id, var) in dict_variables
if isa(var, Vector) || isa(var, Matrix)
if isa(var, Vector) || isa(var, Matrix) || isa(var, Array)

print(id*"[]"^length(size(var)), " ")
for array_var in var
Expand Down
10 changes: 10 additions & 0 deletions src/parser/variables.jl
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,16 @@ function parse_array_variable(array_variable::Node, model::SeaPearl.CPModel, tra
end
end

# For variables not declared
for idx in CartesianIndices(seapearl_array_var)
if seapearl_array_var[idx].id == "default"
str_idx = "[" * join([string(idx[i] - 1) for i in 1:length(idx)], "][") * "]"
var = SeaPearl.IntVar(0, 0, id * str_idx, trailer)
SeaPearl.addVariable!(model, var)
seapearl_array_var[idx] = var
end
end

#Same domain for all variables
else
domain = parse_variable_domain(raw_domain)
Expand Down

0 comments on commit 6577b1c

Please sign in to comment.