Nguyen Lab Wiki

Surrogate-Model Accelerated Random Search (SMARS) Algorithm, V2.M, User Manual The algorithm is implemented in Matlab. To use, download the following tar zipped file. Unzip and un-tar the file and work directly in the directory with all the .m files. The zipped file is also stored in the /Users/Shared directory of the lab server.

smars.tar.gz

Contents

  • Program Outline
    • Algorithm Description
    • Problem Dependent Requirements
  • Main Function (NN_GA_opt.m)
    • User Input Files
    • User Defined Variables
    • Progressive Output Files
    • Solution Output Data
  • Sub-Functions
    • ga_function.m
    • genetic.m
    • get_Error.m
    • get_train_data.m
    • RS_data.m
    • search_pole.m
    • sim_fnct.m
    • SM_opt.m
    • train_NN.m

1. Program Outline

1.1 Algorithm Description

The Surrogate-Model Accelerated Random Search (SMARS) algorithm, is a non-gradient based iterative application of a random search algorithm and the surrogate-model method for optimization. The random search algorithm drives the global search portion of SMARS, thoroughly probing the search space to find optimal regions. The surrogate-model method then applies an artificial neural network to map local regions of the search space, and produce computationally inexpensive estimates to the solution, thereby accelerating the search.

J. C. Brigham and W. Aquino (2007). Surrogate-Model Accelerated Random Search Algorithm for Global Optimization with Applications to Inverse Material Identification. Computer Methods in Applied Mechanics and Engineering, In Review.

1.2 Problem Dependent User Input Requirements

  • Provide a text file, test_data.txt, which contains a one-dimensional array of the target solution of the optimization problem.
  • Provide a function, get_Error.m, which given the target solution, an array of parameter estimates, and the estimated solution for the given parameter estimates, will produce and return a scalar value representing the error between the target solution and the estimated solution for the given parameter estimates.
  • Provide a function, sim_fnct.m, which given an array of parameter estimates, will produce an array containing the array of parameter estimates and an array of the estimated solution for the given parameter estimates.
  • Update the user defined parameters in the main program, NN_GA_opt.m, for the general SMARS algorithm, the parameters specific for the surrogate-model optimization portion of the algorithm, and the parameters specific for the random search portion of the algorithm.
  • Update the parameters for the genetic algorithm used for the minimization of the surrogate-model in the function genetic.m.

2. Main Function (NN_GA_opt.m)

2.1 Description The main function which operates the SMARS algorithm, NN_GA_opt.m, is also where the user is responsible for editing all problem dependent user variables for the general operation of the SMARS algorithm.

2.2 User Input Variables

General Variables:

  • NI == Number of parameters to be identified through the optimization process.
  • tolerance == Solution error tolerance which, when reached, ends the algorithm.
  • num_it == Maximum number of iterations for the algorithm to perform.
  • minp == (1 x NI) array of minimum values for each of the NI search parameters.
  • maxp == (1 x NI) array of the maximum values for each of the NI search parameters.
  • new_itrain == Flag specifying whether to create a new initial training data set. Set to 1 if creating new data set or set to 0 if NOT creating a new data set.
  • num_itrain == Number of parameter sets to create for the initial training data set. (Suggested value = 40)
  • itrain_distn == (n+1 x NI) array of minimum and maximum values for each of the NI search parameters which will be used to create n uniform distributions of parameters for the initial training data set. (e.g. for the kth parameter uniform distributions will be created over the following ranges: [itrain_distn(1,k) – itrain_distn(2,k)], …, [itrain_distn(n,k) – itrain_distn(n+1,k)]). (Suggested value = [minp; maxp])

Surrogate-Model Specific Variables:

  • use_SM == Flag specifying whether to use the surrogate-model optimization method. Set to 1 if using the surrogate-model method or set to 0 if NOT using the surrogate-model method (i.e. using a pure random search).
  • HN == Initial number of hidden nodes used for the feed-forward neural network used as the surrogate-model. (Suggested value = 8)
  • min_train == Maximum neural network training tolerance to be reached, otherwise hidden nodes are adaptively added to the network. (Suggested value = 1×10-4)
  • max_HN == Maximum number of hidden nodes used for the neural network. (Suggested value = 40)
  • epochs == Maximum number of training iterations for the neural network. (Suggested value = 15000)
  • showepoch == Number of iterations defining the frequency with which the neural network error is plotted. (Set to NaN to suppress plot). (Suggested value = NaN)
  • trainerror == Neural network training error tolerance. (Suggested value = 1×10-6)
  • err_max == Maximum solution error for a given parameter to be included in the training set for the neural network.
  • p_window == Flag specifying whether to use a percentage of the current best parameter set or a percentage of the total parameter search range as the surrogate-model training set window size. Set to 1 if using the current best or set to 0 if using the total parameter search range.
  • nn_maxp == Percentage of either the current best parameter set or the total parameter search range used as the surrogate-model training set window size. (Suggested value = 0.25)

Random Search Specific Varaibles:

  • num_rand == Number of normally distributed random parameter sets to be generated at each iteration for each search pole. (Suggested value = 5)
  • p_dev == Flag specifying whether to use a percentage of the search pole parameter set or a percentage of the total parameter search range as the standard deviation for the random generation of the normally distributed parameter sets. Set to 1 if using the search pole parameter set or set to 0 if using the total parameter search range.
  • dev_mult == Percentage of either the search pole parameter set or the total parameter search range used as the standard deviation for the random generation of the normally distributed parameter sets. (Suggested value = 0.25)
  • num_s_pole == Number of search poles, in addition to the current best parameter set, which will be used for the random generation of the normally distributed parameter sets. (Suggested value = 1)
  • percent_pole == Percentage of the top parameter sets, ranked by error, which will be used to select new search poles. (Suggested value = 0.2)
  • set_proxy == Minimum average percent difference between an existing evaluated parameter set and a newly generated parameter set for the new parameter set to be evaluated. If the percent difference is lower than this tolerance, the new parameter set will be discarded, and a new set will be randomly generated. (Suggested value = 0.01)
  • num_RS_loop == Maximum number of times to cycle through the loop to generate the new normally distributed parameter sets, in which the set is generated, and tested whether it is within the parameter search range and obeys the set_proxy tolerance. Once the maximum number of loops is exceeded, sets will be randomly generated uniformly within the parameter search ranges. (Suggested Value = 20)
DokuWiki CC Attribution-Share Alike 4.0 International