diff --git a/runtime/run.go b/runtime/run.go index e4bec9e..4acd5d1 100644 --- a/runtime/run.go +++ b/runtime/run.go @@ -58,7 +58,11 @@ func RunInstance(solver *settings.Solver, instance *settings.Instance) { if instance.Data != "" { args = append(args, "--data", instance.Data) } - args = append(args, strings.Split(viper.GetString("flags"), " ")...) + if solver.OverrideFlags != "" { + args = append(args, strings.Split(solver.OverrideFlags, " ")...) + } else { + args = append(args, strings.Split(viper.GetString("flags"), " ")...) + } proc := exec.Command(viper.GetString("mznfzn"), args...) if out, err := proc.CombinedOutput(); err != nil { diff --git a/settings/solver.go b/settings/solver.go index 5d0c4e3..165c261 100644 --- a/settings/solver.go +++ b/settings/solver.go @@ -4,10 +4,11 @@ import "github.com/spf13/viper" // Solver contains all information regarding a FlatZinc solver and its output type Solver struct { - Name string // Solver name - Binary string // Binary location - Globals string // Globals directory - Flags string // FZN solver flags + Name string // Solver name + Binary string // Binary location + Globals string // Globals directory + Flags string // FZN solver flags + OverrideFlags string // Override to global mzn-fzn flags Extractors *ExtractionCluster } @@ -20,9 +21,10 @@ func SolversFromViper() []Solver { options := viper.GetStringMapString("solvers." + key) solver := Solver{ - Name: key, - Flags: options["flags"], - Globals: options["globals"], + Name: key, + Flags: options["flags"], + Globals: options["globals"], + OverrideFlags: options["override_flags"], } if bin, exists := options["binary"]; exists { solver.Binary = bin