2.1. Use Sparkle for algorithm configuration

These steps can also be found as a Bash script in Examples/configuration.sh

2.1.1. Initialise the Sparkle platform

sparkle initialise

2.1.2. Add instances

Add train, and optionally test, instances (in this case in CNF format) in a given directory, without running solvers or feature extractors yet

sparkle add_instances Examples/Resources/Instances/PTN/

sparkle add_instances Examples/Resources/Instances/PTN2/

2.1.3. Add a configurable solver

Add a configurable solver (here for SAT solving) with a wrapper containing the executable name of the solver and a string of command line parameters, without running the solver yet

The solver directory should contain the solver executable, the sparkle_smac_wrapper wrapper, and a .pcs file describing the configurable parameters

sparkle add_solver --deterministic 0 Examples/Resources/Solvers/PbO-CCSAT-Generic/

If needed solvers can also include additional files or scripts in their directory, but keeping additional files to a minimum speeds up copying.

2.1.4. Configure the solver

Perform configuration on the solver to obtain a target configuration

sparkle configure_solver --solver Solvers/PbO-CCSAT-Generic/ --instance-set-train Instances/PTN/

2.1.5. Validate the configuration

To make sure configuration is completed before running validation you can use the wait command

sparkle wait

Validate the performance of the best found parameter configuration. The test set is optional.

sparkle validate_configured_vs_default --solver Solvers/PbO-CCSAT-Generic/ --instance-set-train Instances/PTN/ --instance-set-test Instances/PTN2/

2.1.6. Generate a report

Wait for validation to be completed

sparkle wait

Generate a report detailing the results on the training (and optionally testing) set. This includes the experimental procedure and performance information; this will be located in a Configuration_Reports/ subdirectory for the solver, training set, and optionally test set like PbO-CCSAT-Generic_PTN/Sparkle-latex-generator-for-configuration/

sparkle generate_report

By default the generate_report command will create a report for the most recent solver and instance set(s). To generate a report for older solver-instance set combinations, the desired solver can be specified with --solver Solvers/PbO-CCSAT-Generic/, the training instance set with --instance-set-train Instances/PTN/, and the testing instance set with --instance-set-test Instances/PTN2/.

2.1.7. Run ablation to determine parameter importance based on default (from the .pcs file) and configured parameters

2.1.7.1. Run ablation

Run ablation using the training instances and validate the parameter importance with the test set

sparkle run_ablation --solver Solvers/PbO-CCSAT-Generic/ --instance-set-train Instances/PTN/ --instance-set-test Instances/PTN2/

2.1.7.2. Generate a report

Wait for ablation to be completed

sparkle wait

Generate a report including ablation, and as before the results on the train (and optionally test) set, the experimental procedure and performance information; this will be located in a Configuration_Reports/ subdirectory for the solver, training set, and optionally test set like PbO-CCSAT-Generic_PTN/Sparkle-latex-generator-for-configuration/

sparkle generate_report

The ablation section can be suppressed with --no-ablation

2.1.8. Immediate ablation and validation after configuration

By adding --ablation and/or --validate to the configure_solver command, ablation and respectively validation will run directly after the configuration is finished.

There is no need to execute run_ablation and/or validate_configured_vs_default when these flags are given with the configure_solver command

2.1.8.1. Training set only

sparkle configure_solver --solver Solvers/PbO-CCSAT-Generic/ --instance-set-train Instances/PTN/ --ablation --validate

2.1.8.2. Training and testing sets

Wait for the previous example to be completed

sparkle wait

sparkle configure_solver --solver Solvers/PbO-CCSAT-Generic/ --instance-set-train Instances/PTN/ --instance-set-test Instances/PTN2/ --ablation --validate

2.1.8.3. Run configured solver on a single instance

Now that we have a configured solver, we can run it on a single instance to get a result.

sparkle run_configured_solver Examples/Resources/Instances/PTN2/Ptn-7824-b20.cnf

2.1.9. Run configured solver on an instance directory

It is also possible to run a configured solver directly on an entire directory of instances in parallel.

sparkle run_configured_solver Examples/Resources/Instances/PTN2 --parallel