SwiftNav is a zeroth order probabilistic global optimization algorithm for (not necessarily convex) functions over a compact domain. A discretization procedure is deployed on the compact domain, starting with a small step-size ℎ > 0 and subsequently adaptively refining it in the course of a simulated annealing routine utilizing the Walker-slice and Gibbs’s sampling, in order to identify a set of global optimizers up to good precision. SwiftNav is parallelizable, which helps with scalability as the dimension of decision variables increases.
SwiftNav is deployed as a custom annealing function used with MATLAB's simulannealbnd funtion. Users can leverage MATLAB's GUI to view the global optimization routine in real-time, or view the same via values logged on the command line.
The following table collects all the pre-loaded numerical experiments. Implementation details for all the examples are common are are provided in the Usage section.
| Experiment |
|---|
| Ackley Function |
| Levy Function |
| Quadratically constrained quartic problem |
| Process synthesis MINLP |
| Rosenberg Function |
| Shekel Function |
-
SwiftNav runs completely on MATLAB. To run any example, users are required to enter the dynamics of the problem as a function and save it as a .m MATLAB file of the same name. The only inputs to the file created should be -- the variables and the dimensions of the problem. For eg -
-
Users are then needed to customize the file globopt.m as per their needs. There are two steps -
-
Add the following code snippet to append support for their custom function -
-
Choose between options6 or options7. Options6 helps user leverage the MATLAB GUI to observe global optimization in real-time. Options7, on the other hand logs results directly onto the command line, which is useful when the GUI cannot be seen (working on a remote server).
- Create a .txt file (input4.txt) supplying the following information -
- your_function_name
- Problem dimension
- Exploration parameter (k) value
- Step size (h) value
- Domain
- p value
- step-size factor (delta)
- q value
The values of p, delta and q used in our experiments were 30, 2 and 50 respectively. We have mentioned the details about each of these parameters in our paper.
Multiple lines in the txt file can be added to compute optimal values for multiple functions one after the other, provided Step 1 and Step 2 are duly followed.
- Execute file runner.m -- This will activate parallel processing and start the computation process, visible either as a GUI or over the command line.
- A .xlsx file, OptimizationResultsVanilla.xlsx will be created automatically containing all important information pre-loaded as clickable links. Users can view:
- Optimal value obtained
- Time taken
- Values of variable x at optima
- Progression of best values against iterations
- Progression of current values against iterations
- Progression of step-size against iterations
Users can change "your_function_name" to any function they want to execute. For eg -- to run the Ackley function, simply replace "your_function_name" with "ackley".



