Skip to content

souvik84/SwiftNav_V1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SwiftNav: A probabilistic global optimizer

Table of Contents

Introduction

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.

Examples

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

Usage

  1. 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 -

    image

  2. 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 -

    image

  • 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).

    image

  1. 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.

image

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.

  1. Execute file runner.m -- This will activate parallel processing and start the computation process, visible either as a GUI or over the command line.
  2. 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".

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages