## Instructions

**Steps to use a specific solver on a specific problem:**

1. Download wrapper code SIMOPT.m.

2. For each solver with name `solvername` that you wish to execute, select, download, and unzip the file `solvername`.zip from the solver library.

3. For each SO problem with name `problemname` that you wish to solve, select, download, and unzip the file `problemname`.zip from the problems library.

4. Make any changes to the default parameters in the solver or the problem by directly editing the corresponding problem and solver .m files.

5. Execute the chosen solver on the chosen problem by simply calling the MATLAB function SIMOPT from the command line.

Syntax:

`SIMOPT(problemname, solvername, problemseed, solverseed, logfilename)`

Function `SIMOPT` calls algorithm `solvername` on the SO problem `problemname` using starting seeds `problemseed` and `solverseed`, respectively. `logfilename` indicates a file on the local machine to log information.

Example:

`SIMOPT('Buffer', 'RSPLINE', 2, 24, 'SIMOPT_log')`

The above call to `SIMOPT` executes R-SPLINE on the buffer allocation problem.

**FAQ:**

1. Can the downloaded solver files, problem files, and the wrapper code (`SIMOPT.m`) be in different directories on the local machine?

No.

2. How do I execute a solver on multiple problems?

You have to separately execute the solver on each problem you wish to solve. See example above.

3. How can I change the problem and solver parameters?

Hopefully, you will not have to change the problem and solver parameters. If you must, you make edits directly as specified in Step (iv) above. Check the wiki page for each solver (or problem) for the meaning of each of the parameters.

4. What does a solver report upon execution?

The solver reports some summary statistics on the solution(s) returned, including objective and constraint function estimates, gradient estimates, and the associated covariance matrices (if available). See the wiki page for the solver and `SIMOPT.m` for details on the output arguments.