From d38638d218124ccd8eb4a350b4136f17c7fa0633 Mon Sep 17 00:00:00 2001 From: Paht J Date: Thu, 20 Oct 2022 15:41:57 -0400 Subject: [PATCH] adding docs 1.4.5 up --- docs/build/html/.buildinfo | 2 +- .../_modules/glennopt/base/individual.html | 30 +- .../_modules/glennopt/base/optimizer.html | 52 +- .../_modules/glennopt/base/parameter.html | 30 +- .../glennopt/helpers/convert_to_ndarray.html | 30 +- .../_modules/glennopt/helpers/mutate.html | 30 +- .../glennopt/helpers/parallel_settings.html | 30 +- .../glennopt/helpers/population_distance.html | 30 +- .../glennopt/helpers/post_processing.html | 32 +- .../_modules/glennopt/optimizers/nsga3.html | 30 +- .../glennopt/optimizers/nsga3_ml.html | 30 +- .../_modules/glennopt/optimizers/nsopt.html | 30 +- .../_modules/glennopt/optimizers/sode.html | 30 +- docs/build/html/_modules/index.html | 30 +- docs/build/html/_sources/index.rst.txt | 2 +- .../_sphinx_javascript_frameworks_compat.js | 134 +++ docs/build/html/_static/basic.css | 16 +- docs/build/html/_static/doctools.js | 381 +++----- .../html/_static/documentation_options.js | 8 +- .../{jquery-3.5.1.js => jquery-3.6.0.js} | 227 ++--- docs/build/html/_static/jquery.js | 4 +- docs/build/html/_static/language_data.js | 102 +-- docs/build/html/_static/searchtools.js | 827 +++++++++--------- docs/build/html/_static/sphinx_highlight.js | 144 +++ docs/build/html/genindex.html | 30 +- docs/build/html/index.html | 44 +- docs/build/html/modules/base.html | 92 +- docs/build/html/modules/helpers.html | 84 +- docs/build/html/modules/nsga3.html | 44 +- docs/build/html/modules/nsga3_ml.html | 44 +- docs/build/html/modules/nsopt.html | 44 +- docs/build/html/modules/sode.html | 42 +- docs/build/html/notes/installation.html | 36 +- docs/build/html/notes/optimizers.html | 40 +- docs/build/html/objects.inv | Bin 1575 -> 1575 bytes docs/build/html/py-modindex.html | 30 +- docs/build/html/search.html | 30 +- docs/build/html/searchindex.js | 2 +- docs/conf.py | 4 +- pyproject.toml | 2 +- 40 files changed, 1668 insertions(+), 1161 deletions(-) create mode 100644 docs/build/html/_static/_sphinx_javascript_frameworks_compat.js rename docs/build/html/_static/{jquery-3.5.1.js => jquery-3.6.0.js} (98%) create mode 100644 docs/build/html/_static/sphinx_highlight.js diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo index 509eb1c0f..48a728eff 100644 --- a/docs/build/html/.buildinfo +++ b/docs/build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 427a38c23a90abf49d2d67ed6c828770 +config: 7f1570b6800a95e30ca8be1a88d32ca5 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/_modules/glennopt/base/individual.html b/docs/build/html/_modules/glennopt/base/individual.html index adb21a3fd..428cb3b92 100644 --- a/docs/build/html/_modules/glennopt/base/individual.html +++ b/docs/build/html/_modules/glennopt/base/individual.html @@ -3,7 +3,7 @@ - glennopt.base.individual — GlennOPT 1.4.* documentation + glennopt.base.individual — GlennOPT 1.4.5 documentation @@ -14,7 +14,9 @@ + + @@ -28,7 +30,7 @@ GlennOPT
- 1.4.* + 1.4.5
@@ -61,10 +63,26 @@
  • Parameter Class
  • -
  • Single Objective Differential Evolution (SODE)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
  • -
  • Non-dominated sorting optmization with Scipy
  • +
  • Single Objective Differential Evolution (SODE) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
  • +
  • Non-dominated sorting optmization with Scipy +
  • GlennOPT Helpers
    • Converting to Numpy Array
    • Copy
    • diff --git a/docs/build/html/_modules/glennopt/base/optimizer.html b/docs/build/html/_modules/glennopt/base/optimizer.html index 2c024e2f5..e0a38e4d9 100644 --- a/docs/build/html/_modules/glennopt/base/optimizer.html +++ b/docs/build/html/_modules/glennopt/base/optimizer.html @@ -3,7 +3,7 @@ - glennopt.base.optimizer — GlennOPT 1.4.* documentation + glennopt.base.optimizer — GlennOPT 1.4.5 documentation @@ -14,7 +14,9 @@ + + @@ -28,7 +30,7 @@ GlennOPT
      - 1.4.* + 1.4.5
      @@ -61,10 +63,26 @@
    • Parameter Class
  • -
  • Single Objective Differential Evolution (SODE)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
  • -
  • Non-dominated sorting optmization with Scipy
  • +
  • Single Objective Differential Evolution (SODE) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
  • +
  • Non-dominated sorting optmization with Scipy +
  • GlennOPT Helpers
    • Converting to Numpy Array
    • Copy
    • @@ -118,6 +136,7 @@

      Source code for glennopt.base.optimizer

       import math
       import pprint
       import logging
      +from warnings import catch_warnings
       import pandas as pd
       """
           External Modules
      @@ -158,8 +177,12 @@ 

      Source code for glennopt.base.optimizer

               self.name = name        
               assert opt_folder is not None
       
      -        logging.basicConfig(filename=os.path.join(opt_folder,'log.dat'),  level=logging.DEBUG)
      -        self.logger = logging.getLogger()
      +        try:
      +            logging.basicConfig(filename=os.path.join(opt_folder,'log.dat'),  level=logging.DEBUG)
      +            self.logger = logging.getLogger()
      +        except:
      +            self.logger = None
      +        
       
               if (not os.path.isabs(eval_folder)):
                   eval_folder = os.path.join(os.getcwd(),eval_folder)
      @@ -562,7 +585,8 @@ 

      Source code for glennopt.base.optimizer

               """
               if p is not None:     
                   for line in p.stdout:
      -                self.logger.debug('POP {0} Indivudual: {1} Message: {2}'.format(pop,ind_name,line.decode("utf-8").replace('\n', ' ').replace('\r', '')).strip())
      + if (self.logger): + self.logger.debug('POP {0} Indivudual: {1} Message: {2}'.format(pop,ind_name,line.decode("utf-8").replace('\n', ' ').replace('\r', '')).strip())
      [docs] def load_history_file(self): """Reads the history file if exists @@ -739,12 +763,14 @@

      Source code for glennopt.base.optimizer

               # zones
               
               zones = []
      -        i = 0
      +        
               for key, df in self.pandas_cache.items():
      -            zone_str = 'ZONE T = \"{0}\"\n'.format(key+"_"+df.iloc[0]['individual'])
      -            data_str = ' '
      +            i = 0
                   for index, row in self.pandas_cache[key].iterrows():
      +                zone_str = 'ZONE T = \"{0}\"\n'.format(key+"_"+df.iloc[i]['individual'])
      +                data_str = ' '
                       data = []
      +                i+=1
                       for col in self.pandas_cache[key].columns:
                           if col=='population':
                               if row[col] == "DOE":
      @@ -756,6 +782,8 @@ 

      Source code for glennopt.base.optimizer

                           else:
                               if type(row[col])== float:
                                   data.append("{:.6E}".format(row[col]))
      +                        elif type(row[col])== int:
      +                            data.append("{0}".format(row[col]))
                               else:
                                   data.append(row[col])
                       zones.append(zone_str)
      diff --git a/docs/build/html/_modules/glennopt/base/parameter.html b/docs/build/html/_modules/glennopt/base/parameter.html
      index 75ac065d5..d1ed8a7ca 100644
      --- a/docs/build/html/_modules/glennopt/base/parameter.html
      +++ b/docs/build/html/_modules/glennopt/base/parameter.html
      @@ -3,7 +3,7 @@
       
         
         
      -  glennopt.base.parameter — GlennOPT 1.4.* documentation
      +  glennopt.base.parameter — GlennOPT 1.4.5 documentation
             
             
             
      @@ -14,7 +14,9 @@
               
               
               
      +        
               
      +        
           
           
            
      @@ -28,7 +30,7 @@
                    GlennOPT
                 
                     
      - 1.4.* + 1.4.5
      @@ -61,10 +63,26 @@
    • Parameter Class
  • -
  • Single Objective Differential Evolution (SODE)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
  • -
  • Non-dominated sorting optmization with Scipy
  • +
  • Single Objective Differential Evolution (SODE) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
  • +
  • Non-dominated sorting optmization with Scipy +
  • GlennOPT Helpers
    • Converting to Numpy Array
    • Copy
    • diff --git a/docs/build/html/_modules/glennopt/helpers/convert_to_ndarray.html b/docs/build/html/_modules/glennopt/helpers/convert_to_ndarray.html index 14bca3fd1..5672f22d8 100644 --- a/docs/build/html/_modules/glennopt/helpers/convert_to_ndarray.html +++ b/docs/build/html/_modules/glennopt/helpers/convert_to_ndarray.html @@ -3,7 +3,7 @@ - glennopt.helpers.convert_to_ndarray — GlennOPT 1.4.* documentation + glennopt.helpers.convert_to_ndarray — GlennOPT 1.4.5 documentation @@ -14,7 +14,9 @@ + + @@ -28,7 +30,7 @@ GlennOPT
      - 1.4.* + 1.4.5
      @@ -61,10 +63,26 @@
    • Parameter Class
  • -
  • Single Objective Differential Evolution (SODE)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
  • -
  • Non-dominated sorting optmization with Scipy
  • +
  • Single Objective Differential Evolution (SODE) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
  • +
  • Non-dominated sorting optmization with Scipy +
  • GlennOPT Helpers
    • Converting to Numpy Array
    • Copy
    • diff --git a/docs/build/html/_modules/glennopt/helpers/mutate.html b/docs/build/html/_modules/glennopt/helpers/mutate.html index 201cd47a6..67f42b7e4 100644 --- a/docs/build/html/_modules/glennopt/helpers/mutate.html +++ b/docs/build/html/_modules/glennopt/helpers/mutate.html @@ -3,7 +3,7 @@ - glennopt.helpers.mutate — GlennOPT 1.4.* documentation + glennopt.helpers.mutate — GlennOPT 1.4.5 documentation @@ -14,7 +14,9 @@ + + @@ -28,7 +30,7 @@ GlennOPT
      - 1.4.* + 1.4.5
      @@ -61,10 +63,26 @@
    • Parameter Class
  • -
  • Single Objective Differential Evolution (SODE)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
  • -
  • Non-dominated sorting optmization with Scipy
  • +
  • Single Objective Differential Evolution (SODE) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
  • +
  • Non-dominated sorting optmization with Scipy +
  • GlennOPT Helpers
    • Converting to Numpy Array
    • Copy
    • diff --git a/docs/build/html/_modules/glennopt/helpers/parallel_settings.html b/docs/build/html/_modules/glennopt/helpers/parallel_settings.html index 6f871f634..c31b595a3 100644 --- a/docs/build/html/_modules/glennopt/helpers/parallel_settings.html +++ b/docs/build/html/_modules/glennopt/helpers/parallel_settings.html @@ -3,7 +3,7 @@ - glennopt.helpers.parallel_settings — GlennOPT 1.4.* documentation + glennopt.helpers.parallel_settings — GlennOPT 1.4.5 documentation @@ -14,7 +14,9 @@ + + @@ -28,7 +30,7 @@ GlennOPT
      - 1.4.* + 1.4.5
      @@ -61,10 +63,26 @@
    • Parameter Class
  • -
  • Single Objective Differential Evolution (SODE)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
  • -
  • Non-dominated sorting optmization with Scipy
  • +
  • Single Objective Differential Evolution (SODE) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
  • +
  • Non-dominated sorting optmization with Scipy +
  • GlennOPT Helpers
    • Converting to Numpy Array
    • Copy
    • diff --git a/docs/build/html/_modules/glennopt/helpers/population_distance.html b/docs/build/html/_modules/glennopt/helpers/population_distance.html index e6ca7cd05..57a64550e 100644 --- a/docs/build/html/_modules/glennopt/helpers/population_distance.html +++ b/docs/build/html/_modules/glennopt/helpers/population_distance.html @@ -3,7 +3,7 @@ - glennopt.helpers.population_distance — GlennOPT 1.4.* documentation + glennopt.helpers.population_distance — GlennOPT 1.4.5 documentation @@ -14,7 +14,9 @@ + + @@ -28,7 +30,7 @@ GlennOPT
      - 1.4.* + 1.4.5
      @@ -61,10 +63,26 @@
    • Parameter Class
  • -
  • Single Objective Differential Evolution (SODE)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
  • -
  • Non-dominated sorting optmization with Scipy
  • +
  • Single Objective Differential Evolution (SODE) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
  • +
  • Non-dominated sorting optmization with Scipy +
  • GlennOPT Helpers
    • Converting to Numpy Array
    • Copy
    • diff --git a/docs/build/html/_modules/glennopt/helpers/post_processing.html b/docs/build/html/_modules/glennopt/helpers/post_processing.html index 5998bd2cc..8a81d5676 100644 --- a/docs/build/html/_modules/glennopt/helpers/post_processing.html +++ b/docs/build/html/_modules/glennopt/helpers/post_processing.html @@ -3,7 +3,7 @@ - glennopt.helpers.post_processing — GlennOPT 1.4.* documentation + glennopt.helpers.post_processing — GlennOPT 1.4.5 documentation @@ -14,7 +14,9 @@ + + @@ -28,7 +30,7 @@ GlennOPT
      - 1.4.* + 1.4.5
      @@ -61,10 +63,26 @@
    • Parameter Class
  • -
  • Single Objective Differential Evolution (SODE)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
  • -
  • Non-dominated sorting optmization with Scipy
  • +
  • Single Objective Differential Evolution (SODE) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
  • +
  • Non-dominated sorting optmization with Scipy +
  • GlennOPT Helpers
    • Converting to Numpy Array
    • Copy
    • @@ -178,9 +196,7 @@

      Source code for glennopt.helpers.post_processing

      | [ | POP001: [best_individual_objective1, best_individual,objective2, best_individual,objective3], best_individual_compromise - | POP002: [best_individual_objective1, best_individual,objective2, best_individual,objective3], best_individual_compromise - | POP003: [best_individual_objective1, best_individual,objective2, best_individual,objective3], best_individual_compromise | ] diff --git a/docs/build/html/_modules/glennopt/optimizers/nsga3.html b/docs/build/html/_modules/glennopt/optimizers/nsga3.html index d48fd6bcf..462ce2f10 100644 --- a/docs/build/html/_modules/glennopt/optimizers/nsga3.html +++ b/docs/build/html/_modules/glennopt/optimizers/nsga3.html @@ -3,7 +3,7 @@ - glennopt.optimizers.nsga3 — GlennOPT 1.4.* documentation + glennopt.optimizers.nsga3 — GlennOPT 1.4.5 documentation @@ -14,7 +14,9 @@ + + @@ -28,7 +30,7 @@ GlennOPT
      - 1.4.* + 1.4.5
      @@ -61,10 +63,26 @@
    • Parameter Class
  • -
  • Single Objective Differential Evolution (SODE)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
  • -
  • Non-dominated sorting optmization with Scipy
  • +
  • Single Objective Differential Evolution (SODE) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
  • +
  • Non-dominated sorting optmization with Scipy +
  • GlennOPT Helpers
    • Converting to Numpy Array
    • Copy
    • diff --git a/docs/build/html/_modules/glennopt/optimizers/nsga3_ml.html b/docs/build/html/_modules/glennopt/optimizers/nsga3_ml.html index 095ab7234..493dbe47a 100644 --- a/docs/build/html/_modules/glennopt/optimizers/nsga3_ml.html +++ b/docs/build/html/_modules/glennopt/optimizers/nsga3_ml.html @@ -3,7 +3,7 @@ - glennopt.optimizers.nsga3_ml — GlennOPT 1.4.* documentation + glennopt.optimizers.nsga3_ml — GlennOPT 1.4.5 documentation @@ -14,7 +14,9 @@ + + @@ -28,7 +30,7 @@ GlennOPT
      - 1.4.* + 1.4.5
      @@ -61,10 +63,26 @@
    • Parameter Class
  • -
  • Single Objective Differential Evolution (SODE)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
  • -
  • Non-dominated sorting optmization with Scipy
  • +
  • Single Objective Differential Evolution (SODE) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
  • +
  • Non-dominated sorting optmization with Scipy +
  • GlennOPT Helpers
    • Converting to Numpy Array
    • Copy
    • diff --git a/docs/build/html/_modules/glennopt/optimizers/nsopt.html b/docs/build/html/_modules/glennopt/optimizers/nsopt.html index 8f9648a2a..1e405cb48 100644 --- a/docs/build/html/_modules/glennopt/optimizers/nsopt.html +++ b/docs/build/html/_modules/glennopt/optimizers/nsopt.html @@ -3,7 +3,7 @@ - glennopt.optimizers.nsopt — GlennOPT 1.4.* documentation + glennopt.optimizers.nsopt — GlennOPT 1.4.5 documentation @@ -14,7 +14,9 @@ + + @@ -28,7 +30,7 @@ GlennOPT
      - 1.4.* + 1.4.5
      @@ -61,10 +63,26 @@
    • Parameter Class
  • -
  • Single Objective Differential Evolution (SODE)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
  • -
  • Non-dominated sorting optmization with Scipy
  • +
  • Single Objective Differential Evolution (SODE) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
  • +
  • Non-dominated sorting optmization with Scipy +
  • GlennOPT Helpers
    • Converting to Numpy Array
    • Copy
    • diff --git a/docs/build/html/_modules/glennopt/optimizers/sode.html b/docs/build/html/_modules/glennopt/optimizers/sode.html index 6356676f5..fa7dbe0e3 100644 --- a/docs/build/html/_modules/glennopt/optimizers/sode.html +++ b/docs/build/html/_modules/glennopt/optimizers/sode.html @@ -3,7 +3,7 @@ - glennopt.optimizers.sode — GlennOPT 1.4.* documentation + glennopt.optimizers.sode — GlennOPT 1.4.5 documentation @@ -14,7 +14,9 @@ + + @@ -28,7 +30,7 @@ GlennOPT
      - 1.4.* + 1.4.5
      @@ -61,10 +63,26 @@
    • Parameter Class
  • -
  • Single Objective Differential Evolution (SODE)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
  • -
  • Non-dominated sorting optmization with Scipy
  • +
  • Single Objective Differential Evolution (SODE) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
  • +
  • Non-dominated sorting optmization with Scipy +
  • GlennOPT Helpers
    • Converting to Numpy Array
    • Copy
    • diff --git a/docs/build/html/_modules/index.html b/docs/build/html/_modules/index.html index 5156d53d2..dc928f1f4 100644 --- a/docs/build/html/_modules/index.html +++ b/docs/build/html/_modules/index.html @@ -3,7 +3,7 @@ - Overview: module code — GlennOPT 1.4.* documentation + Overview: module code — GlennOPT 1.4.5 documentation @@ -14,7 +14,9 @@ + + @@ -28,7 +30,7 @@ GlennOPT
      - 1.4.* + 1.4.5
      @@ -61,10 +63,26 @@
    • Parameter Class
  • -
  • Single Objective Differential Evolution (SODE)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III)
  • -
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
  • -
  • Non-dominated sorting optmization with Scipy
  • +
  • Single Objective Differential Evolution (SODE) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) +
  • +
  • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
  • +
  • Non-dominated sorting optmization with Scipy +
  • GlennOPT Helpers
    • Converting to Numpy Array
    • Copy
    • diff --git a/docs/build/html/_sources/index.rst.txt b/docs/build/html/_sources/index.rst.txt index 6d942b4b0..461233df5 100644 --- a/docs/build/html/_sources/index.rst.txt +++ b/docs/build/html/_sources/index.rst.txt @@ -31,7 +31,7 @@ Now that you have a rough background, please check out the tutorials and documen Optimization Folder Structure ----------------------------------------- -It is reccomended to keep the following folder structure when performing the optimization. The calculation folder will be created automatically by glennopt. However you need to put +It is recommended to keep the following folder structure when performing the optimization. The calculation folder will be created automatically by glennopt. However you need to put :: diff --git a/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js b/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 000000000..8549469dc --- /dev/null +++ b/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,134 @@ +/* + * _sphinx_javascript_frameworks_compat.js + * ~~~~~~~~~~ + * + * Compatability shim for jQuery and underscores.js. + * + * WILL BE REMOVED IN Sphinx 6.0 + * xref RemovedInSphinx60Warning + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/docs/build/html/_static/basic.css b/docs/build/html/_static/basic.css index 603f6a879..eeb0519a6 100644 --- a/docs/build/html/_static/basic.css +++ b/docs/build/html/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -222,7 +222,7 @@ table.modindextable td { /* -- general body styles --------------------------------------------------- */ div.body { - min-width: 450px; + min-width: 360px; max-width: 800px; } @@ -236,7 +236,6 @@ div.body p, div.body dd, div.body li, div.body blockquote { a.headerlink { visibility: hidden; } - a.brackets:before, span.brackets > a:before{ content: "["; @@ -247,6 +246,7 @@ span.brackets > a:after { content: "]"; } + h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, @@ -334,13 +334,11 @@ aside.sidebar { p.sidebar-title { font-weight: bold; } - div.admonition, div.topic, blockquote { clear: left; } /* -- topics ---------------------------------------------------------------- */ - div.topic { border: 1px solid #ccc; padding: 7px; @@ -428,10 +426,6 @@ table.docutils td, table.docutils th { border-bottom: 1px solid #aaa; } -table.footnote td, table.footnote th { - border: 0 !important; -} - th { text-align: left; padding-right: 5px; @@ -614,7 +608,6 @@ ol.simple p, ul.simple p { margin-bottom: 0; } - dl.footnote > dt, dl.citation > dt { float: left; @@ -643,11 +636,11 @@ dl.field-list > dt { padding-left: 0.5em; padding-right: 5px; } - dl.field-list > dt:after { content: ":"; } + dl.field-list > dd { padding-left: 0.5em; margin-top: 0em; @@ -757,6 +750,7 @@ span.pre { -ms-hyphens: none; -webkit-hyphens: none; hyphens: none; + white-space: nowrap; } div[class*="highlight-"] { diff --git a/docs/build/html/_static/doctools.js b/docs/build/html/_static/doctools.js index 8cbf1b161..527b876ca 100644 --- a/docs/build/html/_static/doctools.js +++ b/docs/build/html/_static/doctools.js @@ -2,322 +2,155 @@ * doctools.js * ~~~~~~~~~~~ * - * Sphinx JavaScript utilities for all documentation. + * Base JavaScript utilities for all Sphinx HTML documentation. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - * - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL - */ -jQuery.urldecode = function(x) { - if (!x) { - return x - } - return decodeURIComponent(x.replace(/\+/g, ' ')); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); } - return result; }; -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - var bbox = node.parentElement.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} - /** * Small JavaScript module for the documentation. */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { - this.initOnKeyListeners(); - } +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); }, /** * i18n support */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", // gettext and ngettext don't access this so that the functions // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } }, - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; }, - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; }, /** - * add context elements like header anchor links + * helper function to focus on search bar */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); }, /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + * Initialise the domain index toggle buttons */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); - }, - - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, + }; - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); }, - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, - - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); - }, - - initOnKeyListeners: function() { - $(document).keydown(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box, textarea, dropdown or button - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' - && activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey - && !event.shiftKey) { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); } break; - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); } break; } } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } }); - } + }, }; // quick alias for translations -_ = Documentation.gettext; +const _ = Documentation.gettext; -$(document).ready(function() { - Documentation.init(); -}); +_ready(Documentation.init); diff --git a/docs/build/html/_static/documentation_options.js b/docs/build/html/_static/documentation_options.js index f5f7d3ca5..7bd9b7821 100644 --- a/docs/build/html/_static/documentation_options.js +++ b/docs/build/html/_static/documentation_options.js @@ -1,12 +1,14 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '1.4.*', - LANGUAGE: 'None', + VERSION: '1.4.5', + LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', FILE_SUFFIX: '.html', LINK_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, }; \ No newline at end of file diff --git a/docs/build/html/_static/jquery-3.5.1.js b/docs/build/html/_static/jquery-3.6.0.js similarity index 98% rename from docs/build/html/_static/jquery-3.5.1.js rename to docs/build/html/_static/jquery-3.6.0.js index 50937333b..fc6c299b7 100644 --- a/docs/build/html/_static/jquery-3.5.1.js +++ b/docs/build/html/_static/jquery-3.6.0.js @@ -1,15 +1,15 @@ /*! - * jQuery JavaScript Library v3.5.1 + * jQuery JavaScript Library v3.6.0 * https://jquery.com/ * * Includes Sizzle.js * https://sizzlejs.com/ * - * Copyright JS Foundation and other contributors + * Copyright OpenJS Foundation and other contributors * Released under the MIT license * https://jquery.org/license * - * Date: 2020-05-04T22:49Z + * Date: 2021-03-02T17:08Z */ ( function( global, factory ) { @@ -76,12 +76,16 @@ var support = {}; var isFunction = function isFunction( obj ) { - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; var isWindow = function isWindow( obj ) { @@ -147,7 +151,7 @@ function toType( obj ) { var - version = "3.5.1", + version = "3.6.0", // Define a local copy of jQuery jQuery = function( selector, context ) { @@ -401,7 +405,7 @@ jQuery.extend( { if ( isArrayLike( Object( arr ) ) ) { jQuery.merge( ret, typeof arr === "string" ? - [ arr ] : arr + [ arr ] : arr ); } else { push.call( ret, arr ); @@ -496,9 +500,9 @@ if ( typeof Symbol === "function" ) { // Populate the class2type map jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( _i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); function isArrayLike( obj ) { @@ -518,14 +522,14 @@ function isArrayLike( obj ) { } var Sizzle = /*! - * Sizzle CSS Selector Engine v2.3.5 + * Sizzle CSS Selector Engine v2.3.6 * https://sizzlejs.com/ * * Copyright JS Foundation and other contributors * Released under the MIT license * https://js.foundation/ * - * Date: 2020-03-14 + * Date: 2021-02-16 */ ( function( window ) { var i, @@ -1108,8 +1112,8 @@ support = Sizzle.support = {}; * @returns {Boolean} True iff elem is a non-HTML XML node */ isXML = Sizzle.isXML = function( elem ) { - var namespace = elem.namespaceURI, - docElem = ( elem.ownerDocument || elem ).documentElement; + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; // Support: IE <=8 // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes @@ -3024,9 +3028,9 @@ var rneedsContext = jQuery.expr.match.needsContext; function nodeName( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); -}; +} var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); @@ -3997,8 +4001,8 @@ jQuery.extend( { resolveContexts = Array( i ), resolveValues = slice.call( arguments ), - // the master Deferred - master = jQuery.Deferred(), + // the primary Deferred + primary = jQuery.Deferred(), // subordinate callback factory updateFunc = function( i ) { @@ -4006,30 +4010,30 @@ jQuery.extend( { resolveContexts[ i ] = this; resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); + primary.resolveWith( resolveContexts, resolveValues ); } }; }; // Single- and empty arguments are adopted like Promise.resolve if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, !remaining ); // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || + if ( primary.state() === "pending" || isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - return master.then(); + return primary.then(); } } // Multiple arguments are aggregated like Promise.all array elements while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); } - return master.promise(); + return primary.promise(); } } ); @@ -4180,8 +4184,8 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { for ( ; i < len; i++ ) { fn( elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) ); } } @@ -5089,10 +5093,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) { } -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; function returnTrue() { return true; @@ -5387,8 +5388,8 @@ jQuery.event = { event = jQuery.event.fix( nativeEvent ), handlers = ( - dataPriv.get( this, "events" ) || Object.create( null ) - )[ event.type ] || [], + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event @@ -5512,12 +5513,12 @@ jQuery.event = { get: isFunction( hook ) ? function() { if ( this.originalEvent ) { - return hook( this.originalEvent ); + return hook( this.originalEvent ); } } : function() { if ( this.originalEvent ) { - return this.originalEvent[ name ]; + return this.originalEvent[ name ]; } }, @@ -5656,7 +5657,13 @@ function leverageNative( el, type, expectSync ) { // Cancel the outer synthetic event event.stopImmediatePropagation(); event.preventDefault(); - return result.value; + + // Support: Chrome 86+ + // In Chrome, if an element having a focusout handler is blurred by + // clicking outside of it, it invokes the handler synchronously. If + // that handler calls `.remove()` on the element, the data is cleared, + // leaving `result` undefined. We need to guard against this. + return result && result.value; } // If this is an inner synthetic event for an event with a bubbling surrogate @@ -5821,34 +5828,7 @@ jQuery.each( { targetTouches: true, toElement: true, touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } + which: true }, jQuery.event.addProp ); jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { @@ -5874,6 +5854,12 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp return true; }, + // Suppress native focus or blur as it's already being fired + // in leverageNative. + _default: function() { + return true; + }, + delegateType: delegateType }; } ); @@ -6541,6 +6527,10 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); // set in CSS while `offset*` properties report correct values. // Behavior in IE 9 is more subtle than in newer versions & it passes // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) reliableTrDimensions: function() { var table, tr, trChild, trStyle; if ( reliableTrDimensionsVal == null ) { @@ -6548,17 +6538,32 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); tr = document.createElement( "tr" ); trChild = document.createElement( "div" ); - table.style.cssText = "position:absolute;left:-11111px"; + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. tr.style.height = "1px"; trChild.style.height = "9px"; + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is display: block + // gets around this issue. + trChild.style.display = "block"; + documentElement .appendChild( table ) .appendChild( tr ) .appendChild( trChild ); trStyle = window.getComputedStyle( tr ); - reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + + parseInt( trStyle.borderTopWidth, 10 ) + + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; documentElement.removeChild( table ); } @@ -7022,10 +7027,10 @@ jQuery.each( [ "height", "width" ], function( _i, dimension ) { // Running getBoundingClientRect on a disconnected node // in IE throws an error. ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); } }, @@ -7084,7 +7089,7 @@ jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, swap( elem, { marginLeft: 0 }, function() { return elem.getBoundingClientRect().left; } ) - ) + "px"; + ) + "px"; } } ); @@ -7223,7 +7228,7 @@ Tween.propHooks = { if ( jQuery.fx.step[ tween.prop ] ) { jQuery.fx.step[ tween.prop ]( tween ); } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || + jQuery.cssHooks[ tween.prop ] || tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); } else { @@ -7468,7 +7473,7 @@ function defaultPrefilter( elem, props, opts ) { anim.done( function() { - /* eslint-enable no-loop-func */ + /* eslint-enable no-loop-func */ // The final step of a "hide" animation is actually hiding the element if ( !hidden ) { @@ -7588,7 +7593,7 @@ function Animation( elem, properties, options ) { tweens: [], createTween: function( prop, end ) { var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.opts.specialEasing[ prop ] || animation.opts.easing ); animation.tweens.push( tween ); return tween; }, @@ -7761,7 +7766,8 @@ jQuery.fn.extend( { anim.stop( true ); } }; - doAnimation.finish = doAnimation; + + doAnimation.finish = doAnimation; return empty || optall.queue === false ? this.each( doAnimation ) : @@ -8401,8 +8407,8 @@ jQuery.fn.extend( { if ( this.setAttribute ) { this.setAttribute( "class", className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" + "" : + dataPriv.get( this, "__className__" ) || "" ); } } @@ -8417,7 +8423,7 @@ jQuery.fn.extend( { while ( ( elem = this[ i++ ] ) ) { if ( elem.nodeType === 1 && ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; + return true; } } @@ -8707,9 +8713,7 @@ jQuery.extend( jQuery.event, { special.bindType || type; // jQuery handler - handle = ( - dataPriv.get( cur, "events" ) || Object.create( null ) - )[ event.type ] && + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && dataPriv.get( cur, "handle" ); if ( handle ) { handle.apply( cur, data ); @@ -8856,7 +8860,7 @@ var rquery = ( /\?/ ); // Cross-browser xml parsing jQuery.parseXML = function( data ) { - var xml; + var xml, parserErrorElem; if ( !data || typeof data !== "string" ) { return null; } @@ -8865,12 +8869,17 @@ jQuery.parseXML = function( data ) { // IE throws on parseFromString with invalid input. try { xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } + } catch ( e ) {} - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( !xml || parserErrorElem ) { + jQuery.error( "Invalid XML: " + ( + parserErrorElem ? + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) : + data + ) ); } return xml; }; @@ -8971,16 +8980,14 @@ jQuery.fn.extend( { // Can add propHook for "elements" to filter or add form elements var elements = jQuery.prop( this, "elements" ); return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { + } ).filter( function() { var type = this.type; // Use .is( ":disabled" ) so that fieldset[disabled] works return this.name && !jQuery( this ).is( ":disabled" ) && rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( _i, elem ) { + } ).map( function( _i, elem ) { var val = jQuery( this ).val(); if ( val == null ) { @@ -9033,7 +9040,8 @@ var // Anchor tag for parsing the document origin originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; + +originAnchor.href = location.href; // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport function addToPrefiltersOrTransports( structure ) { @@ -9414,8 +9422,8 @@ jQuery.extend( { // Context for global events is callbackContext if it is a DOM node or jQuery collection globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, + jQuery( callbackContext ) : + jQuery.event, // Deferreds deferred = jQuery.Deferred(), @@ -9727,8 +9735,10 @@ jQuery.extend( { response = ajaxHandleResponses( s, jqXHR, responses ); } - // Use a noop converter for missing script - if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { + // Use a noop converter for missing script but not if jsonp + if ( !isSuccess && + jQuery.inArray( "script", s.dataTypes ) > -1 && + jQuery.inArray( "json", s.dataTypes ) < 0 ) { s.converters[ "text script" ] = function() {}; } @@ -10466,12 +10476,6 @@ jQuery.offset = { options.using.call( elem, props ); } else { - if ( typeof props.top === "number" ) { - props.top += "px"; - } - if ( typeof props.left === "number" ) { - props.left += "px"; - } curElem.css( props ); } } @@ -10640,8 +10644,11 @@ jQuery.each( [ "top", "left" ], function( _i, prop ) { // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, - function( defaultExtra, funcName ) { + jQuery.each( { + padding: "inner" + name, + content: type, + "": "outer" + name + }, function( defaultExtra, funcName ) { // Margin is only for outerHeight, outerWidth jQuery.fn[ funcName ] = function( margin, value ) { @@ -10726,7 +10733,8 @@ jQuery.fn.extend( { } } ); -jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + +jQuery.each( + ( "blur focus focusin focusout resize scroll click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup contextmenu" ).split( " " ), function( _i, name ) { @@ -10737,7 +10745,8 @@ jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + this.on( name, null, data, fn ) : this.trigger( name ); }; - } ); + } +); diff --git a/docs/build/html/_static/jquery.js b/docs/build/html/_static/jquery.js index b0614034a..c4c6022f2 100644 --- a/docs/build/html/_static/jquery.js +++ b/docs/build/html/_static/jquery.js @@ -1,2 +1,2 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 { + const [docname, title, anchor, descr, score, filename] = result + return score }, */ @@ -28,9 +30,11 @@ if (!Scorer) { // or matches in the last dotted part of the object name objPartialMatch: 6, // Additive scores depending on the priority of the object - objPrio: {0: 15, // used to be importantResults - 1: 5, // used to be objectResults - 2: -5}, // used to be unimportantResults + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, // Used when the priority is not in the mapping. objPrioDefault: 0, @@ -39,456 +43,495 @@ if (!Scorer) { partialTitle: 7, // query found in terms term: 5, - partialTerm: 2 + partialTerm: 2, }; } -if (!splitQuery) { - function splitQuery(query) { - return query.split(/\s+/); +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = docUrlRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = docUrlRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings } /** * Search Module */ -var Search = { - - _index : null, - _queued_query : null, - _pulse_status : -1, - - htmlToText : function(htmlString) { - var virtualDocument = document.implementation.createHTMLDocument('virtual'); - var htmlElement = $(htmlString, virtualDocument); - htmlElement.find('.headerlink').remove(); - docContent = htmlElement.find('[role=main]')[0]; - if(docContent === undefined) { - console.warn("Content block not found. Sphinx search tries to obtain it " + - "via '[role=main]'. Could you check your theme or template."); - return ""; - } - return docContent.textContent || docContent.innerText; +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; }, - init : function() { - var params = $.getQueryParameters(); - if (params.q) { - var query = params.q[0]; - $('input[name="q"]')[0].value = query; - this.performSearch(query); - } + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); }, - loadIndex : function(url) { - $.ajax({type: "GET", url: url, data: null, - dataType: "script", cache: true, - complete: function(jqxhr, textstatus) { - if (textstatus != "success") { - document.getElementById("searchindexloader").src = url; - } - }}); - }, + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), - setIndex : function(index) { - var q; - this._index = index; - if ((q = this._queued_query) !== null) { - this._queued_query = null; - Search.query(q); + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); } }, - hasIndex : function() { - return this._index !== null; - }, + hasIndex: () => Search._index !== null, - deferQuery : function(query) { - this._queued_query = query; - }, + deferQuery: (query) => (Search._queued_query = query), - stopPulse : function() { - this._pulse_status = 0; - }, + stopPulse: () => (Search._pulse_status = -1), - startPulse : function() { - if (this._pulse_status >= 0) - return; - function pulse() { - var i; + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { Search._pulse_status = (Search._pulse_status + 1) % 4; - var dotString = ''; - for (i = 0; i < Search._pulse_status; i++) - dotString += '.'; - Search.dots.text(dotString); - if (Search._pulse_status > -1) - window.setTimeout(pulse, 500); - } + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; pulse(); }, /** * perform a search for something (or wait until index is loaded) */ - performSearch : function(query) { + performSearch: (query) => { // create the required interface elements - this.out = $('#search-results'); - this.title = $('

      ' + _('Searching') + '

      ').appendTo(this.out); - this.dots = $('').appendTo(this.title); - this.status = $('

       

      ').appendTo(this.out); - this.output = $(' -
    • Single Objective Differential Evolution (SODE)
    • -
    • Non-dominated sorting genetic algorithm (NSGA-III)
    • -
    • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
    • -
    • Non-dominated sorting optmization with Scipy
    • +
    • Single Objective Differential Evolution (SODE) +
    • +
    • Non-dominated sorting genetic algorithm (NSGA-III) +
    • +
    • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
    • +
    • Non-dominated sorting optmization with Scipy +
    • GlennOPT Helpers
      • Converting to Numpy Array
      • Copy
      • diff --git a/docs/build/html/index.html b/docs/build/html/index.html index 8ba3bf354..c272a960d 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -4,7 +4,7 @@ - GlennOPT Documentation — GlennOPT 1.4.* documentation + GlennOPT Documentation — GlennOPT 1.4.5 documentation @@ -15,7 +15,9 @@ + + @@ -31,7 +33,7 @@ GlennOPT
        - 1.4.* + 1.4.5
        @@ -64,10 +66,26 @@
      • Parameter Class
    • -
    • Single Objective Differential Evolution (SODE)
    • -
    • Non-dominated sorting genetic algorithm (NSGA-III)
    • -
    • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
    • -
    • Non-dominated sorting optmization with Scipy
    • +
    • Single Objective Differential Evolution (SODE) +
    • +
    • Non-dominated sorting genetic algorithm (NSGA-III) +
    • +
    • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
    • +
    • Non-dominated sorting optmization with Scipy +
    • GlennOPT Helpers
      • Converting to Numpy Array
      • Copy
      • @@ -105,7 +123,7 @@
        -

        GlennOPT Documentation

        +

        GlennOPT Documentation

        GlennOPT is a general purpose multi-objective optimizer for computer simulations locally or on the super computer. One of the biggest problems when simulating many designs on a super computer are the unexpected problems that occur such as unexpected server crashes, out of storage, updates that stop the job from executing.

        GlennOPT is designed with this in mind. When an optimization crashes, you can restart GlennOPT and it will scan the execution folder either the DOE or POP folders and any simulation that did not yield an output.txt file will be restarted from it’s local evaluation script.

        The number of files that GlennOPT produces is quite significant. It saves a copy of every single execution of the objective function. This is useful for generating data for machine learning. While many of these evaluations may not yield an optimized result, some may even fail. These extra data is useful for debugging/understanding the trends of your design space.

        @@ -116,17 +134,17 @@

        GlennOPT Documentation

        -

        Background

        +

        Background

        -

        Individual

        +

        Individual

        In this documentation and the code you will hear a lot about Individual. This represents your design parameters for a single evaluation. So lets take a simple function \(f(x) = x_1 + x_2 + (x_3)^2\) the \(x\) in \(f(x)\) is a vector containing \(x_1\), \(x_2\), \(x_3\). This vector of \(x\) is the evaluation parameters of an individual. An individual in GlennOPT is a class containing the evaluation parameters, performance parameters, objective values, and constraints.

        Say your objectives include these two functions \(f_1(x) and :math:f_2(x)\) where x is a vector shared between these functions. The individual will contain f_1 and f_2. If you have other performance parameter such as Pressure(x) and Speed(x) these can also be tracked within an individual.

        When evaluating using GlennOPT, you specify how many individuals per population and how many populations to run for. Think of it as keeping track of people - you have a population of the group and the number of generations which you are recording data for. The individual represents a single person and all the properties and objectives.

        Now that you have a rough background, please check out the tutorials and documentation on single and multi-objective.

        -

        Optimization Folder Structure

        -

        It is reccomended to keep the following folder structure when performing the optimization. The calculation folder will be created automatically by glennopt. However you need to put

        +

        Optimization Folder Structure

        +

        It is recommended to keep the following folder structure when performing the optimization. The calculation folder will be created automatically by glennopt. However you need to put

        Calculation (Created automatically)
            -DOE
               -IND000
        @@ -141,7 +159,7 @@ 

        Optimization Folder Structure -

        Note about NAS (NASA Advance Super Computer) or any Torque/SLURM queuing system

        +

        Note about NAS (NASA Advance Super Computer) or any Torque/SLURM queuing system

        When executing on NAS it was found to be best to launch simulations directly from GlennOPT and have GlennOPT wait for the output.txt results. Think of doing a qsub to launch glennopt and then having glennopt do qsub to launch other executions. This is better when debugging failed simulations.

        Notes

        @@ -165,7 +183,7 @@

        Note about NAS (NASA Advance Super Computer) or any Torque/SLURM queuing sys

        -

        Indices and tables

        +

        Indices and tables

        • Index

        • Module Index

        • diff --git a/docs/build/html/modules/base.html b/docs/build/html/modules/base.html index 1abb79d3b..4811fd9b4 100644 --- a/docs/build/html/modules/base.html +++ b/docs/build/html/modules/base.html @@ -4,7 +4,7 @@ - GlennOPT base classes — GlennOPT 1.4.* documentation + GlennOPT base classes — GlennOPT 1.4.5 documentation @@ -15,7 +15,9 @@ + + @@ -31,7 +33,7 @@ GlennOPT
          - 1.4.* + 1.4.5
          @@ -64,10 +66,26 @@
        • Parameter Class
        -
      • Single Objective Differential Evolution (SODE)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
      • -
      • Non-dominated sorting optmization with Scipy
      • +
      • Single Objective Differential Evolution (SODE) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
      • +
      • Non-dominated sorting optmization with Scipy +
      • GlennOPT Helpers
      • -
      • Single Objective Differential Evolution (SODE)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
      • -
      • Non-dominated sorting optmization with Scipy
      • +
      • Single Objective Differential Evolution (SODE) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
      • +
      • Non-dominated sorting optmization with Scipy +
      • GlennOPT Helpers
      • -
      • Single Objective Differential Evolution (SODE)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
      • -
      • Non-dominated sorting optmization with Scipy
      • +
      • Single Objective Differential Evolution (SODE) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
      • +
      • Non-dominated sorting optmization with Scipy +
      • GlennOPT Helpers
        • Converting to Numpy Array
        • Copy
        • @@ -105,14 +123,14 @@
          -

          Non-dominated sorting genetic algorithm (NSGA-III)

          +

          Non-dominated sorting genetic algorithm (NSGA-III)

          NSGA3 - Non-dominated sorting genetic algorithm

          class glennopt.optimizers.nsga3.NSGA3(eval_command: str = 'python evaluation.py', eval_folder: str = 'Evaluation', pop_size: int = 128, optimization_folder: Optional[str] = None, single_folder_eval=False, overwrite_input_file=False, pareto_resolution: int = 4)[source]
          -__crossover_mutate__(individuals: List[glennopt.base.individual.Individual])[source]
          +__crossover_mutate__(individuals: List[Individual])[source]

          [summary]

          Parameters
          @@ -129,7 +147,7 @@
          -__optimize__(individuals: List[glennopt.base.individual.Individual], n_generations: int, pop_start: int, reference_points: numpy.ndarray)[source]
          +__optimize__(individuals: List[Individual], n_generations: int, pop_start: int, reference_points: ndarray)[source]

          NSGA-III main loop Note: This function will read given starting population’s results in, perform necessary crossover and mutation to generate enough individuals for the next iteration (self.pop_size)

          @@ -142,7 +160,7 @@
          -add_eval_parameters(eval_params: List[glennopt.base.parameter.Parameter])[source]
          +add_eval_parameters(eval_params: List[Parameter])[source]

          Add evaluation parameters. This is part of the initialization

          Parameters
          @@ -153,7 +171,7 @@
          -add_objectives(objectives: List[glennopt.base.parameter.Parameter])[source]
          +add_objectives(objectives: List[Parameter])[source]

          Add the objectives

          Parameters
          @@ -164,7 +182,7 @@
          -add_performance_parameters(performance_params: Optional[List[glennopt.base.parameter.Parameter]] = None)[source]
          +add_performance_parameters(performance_params: Optional[List[Parameter]] = None)[source]

          Add performance parameters

          Parameters
          @@ -201,7 +219,7 @@
          -start_doe(doe_individuals: Optional[List[glennopt.base.individual.Individual]] = None, doe_size: int = 128)[source]
          +start_doe(doe_individuals: Optional[List[Individual]] = None, doe_size: int = 128)[source]

          Starts a design of experiments. This generates the parameters for the individuals to be evaluated and executes each case. If the DOE has already started and there is an output file for an individual then the individual won’t be evaluated

          Parameters
          diff --git a/docs/build/html/modules/nsga3_ml.html b/docs/build/html/modules/nsga3_ml.html index d8fa944d6..21ec92f0b 100644 --- a/docs/build/html/modules/nsga3_ml.html +++ b/docs/build/html/modules/nsga3_ml.html @@ -4,7 +4,7 @@ - Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate — GlennOPT 1.4.* documentation + Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate — GlennOPT 1.4.5 documentation @@ -15,7 +15,9 @@ + + @@ -31,7 +33,7 @@ GlennOPT
          - 1.4.* + 1.4.5
          @@ -64,10 +66,26 @@
        • Parameter Class
      • -
      • Single Objective Differential Evolution (SODE)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
      • -
      • Non-dominated sorting optmization with Scipy
      • +
      • Single Objective Differential Evolution (SODE) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
      • +
      • Non-dominated sorting optmization with Scipy +
      • GlennOPT Helpers
        • Converting to Numpy Array
        • Copy
        • @@ -105,14 +123,14 @@
          -

          Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate

          +

          Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate

          adjoint - gradient based optimization

          class glennopt.optimizers.nsga3_ml.NSGA3_ML(eval_command: str = 'python evaluation.py', eval_folder: str = 'Evaluation', optimization_folder: Optional[str] = None, single_folder_eval: bool = False, overwrite_input_file: bool = False, linear_network: List[int] = [64, 64, 64, 64], epochs: int = 100, train_test_split: float = 0.8, pop_size: int = 32, ml_evals: int = 5)[source]
          -__crossover_mutate__(individuals: List[glennopt.base.individual.Individual])[source]
          +__crossover_mutate__(individuals: List[Individual])[source]

          [summary]

          Parameters
          @@ -129,7 +147,7 @@
          -add_eval_parameters(eval_params: List[glennopt.base.parameter.Parameter])[source]
          +add_eval_parameters(eval_params: List[Parameter])[source]

          Add evaluation parameters. This is part of the initialization

          Parameters
          @@ -140,7 +158,7 @@
          -add_objectives(objectives: List[glennopt.base.parameter.Parameter])[source]
          +add_objectives(objectives: List[Parameter])[source]

          Add the objectives

          Parameters
          @@ -151,7 +169,7 @@
          -add_performance_parameters(performance_params: Optional[List[glennopt.base.parameter.Parameter]] = None)[source]
          +add_performance_parameters(performance_params: Optional[List[Parameter]] = None)[source]

          Add performance parameters

          Parameters
          @@ -188,7 +206,7 @@
          -start_doe(doe_individuals: Optional[List[glennopt.base.individual.Individual]] = None, doe_size: int = 128)[source]
          +start_doe(doe_individuals: Optional[List[Individual]] = None, doe_size: int = 128)[source]

          Starts a design of experiments. This generates the parameters for the individuals to be evaluated and executes each case. If the DOE has already started and there is an output file for an individual then the individual won’t be evaluated

          Parameters
          @@ -202,7 +220,7 @@
          -train(individuals: List[glennopt.base.individual.Individual], retrain: bool = False) Tuple[float, float][source]
          +train(individuals: List[Individual], retrain: bool = False) Tuple[float, float][source]

          Trains the neural network to predict the output given an input

          Optimizer (LBFGS):

          https://johaupt.github.io/python/pytorch/neural%20network/optimization/pytorch_lbfgs.html

          diff --git a/docs/build/html/modules/nsopt.html b/docs/build/html/modules/nsopt.html index 88317260a..03c2c4eb0 100644 --- a/docs/build/html/modules/nsopt.html +++ b/docs/build/html/modules/nsopt.html @@ -4,7 +4,7 @@ - Non-dominated sorting optmization with Scipy — GlennOPT 1.4.* documentation + Non-dominated sorting optmization with Scipy — GlennOPT 1.4.5 documentation @@ -15,7 +15,9 @@ + + @@ -31,7 +33,7 @@ GlennOPT
          - 1.4.* + 1.4.5
          @@ -64,10 +66,26 @@
        • Parameter Class
      • -
      • Single Objective Differential Evolution (SODE)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
      • -
      • Non-dominated sorting optmization with Scipy
      • +
      • Single Objective Differential Evolution (SODE) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
      • +
      • Non-dominated sorting optmization with Scipy +
      • GlennOPT Helpers
        • Converting to Numpy Array
        • Copy
        • @@ -105,14 +123,14 @@
          -

          Non-dominated sorting optmization with Scipy

          +

          Non-dominated sorting optmization with Scipy

          adjoint - gradient based optimization

          class glennopt.optimizers.nsopt.NSOPT(eval_command: str = 'python evaluation.py', eval_folder: str = 'Evaluation', optimization_folder: Optional[str] = None, single_folder_eval: bool = False, overwrite_input_file: bool = False, linear_network: List[int] = [64, 64, 64, 64], epochs: int = 200, train_test_split: float = 0.8, pareto_resolution: int = 32, min_method: str = 'Powell')[source]
          -add_eval_parameters(eval_params: List[glennopt.base.parameter.Parameter])[source]
          +add_eval_parameters(eval_params: List[Parameter])[source]

          Add evaluation parameters. This is part of the initialization

          Parameters
          @@ -123,7 +141,7 @@
          -add_objectives(objectives: List[glennopt.base.parameter.Parameter])[source]
          +add_objectives(objectives: List[Parameter])[source]

          Add the objectives

          Parameters
          @@ -134,7 +152,7 @@
          -add_performance_parameters(performance_params: Optional[List[glennopt.base.parameter.Parameter]] = None)[source]
          +add_performance_parameters(performance_params: Optional[List[Parameter]] = None)[source]

          Add performance parameters

          Parameters
          @@ -162,7 +180,7 @@
          -start_doe(doe_individuals: Optional[List[glennopt.base.individual.Individual]] = None, doe_size: int = 128)[source]
          +start_doe(doe_individuals: Optional[List[Individual]] = None, doe_size: int = 128)[source]

          Starts a design of experiments. This generates the parameters for the individuals to be evaluated and executes each case. If the DOE has already started and there is an output file for an individual then the individual won’t be evaluated

          Parameters
          @@ -176,7 +194,7 @@
          -train(individuals: List[glennopt.base.individual.Individual], retrain: bool = False)[source]
          +train(individuals: List[Individual], retrain: bool = False)[source]

          Trains the neural network to predict the output given an input

          Parameters
          @@ -198,7 +216,7 @@
          -glennopt.optimizers.nsopt.surrogate_objective_func(x0: numpy.ndarray, model: torch.nn.modules.module.Module, reference_points: List[numpy.ndarray], dist_index: int, labels_scaler: List[sklearn.preprocessing._data.MinMaxScaler], features_scaler: List[sklearn.preprocessing._data.MinMaxScaler])[source]
          +glennopt.optimizers.nsopt.surrogate_objective_func(x0: ndarray, model: Module, reference_points: List[ndarray], dist_index: int, labels_scaler: List[MinMaxScaler], features_scaler: List[MinMaxScaler])[source]

          Objective function of adjoint using neural networks. The goal is to use this function to find values of x0 that minimize the distance to the reference point

          Parameters
          diff --git a/docs/build/html/modules/sode.html b/docs/build/html/modules/sode.html index cb7636495..e9c9dd890 100644 --- a/docs/build/html/modules/sode.html +++ b/docs/build/html/modules/sode.html @@ -4,7 +4,7 @@ - Single Objective Differential Evolution (SODE) — GlennOPT 1.4.* documentation + Single Objective Differential Evolution (SODE) — GlennOPT 1.4.5 documentation @@ -15,7 +15,9 @@ + + @@ -31,7 +33,7 @@ GlennOPT
          - 1.4.* + 1.4.5
          @@ -64,10 +66,26 @@
        • Parameter Class
      • -
      • Single Objective Differential Evolution (SODE)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
      • -
      • Non-dominated sorting optmization with Scipy
      • +
      • Single Objective Differential Evolution (SODE) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
      • +
      • Non-dominated sorting optmization with Scipy +
      • GlennOPT Helpers
        • Converting to Numpy Array
        • Copy
        • @@ -105,26 +123,26 @@
          -

          Single Objective Differential Evolution (SODE)

          +

          Single Objective Differential Evolution (SODE)

          Single objective differential evolution

          class glennopt.optimizers.sode.SODE(eval_command: str = 'python evaluation.py', eval_folder: str = 'Evaluation', pop_size: int = 32, optimization_folder: Optional[str] = None)[source]
          -__crossover_mutate__(individuals: List[glennopt.base.individual.Individual])[source]
          +__crossover_mutate__(individuals: List[Individual])[source]

          Applies Crossover and Mutate

          -__set_eval_parameters__(y: numpy.ndarray)[source]
          +__set_eval_parameters__(y: ndarray)[source]

          only call this function within the class, do not expose to outside. once we have the parameters set, we might need to set the values based on an array.

          -optimize_from_population(pop_start: int, n_generations: int, sel_type: glennopt.optimizers.sode.selection_type = selection_type.best_design)[source]
          +optimize_from_population(pop_start: int, n_generations: int, sel_type: selection_type = selection_type.best_design)[source]

          Reads the values of a population, this can be a DOE or a previous evaluation Starts the optimization

          @@ -136,7 +154,7 @@
          -select_individuals(prevIndividuals: List[glennopt.base.individual.Individual], newIndividuals: List[glennopt.base.individual.Individual])[source]
          +select_individuals(prevIndividuals: List[Individual], newIndividuals: List[Individual])[source]

          Select individuals using diversity and distance. Use this only for single objective type problems. This is not suitable for multi-objective.

          Inputs:

          previndividuals - previous population @@ -150,7 +168,7 @@

          -start_doe(doe_individuals: Optional[List[glennopt.base.individual.Individual]] = None, doe_size: int = 128)[source]
          +start_doe(doe_individuals: Optional[List[Individual]] = None, doe_size: int = 128)[source]

          Starts a design of experiments. If the DOE has already started and there is an output file for an individual then the individual won’t be evaluated

          diff --git a/docs/build/html/notes/installation.html b/docs/build/html/notes/installation.html index 9e8491985..a592a8326 100644 --- a/docs/build/html/notes/installation.html +++ b/docs/build/html/notes/installation.html @@ -4,7 +4,7 @@ - Installation — GlennOPT 1.4.* documentation + Installation — GlennOPT 1.4.5 documentation @@ -15,7 +15,9 @@ + + @@ -31,7 +33,7 @@ GlennOPT
          - 1.4.* + 1.4.5
          @@ -64,10 +66,26 @@
        • Parameter Class
      • -
      • Single Objective Differential Evolution (SODE)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
      • -
      • Non-dominated sorting optmization with Scipy
      • +
      • Single Objective Differential Evolution (SODE) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
      • +
      • Non-dominated sorting optmization with Scipy +
      • GlennOPT Helpers
        • Converting to Numpy Array
        • Copy
        • @@ -105,7 +123,7 @@
          -

          Installation

          +

          Installation

          Note

          We do not recommend installation as root user on your system’s default installation. It’s best to either use miniconda or anaconda or some virtual environment for python

          @@ -114,7 +132,7 @@

          Installation -

          Installation via Pip

          +

          Installation via Pip

          1. Install the relevant packages:

            @@ -126,7 +144,7 @@

            Installation via Pip

          -

          Installation via Source

          +

          Installation via Source

          Clone the repository and you will need the poetry package manager to build and install the project. Poetry Installation <https://python-poetry.org/docs/#installation>

          Commands for building and installing the library

          diff --git a/docs/build/html/notes/optimizers.html b/docs/build/html/notes/optimizers.html index 64caae25c..fbe18b6ca 100644 --- a/docs/build/html/notes/optimizers.html +++ b/docs/build/html/notes/optimizers.html @@ -4,7 +4,7 @@ - Optimizers — GlennOPT 1.4.* documentation + Optimizers — GlennOPT 1.4.5 documentation @@ -15,7 +15,9 @@ + + @@ -31,7 +33,7 @@ GlennOPT
          - 1.4.* + 1.4.5
          @@ -64,10 +66,26 @@
        • Parameter Class
      • -
      • Single Objective Differential Evolution (SODE)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
      • -
      • Non-dominated sorting optmization with Scipy
      • +
      • Single Objective Differential Evolution (SODE) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
      • +
      • Non-dominated sorting optmization with Scipy +
      • GlennOPT Helpers
        • Converting to Numpy Array
        • Copy
        • @@ -105,28 +123,28 @@
          -

          Optimizers

          +

          Optimizers

          -

          SODE - Single Objective Differential Evolution

          +

          SODE - Single Objective Differential Evolution

          Single objective differential evolution works by generating a random set of individuals (design of experiments) that sample your domain. So if your domain is x1 = [-4,4], x2 = [-10,10], and x3=[0,5]. Each individual will be a vector of [x1,x2,x3] with randomly generated values between the bounds for x1, x2, and x3. There’s many different ways to produce a design of experinents, but the goal is to sample the space and see what’s best performing. The best performing individuals are then mutated and crossover with each other to produce the next set. The next set is then evaluated for it’s performance and the best are selected for mutation and crossover.

          The image below illusrates and example of the cycle.

          ../_images/sode_overview.png

          Storn, R., & Price, K. (1997). Differential evolution–a simple and efficient heuristic for global optimization over continuous spaces. Journal of global optimization, 11(4), 341-359.

          -

          NSGA3 / NSGA-III- Non-Dominated Sorting Genetic Algorithm

          +

          NSGA3 / NSGA-III- Non-Dominated Sorting Genetic Algorithm

          When doing multi-objective optimization, instead of finding a single value that is your minimum, you have a minimums for all your objectives and the points in between represent a compromise between your objectives. Drawing a line through these points is the pareto front.

          An expansion of single objective differential evolution can be carried out to multiple dimensions using a sorting algorithm. The top row of the figure is similar to what you would see for single objective differential evolution. However the bottom shows a sorting strategy called Non-Dominated Sorting. This method is used to filter out designs that minimize all the objectives by ranking them. However you can end up with crowding which is when designs are clustered together near each other. This isn’t good for diversity and can lead to optimizers being stuck in local minimas. Which is why the authors do a point selection based on the closesness to a normalized pareto front.

          ../_images/nsga3_overview.png

          Yuan, Y., Xu, H., & Wang, B. (2014, July). An improved NSGA-III procedure for evolutionary many-objective optimization. In Proceedings of the 2014 annual conference on genetic and evolutionary computation (pp. 661-668).

          -

          NSGA3_ML - Non-Dominated Sorting Genetic Algorithm with Machine Learning Surrogate

          +

          NSGA3_ML - Non-Dominated Sorting Genetic Algorithm with Machine Learning Surrogate

          An expansion on the NSGA-III algorithm by incorporating a machine learning surrogate model. This surrogate model estimates the values of your objectives in the design space. NSGA is used to predict the performance inside an internal loop. The results are then evaluated by the objective function. Doing it this way minimizes the actual execution of the objective function. If your objective function is CFD, this can save some time. However there are many downsides towards doing this way. One of those is overfitting of the neural network. This can lead to inaccurate solutions near the pareto front. Over evaluation of the neural network can lead to clusterings near local minimas.

          ../_images/nsga_surrogate_overview.png
          -

          NSOPT - Non-Dominated sorting optimization using Scipy

          +

          NSOPT - Non-Dominated sorting optimization using Scipy

          This method uses parts of NSGA3 to construct objective functions that use scipy to search for designs that can find the pareto. A weighted summation method is used to construct the various objective functions and scipy.minimize is the searching stratregy for the pareto front. One of the downsides towards using a weighted sum is it’s poor ability to search for non-convex pareto fronts. This strategy is interesting because it has the capability to use gradient based minimization methods from scipy. More improvements will be made in the future to improve pareto front search capabilities.

          ../_images/nsopt_overview.png

          Weighted sum: https://www.sciencedirect.com/topics/computer-science/weighted-sum-method diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv index fe3c0687e8fa54473911f8254fdb3c3aee094697..008f8a221d4f3b612f2954834340fce9d11259d8 100644 GIT binary patch delta 12 TcmZ3^vz%vw1Ec9i$7ien8~p@I delta 12 TcmZ3^vz%vw1EbbP$7ien8^#1b diff --git a/docs/build/html/py-modindex.html b/docs/build/html/py-modindex.html index 2411a75cc..323abda74 100644 --- a/docs/build/html/py-modindex.html +++ b/docs/build/html/py-modindex.html @@ -3,7 +3,7 @@ - Python Module Index — GlennOPT 1.4.* documentation + Python Module Index — GlennOPT 1.4.5 documentation @@ -14,7 +14,9 @@ + + @@ -31,7 +33,7 @@ GlennOPT

          - 1.4.* + 1.4.5
          @@ -64,10 +66,26 @@
        • Parameter Class
      • -
      • Single Objective Differential Evolution (SODE)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
      • -
      • Non-dominated sorting optmization with Scipy
      • +
      • Single Objective Differential Evolution (SODE) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
      • +
      • Non-dominated sorting optmization with Scipy +
      • GlennOPT Helpers
        • Converting to Numpy Array
        • Copy
        • diff --git a/docs/build/html/search.html b/docs/build/html/search.html index d83a25603..a0279aac3 100644 --- a/docs/build/html/search.html +++ b/docs/build/html/search.html @@ -3,7 +3,7 @@ - Search — GlennOPT 1.4.* documentation + Search — GlennOPT 1.4.5 documentation @@ -15,7 +15,9 @@ + + @@ -31,7 +33,7 @@ GlennOPT
          - 1.4.* + 1.4.5
          @@ -64,10 +66,26 @@
        • Parameter Class
      • -
      • Single Objective Differential Evolution (SODE)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III)
      • -
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate
      • -
      • Non-dominated sorting optmization with Scipy
      • +
      • Single Objective Differential Evolution (SODE) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) +
      • +
      • Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate +
      • +
      • Non-dominated sorting optmization with Scipy +
      • GlennOPT Helpers
        • Converting to Numpy Array
        • Copy
        • diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 9863a2f9e..8a2aa47a2 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index","modules/base","modules/helpers","modules/nsga3","modules/nsga3_ml","modules/nsopt","modules/sode","notes/installation","notes/optimizers"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["index.rst","modules/base.rst","modules/helpers.rst","modules/nsga3.rst","modules/nsga3_ml.rst","modules/nsopt.rst","modules/sode.rst","notes/installation.rst","notes/optimizers.rst"],objects:{"glennopt.base":[[1,0,0,"-","individual"],[1,0,0,"-","optimizer"],[1,0,0,"-","parameter"]],"glennopt.base.individual":[[1,1,1,"","Individual"]],"glennopt.base.individual.Individual":[[1,2,1,"","IsFailed"],[1,3,1,"","__hash__"],[1,3,1,"","__str__"],[1,3,1,"","constraints"],[1,2,1,"","eval_parameter_max"],[1,2,1,"","eval_parameter_min"],[1,2,1,"","eval_parameters"],[1,3,1,"","get_eval_parameter"],[1,3,1,"","get_eval_parameter_list"],[1,3,1,"","get_objective"],[1,3,1,"","get_objectives_list"],[1,3,1,"","get_performance_parameter"],[1,3,1,"","get_performance_parameters_list"],[1,2,1,"","name"],[1,2,1,"","objectives"],[1,2,1,"","performance_parameters"],[1,2,1,"","population"],[1,3,1,"","set_eval_parameter"],[1,3,1,"","set_eval_parameter_at_indx"],[1,3,1,"","set_objective"],[1,3,1,"","set_performance_parameter"],[1,3,1,"","set_performance_parameter_at_indx"]],"glennopt.base.optimizer":[[1,1,1,"","Optimizer"]],"glennopt.base.optimizer.Optimizer":[[1,3,1,"","__check_PID_running__"],[1,3,1,"","__check_population_folder__"],[1,3,1,"","__check_process_running__"],[1,3,1,"","__create_input_file__"],[1,3,1,"","__evaluate_individual__"],[1,3,1,"","__read_input_file__"],[1,3,1,"","__read_output_file__"],[1,3,1,"","__select_cores_per_execution__"],[1,3,1,"","__write_proc_log__"],[1,3,1,"","append_history_file"],[1,3,1,"","append_restart_file"],[1,3,1,"","change_working_dir"],[1,3,1,"","create_restart"],[1,3,1,"","evaluate_population"],[1,3,1,"","from_dict"],[1,3,1,"","get_current_directory"],[1,3,1,"","load_history_file"],[1,2,1,"","parallel_settings"],[1,3,1,"","plot_2D"],[1,3,1,"","read_calculation_folder"],[1,3,1,"","read_population"],[1,3,1,"","read_restart_file"],[1,3,1,"","to_dict"],[1,3,1,"","to_pandas"],[1,3,1,"","to_tecplot"],[1,2,1,"","use_calculation_folder"]],"glennopt.base.parameter":[[1,1,1,"","Parameter"]],"glennopt.base.parameter.Parameter":[[1,3,1,"","__eq__"],[1,4,1,"","__hash__"]],"glennopt.helpers":[[2,0,0,"-","convert_to_ndarray"],[2,0,0,"-","copy"],[2,0,0,"-","mutate"],[2,0,0,"-","non_dominated_sorting"],[2,0,0,"-","parallel_settings"],[2,0,0,"-","population_distance"],[2,0,0,"-","post_processing"]],"glennopt.helpers.convert_to_ndarray":[[2,5,1,"","convert_to_ndarray"]],"glennopt.helpers.copy":[[2,5,1,"","__dir__"],[2,5,1,"","__format__"],[2,5,1,"","__init_subclass__"],[2,5,1,"","__new__"],[2,5,1,"","__reduce__"],[2,5,1,"","__reduce_ex__"],[2,5,1,"","__sizeof__"],[2,5,1,"","__subclasshook__"]],"glennopt.helpers.mutate":[[2,5,1,"","crossover"],[2,5,1,"","de_best_1_bin"],[2,5,1,"","de_dmp"],[2,5,1,"","de_dmp_bak"],[2,1,1,"","de_mutation_type"],[2,5,1,"","de_rand_1_bin"],[2,5,1,"","de_rand_1_bin_spawn"],[2,5,1,"","get_eval_param_matrix"],[2,5,1,"","get_pairs"],[2,5,1,"","mutate"],[2,1,1,"","mutation_parameters"],[2,5,1,"","set_eval_parameters"],[2,5,1,"","simple"]],"glennopt.helpers.mutate.mutation_parameters":[[2,3,1,"","__eq__"],[2,4,1,"","__hash__"]],"glennopt.helpers.non_dominated_sorting":[[2,5,1,"","__dir__"],[2,5,1,"","__format__"],[2,5,1,"","__init_subclass__"],[2,5,1,"","__new__"],[2,5,1,"","__reduce__"],[2,5,1,"","__reduce_ex__"],[2,5,1,"","__sizeof__"],[2,5,1,"","__subclasshook__"]],"glennopt.helpers.parallel_settings":[[2,1,1,"","parallel_settings"]],"glennopt.helpers.parallel_settings.parallel_settings":[[2,3,1,"","__eq__"],[2,4,1,"","__hash__"]],"glennopt.helpers.population_distance":[[2,5,1,"","distance"],[2,5,1,"","diversity"]],"glennopt.helpers.post_processing":[[2,5,1,"","get_best"],[2,5,1,"","get_pop_best"],[2,5,1,"","plot_pareto"]],"glennopt.optimizers":[[3,0,0,"-","nsga3"],[4,0,0,"-","nsga3_ml"],[5,0,0,"-","nsopt"],[6,0,0,"-","sode"]],"glennopt.optimizers.nsga3":[[3,1,1,"","NSGA3"],[3,5,1,"","random"]],"glennopt.optimizers.nsga3.NSGA3":[[3,3,1,"","__crossover_mutate__"],[3,3,1,"","__optimize__"],[3,3,1,"","add_eval_parameters"],[3,3,1,"","add_objectives"],[3,3,1,"","add_performance_parameters"],[3,2,1,"","mutation_params"],[3,3,1,"","optimize_from_population"],[3,3,1,"","start_doe"]],"glennopt.optimizers.nsga3_ml":[[4,1,1,"","NSGA3_ML"]],"glennopt.optimizers.nsga3_ml.NSGA3_ML":[[4,3,1,"","__crossover_mutate__"],[4,3,1,"","add_eval_parameters"],[4,3,1,"","add_objectives"],[4,3,1,"","add_performance_parameters"],[4,2,1,"","mutation_params"],[4,3,1,"","optimize_from_population"],[4,3,1,"","start_doe"],[4,3,1,"","train"]],"glennopt.optimizers.nsopt":[[5,1,1,"","NSOPT"],[5,5,1,"","surrogate_objective_func"]],"glennopt.optimizers.nsopt.NSOPT":[[5,3,1,"","add_eval_parameters"],[5,3,1,"","add_objectives"],[5,3,1,"","add_performance_parameters"],[5,3,1,"","optimize_from_population"],[5,3,1,"","start_doe"],[5,3,1,"","train"]],"glennopt.optimizers.sode":[[6,1,1,"","SODE"],[6,5,1,"","random"],[6,1,1,"","selection_type"]],"glennopt.optimizers.sode.SODE":[[6,3,1,"","__crossover_mutate__"],[6,3,1,"","__set_eval_parameters__"],[6,3,1,"","optimize_from_population"],[6,3,1,"","select_individuals"],[6,3,1,"","start_doe"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","property","Python property"],"3":["py","method","Python method"],"4":["py","attribute","Python attribute"],"5":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:property","3":"py:method","4":"py:attribute","5":"py:function"},terms:{"0":[1,2,3,4,5,6,8],"02":2,"1":[1,2,3,4,5,6],"10":[2,6,8],"100":4,"10000":1,"100000":1,"1008202821328":2,"1023":2,"11":[2,8],"1109":[2,6],"1145":2,"128":[3,4,5,6],"149":2,"16":2,"1691":6,"1698":6,"1945":8,"1997":[2,8],"2":[0,1,2,6],"20":1,"200":5,"2005":6,"2007":2,"2009":2,"2014":[2,8],"2017":[2,6],"20network":4,"239":2,"247":2,"2576768":2,"2598342":2,"26944":[2,6],"26964":[2,6],"2773825":[2,6],"2d":1,"3":2,"32":[4,5,6],"341":[2,8],"359":[2,8],"4":[2,3,8],"450":1,"5":[1,2,4,6,8],"6":2,"618":2,"622":2,"64":[4,5],"661":[2,8],"668":[2,8],"7":2,"7434625df79d820cd4d9":2,"8":[2,4,5],"9":2,"abstract":[1,2],"byte":2,"case":[3,4,5],"class":[0,2,3,4,5,6],"default":[1,2,3,4,5,7],"do":[0,1,6,7,8],"export":1,"float":[1,2,4,5],"function":[0,1,2,3,5,6,8],"import":2,"int":[1,2,3,4,5,6],"new":[1,2,4,5,6],"null":1,"return":[1,2,3,4,5],"switch":2,"true":[1,2,4,5],"try":1,"while":0,A:[1,2,6,8],For:[1,2],If:[0,1,2,3,4,5,6,8],In:[0,1,8],It:[0,2,7],One:[0,8],The:[0,2,5,8],There:8,These:[0,2],Will:1,With:6,__check_pid_running__:1,__check_population_folder__:1,__check_process_running__:1,__create_input_file__:1,__crossover_mutate__:[3,4,6],__dir__:2,__eq__:[1,2],__evaluate_individual__:1,__format__:2,__hash__:[1,2],__init_subclass__:2,__new__:2,__optimize__:3,__read_input_file__:1,__read_output_file__:1,__reduce__:2,__reduce_ex__:2,__select_cores_per_execution__:1,__set_eval_parameters__:6,__sizeof__:2,__str__:1,__subclasscheck__:2,__subclasshook__:2,__write_proc_log__:1,_data:5,abc:2,abcmeta:2,abil:8,about:1,accept:2,access:[2,6],accur:[2,5],actual:8,ad:1,add:[1,3,4,5],add_eval_paramet:[3,4,5],add_object:[3,4,5],add_performance_paramet:[3,4,5],addit:1,adjoint:[4,5],after:2,algorithm:[0,2,6],all:[0,1,2,5,8],allow:1,along:5,alreadi:[1,3,4,5,6],also:[0,1],alwai:2,amplif:2,an:[0,1,2,3,4,5,6,7,8],anaconda:7,ani:1,annual:8,anyth:1,ao:2,append:1,append_history_fil:1,append_restart_fil:1,appli:[2,6],applic:2,ar:[0,1,2,8],archiv:2,arg:2,argument:2,arrai:[1,5,6],assign:1,author:8,automat:0,averag:1,axi:1,b:[2,8],base:[0,2,3,4,5,6,8],becaus:[5,8],been:1,being:[1,2,8],below:[7,8],berlin:2,best:[0,1,2,7,8],best_design:6,best_front:2,best_ind:1,best_individu:2,best_individual_compromis:2,best_individual_objective1:2,better:[0,2],between:[0,1,2,8],biggest:0,bio:2,blend:2,bool:[1,2,4,5],bottom:8,bound:[1,8],breturnpanda:1,build:7,c:[1,2],cach:2,calcuat:1,calcul:[0,1,2],call:[0,1,2,6,8],callabl:2,can:[0,1,2,3,4,5,6,7,8],cannot:0,capabl:8,carri:[2,8],cfd:[0,8],chakraborti:6,chanc:2,chang:1,change_working_dir:1,check:[0,1],chi:2,children:2,chosen:2,citat:[2,6],citaton:2,clone:7,closes:8,cluster:8,code:[0,2],coeffici:1,column:1,com:[2,7,8],combin:2,command:7,comp_individu:2,compromis:[2,8],comput:[1,2,6,8],concurr:2,concurrent_execut:2,confer:[2,8],congr:6,constr_greater_than:1,constr_less_than:1,constraint:[0,1],constraint_greater_than:1,constraint_less_than:1,construct:8,contain:[0,1,2],content:2,continu:[2,6,8],control:2,convert:1,convert_to_ndarrai:2,convex:8,copi:[0,1],copytre:2,core:2,cores_per_execut:[1,2],correspond:1,could:[1,2],crash:0,creat:[0,1,2,4,5,7],create_restart:1,cross:2,crossov:[2,3,6,8],crowd:8,csv:[1,2],current:1,custom:2,cycl:8,da:[2,6],dash:[2,6],dat:[0,1],data:[0,2,4,5],databas:2,database_filenam:2,dataclass:1,datafram:1,de:2,de_1_rand_bin:2,de_best_1_bin:2,de_dmp:2,de_dmp_bak:2,de_mutation_typ:2,de_rand_1_bin:2,de_rand_1_bin_spawn:2,debug:0,defin:[1,2],depend:2,describ:[3,4,6],descript:[1,2,3,4,5],design:[0,1,2,3,4,5,6,8],dest:2,destin:2,dict:[1,2],dictionari:1,did:0,differ:[2,8],differenti:[0,2],dimens:8,dir:2,direct:0,directli:[0,1],directori:[1,2],dist_index:5,distanc:[1,5,6],divers:[1,2,6,8],doc:[0,7,8],docker:7,doe:[0,1,2,3,4,5,6],doe_individu:[3,4,5,6],doe_siz:[3,4,5,6],doi:[2,6],domain:8,domin:0,downsid:8,draw:8,dummi:1,dynam:2,e:[1,2],each:[1,2,3,4,5,8],earli:2,effici:[2,8],either:[0,7],empti:[1,2],end:8,enough:3,entir:1,enumer:6,environ:[2,7],epoch:[4,5],error:1,estim:[0,8],etc:1,eval:1,eval_command:[1,3,4,5,6],eval_fold:[1,3,4,5,6],eval_param:[3,4,5],eval_paramet:[1,2],eval_parameter_max:1,eval_parameter_min:1,evalu:[0,1,2,3,4,5,6,8],evaluate_popul:1,evaluaton:2,even:[0,2],everi:[0,5],evol:6,evolut:[0,2],evolutionari:[2,8],exampl:[1,2,8],except:[1,5],exectuion:2,execut:[0,2,3,4,5,8],execution_timeout:2,exist:[1,4,5],expans:8,experi:[3,4,5,6,8],experin:8,explor:2,exponenti:1,expos:6,extend:2,extra:0,f:[0,2],f_1:0,f_2:0,factor:2,fail:[0,1],fals:[1,2,3,4,5],features_scal:5,fifth:2,figur:8,file:[0,1,2,3,4,5,6],filter:8,find:[1,5,8],first:2,first_front_onli:2,fit:5,folder:[1,3,4,5,6],follow:[0,2,7],format:1,format_spec:2,formatt:2,found:[0,1,7],freed:1,from:[0,1,2,8],from_dict:1,front:[2,5,8],futur:8,gecco:2,gener:[0,2,3,4,5,6,8],genet:[0,2],germani:2,get:[1,2,3,4],get_best:2,get_current_directori:1,get_eval_param_matrix:2,get_eval_paramet:1,get_eval_parameter_list:1,get_object:1,get_objectives_list:1,get_pair:2,get_performance_paramet:1,get_performance_parameters_list:1,get_pop_best:2,ghosh:6,gist:2,github:[2,4],given:[1,2,3,4,5],glennopt:[3,4,5,6,7],global:[2,8],go:2,goal:[5,8],goe:0,good:[1,2,8],gosh:2,gradient:[0,4,5,8],greedi:2,group:0,guess:5,guid:2,h:[2,8],ha:[1,3,4,5,6,8],handl:6,happen:1,hash:1,hasn:1,have:[0,6,8],hear:0,help:2,helper:0,herehttp:7,heurist:[2,8],higher:2,highest:2,histori:1,how:[0,2],howev:[0,8],html:[0,4,8],http:[0,2,4,6,7,8],hu:2,i:[1,2],icnc:2,id:1,ieee:[2,6],ignor:2,ignore_cor:2,iii:[0,2],illusr:8,imag:[7,8],implement:2,improv:[2,6,8],inaccur:8,includ:[0,1],include_constraint:1,incorpor:8,ind000:[0,1],ind_nam:1,indeici:2,index:[0,1,2],indic:2,individu:[2,3,4,5,6,7,8],individual_directori:1,indx:1,inherit:1,initi:[3,4,5],input:[0,1,2,3,4,5,6],insid:8,inspir:2,instal:0,instanti:1,instead:[1,8],integ:[1,2],intellig:2,intercept:5,interest:8,intern:[2,8],interv:[3,6],invok:2,io:4,isfail:1,isn:[1,8],issubclass:2,iter:[3,5],its:2,j:2,job:0,johaupt:4,journal:[2,8],juli:8,just:2,k:[2,6,8],keep:[0,1,2],kept:1,kill:1,kind:2,konar:6,kwarg:2,labels_scal:5,launch:0,lbfg:4,lead:[2,8],learn:0,length:2,less:2,let:[0,1],librari:7,limit:8,line:[1,8],linear_network:[4,5],link:2,list:[1,2,3,4,5,6],listdir:2,load_history_fil:1,local:[0,2,8],log:1,longer:[1,5],loop:[2,3,8],loss:[4,5],lot:0,lower:1,lower_valu:1,lowest:2,machin:[0,2],machine_filenam:2,machinefil:2,made:8,mai:[0,2],main:3,make:1,mallipeddi:[2,6],manag:7,mani:[0,2,8],map:2,martinu:2,match:1,math:0,matrix:[1,2],matter:1,max:2,max_par:2,max_valu:1,maximum:[1,2],mean:[2,5],median:2,memori:2,messag:1,metadata:2,method:[0,1,2,8],might:6,min:2,min_method:5,min_par:2,min_valu:1,mind:0,miniconda:7,minim:[0,1,5,8],minima:[2,8],minimum:[1,2,8],minmaxscal:5,minut:2,ml_eval:4,model:[0,4,5,8],modifi:[2,6],modul:[0,5],more:[2,5,8],mse:1,mu:2,multi:[0,2,6,8],multipl:8,must:2,mutat:[3,4,6,8],mutation_param:[3,4],mutation_paramet:[2,3,4],mutation_typ:2,n:1,n_gener:[3,4,5,6],name:1,natur:2,ncrossov:2,ndarrai:[1,2,3,5,6],necessari:3,need:[0,6,7],network:[4,5,8],neural:[4,5,8],never:1,new_dir:1,newindividu:[2,6],next:[2,3,8],nindividu:2,ninteg:1,nmutat:2,nn:5,nois:[2,6],noisi:6,non:0,non_dominated_sort:2,none:[1,2,3,4,5,6],normal:[2,8],note:[2,3],noth:[1,2],notimpl:2,now:0,np:[1,2,5],nparent:2,ns:2,nsga3:[2,3],nsga3_ml:4,nsga:[0,2],nsopt:[0,5],num_children:2,number:[0,1,2,3,4,5,6],numpi:[1,3,5,6],obj1_nam:1,obj2_nam:1,object:[0,1,2,3,4,5],objective1_index:2,objective2:2,objective2_index:2,objective3:2,occur:0,onc:6,one:0,onli:[1,2,5,6],opt:2,opt_fold:1,optim:[2,3,4,5,6],optimization_fold:[3,4,5,6],optimization_setup:0,optimize_from_popul:[3,4,5,6],option:[1,2,3,4,5,6],optmiz:0,org:[0,2,6,7,8],origin:2,os:2,other:[0,1,2,8],otherwis:2,out:[0,1,8],outcom:2,output:[0,1,3,4,5,6],outsid:6,over:[2,8],overfit:8,overrid:2,overridden:2,overwrite_input_fil:[1,3,4,5],p:1,packag:7,page:0,pair:2,panda:1,parallel:1,parallel_set:[1,2],param:2,paramet:[0,2,3,4,5,6],paramt:1,parent:2,parent_indx_se:2,pareto:[5,8],pareto_resolut:[3,5],pars:1,part:[2,3,4,5,8],particl:2,particular:1,pass:1,past:2,path:[1,2],pd:1,penalti:1,peopl:0,per:[0,2],percentag:2,perform:[0,1,2,3,4,5,8],performance_param:[3,4,5],performance_paramet:[1,2],person:0,perturb:2,pickl:2,pid:1,pid_list:1,pleas:[0,7],plot:1,plot_2d:1,plot_pareto:2,poetri:7,point:[5,8],poll:1,poor:8,pop000:0,pop001:2,pop002:2,pop003:2,pop010:0,pop:[0,1,2],pop_fold:2,pop_numb:1,pop_siz:[2,3,4,6],pop_start:[3,4,5,6],popen:1,popul:[0,1,3,4,5,6],population_dist:2,population_numb:1,population_track:1,post_process:2,powel:5,pp:[2,6,8],pre:2,predict:[4,5,8],prefer:2,preprocess:5,presenc:[2,6],pressur:0,previndividu:6,previou:[3,4,5,6],price:[2,8],print:1,probabl:1,problem:[0,1,2,6],proc:6,procedur:[2,8],proceed:8,process:1,produc:[0,8],product:7,project:7,properti:[0,1,3,4],protocol:2,provid:[0,1],purpos:0,put:0,py:[0,3,4,5,6],python:[3,4,5,6,7],pytorch:4,pytorch_lbfg:4,qsub:0,quit:0,r:[2,6,8],rais:[1,5],rand:2,random:[2,3,6,8],randomli:[2,8],rang:2,rank:8,rate:2,read:[1,3,4,5,6],read_calculation_fold:[1,2],read_popul:1,read_restart_fil:1,reccomend:0,receiv:2,recommend:7,record:0,refer:[5,8],reference_point:[3,5],rel:1,relat:0,relev:7,renorm:5,replac:1,repositori:7,repres:[0,1,2,8],represent:2,restart:[0,1],result:[0,1,3,8],retrain:[4,5],roll:2,root:7,rough:0,row:8,rtype:2,rubric:2,run:[0,1,3,4,6],s:[0,1,2,3,6,7,8],sai:0,same:1,sampl:[2,8],save:[0,8],scalar:2,scan:0,scatter:1,scienc:8,sciencedirect:8,scipi:0,script:[0,1],search:[0,1,8],see:[1,2,8],sel_typ:6,select:[2,6,8],select_individu:6,selection_typ:6,self:[1,2,3],sep:6,server:0,set:[1,5,6,8],set_eval_paramet:[1,2],set_eval_parameter_at_indx:1,set_object:1,set_performance_paramet:1,set_performance_parameter_at_indx:1,setup:7,share:0,should:2,show:8,sigma:2,signatur:2,signific:0,similar:8,simpl:[0,2,8],simul:[0,1],singl:[0,1,2],single_folder_ev:[1,3,4,5],size:[1,2],skew:1,sklearn:5,so:[0,2,8],sode:[0,2],solut:8,solv:0,some:[0,2,7,8],sort:0,sourc:[1,2,3,4,5,6],space:[0,2,8],spawn:2,specifi:[0,1],speed:0,springer:2,src:2,start:[0,1,3,4,5,6],start_do:[3,4,5,6],step:[2,7],still:1,stop:0,storag:0,store:2,storn:[2,8],str:[1,2,3,4,5,6],strain:1,strategi:[2,8],stratregi:8,stress:1,string:1,stuck:[2,8],style:2,subclass:2,subprocess:1,success:7,suitabl:6,sum:[5,8],summari:[3,4],summat:8,sure:1,surrog:0,surrogate_objective_func:5,swarm:2,symlink:2,system:7,t:[1,2,3,4,5,6,8],take:[0,2,5],tan:2,tec:1,tecplot:1,term:2,test:[4,5],test_loss:1,than:2,them:[2,8],thi:[0,1,2,3,4,5,6,8],think:0,those:[2,8],through:[2,3,8],time:8,timeout:2,to_dict:1,to_panda:1,to_tecplot:1,togeth:8,top:8,topic:8,torch:5,toward:8,track:[0,1,2],train:[4,5],train_loss:1,train_test_split:[4,5],tree:2,trend:0,tupl:[1,2,4,5],tutori:0,two:[0,1,2],txt:[0,1,2],type:[1,2,3,4,5,6],typic:[1,2],u:6,understand:0,unexpect:0,uniform:2,up:8,updat:[0,1,2],upper:1,upper_valu:1,us:[0,1,2,5,6,7],use_calculation_fold:1,user:[2,7],val:1,valu:[0,1,2,3,4,5,6,8],value_if_fail:1,variabl:[1,2],variou:8,vector:[0,8],version:[2,6],violat:1,virtual:7,visit:2,vol:6,volum:1,vs:2,wa:[0,1],wai:8,wait:0,wang:[2,8],want:2,we:[1,6,7],weight:8,well:1,what:[2,8],when:[0,2,8],where:[0,1,2],whether:[1,2],which:[0,1,2,8],why:8,within:[0,1,6],won:[2,3,4,5,6],work:[1,8],would:[0,2,8],write:1,www:[7,8],x0:5,x1:[2,8],x2:[2,8],x3:8,x:[0,1,2,3,6],x_1:0,x_2:0,x_3:0,xbound:1,xlim:1,xmax:2,xmin:2,xu:[2,8],y1:2,y2:2,y:[1,2,6,8],ybound:1,yc9nwvlpepi:8,yield:0,ylim:1,you:[0,1,2,7,8],your:[0,2,7,8],youtu:8,yuan:[2,8],zeng:2},titles:["GlennOPT Documentation","GlennOPT base classes","GlennOPT Helpers","Non-dominated sorting genetic algorithm (NSGA-III)","Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate","Non-dominated sorting optmization with Scipy","Single Objective Differential Evolution (SODE)","Installation","Optimizers"],titleterms:{"class":1,"super":0,about:0,advanc:0,algorithm:[3,4,8],ani:0,arrai:2,background:0,base:1,comput:0,convert:2,copi:2,differenti:[6,8],distanc:2,document:0,domin:[2,3,4,5,8],evolut:[6,8],folder:0,genet:[3,4,8],glennopt:[0,1,2],helper:2,iii:[3,4,8],indic:0,individu:[0,1],instal:7,learn:[4,8],machin:[4,8],mutat:2,na:0,nasa:0,non:[2,3,4,5,8],note:0,nsga3:8,nsga3_ml:8,nsga:[3,4,8],nsopt:8,numpi:2,object:[6,8],optim:[0,1,8],optmiz:5,packag:0,parallel:2,paramet:1,pip:7,popul:2,post:2,process:2,queu:0,refer:0,scipi:[5,8],set:2,singl:[6,8],slurm:0,sode:[6,8],sort:[2,3,4,5,8],sourc:7,structur:0,surrog:[4,8],system:0,tabl:0,torqu:0,us:8,via:7}}) \ No newline at end of file +Search.setIndex({"docnames": ["index", "modules/base", "modules/helpers", "modules/nsga3", "modules/nsga3_ml", "modules/nsopt", "modules/sode", "notes/installation", "notes/optimizers"], "filenames": ["index.rst", "modules/base.rst", "modules/helpers.rst", "modules/nsga3.rst", "modules/nsga3_ml.rst", "modules/nsopt.rst", "modules/sode.rst", "notes/installation.rst", "notes/optimizers.rst"], "titles": ["GlennOPT Documentation", "GlennOPT base classes", "GlennOPT Helpers", "Non-dominated sorting genetic algorithm (NSGA-III)", "Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate", "Non-dominated sorting optmization with Scipy", "Single Objective Differential Evolution (SODE)", "Installation", "Optimizers"], "terms": {"i": [0, 1, 2, 3, 4, 5, 6, 8], "gener": [0, 2, 3, 4, 5, 6, 8], "purpos": 0, "multi": [0, 2, 6, 8], "object": [0, 1, 2, 3, 4, 5], "simul": [0, 1], "local": [0, 2, 8], "One": [0, 8], "biggest": 0, "problem": [0, 1, 2, 6], "when": [0, 2, 8], "mani": [0, 2, 8], "design": [0, 1, 2, 3, 4, 5, 6, 8], "ar": [0, 1, 2, 8], "unexpect": 0, "occur": 0, "server": 0, "crash": 0, "out": [0, 1, 8], "storag": 0, "updat": [0, 1, 2], "stop": 0, "job": 0, "from": [0, 1, 2, 8], "execut": [0, 2, 3, 4, 5, 8], "thi": [0, 1, 2, 3, 4, 5, 6, 8], "mind": 0, "an": [0, 1, 2, 3, 4, 5, 6, 7, 8], "you": [0, 1, 2, 7, 8], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8], "restart": [0, 1], "scan": 0, "either": [0, 7], "doe": [0, 1, 2, 3, 4, 5, 6], "pop": [0, 1, 2], "did": 0, "yield": 0, "output": [0, 1, 3, 4, 5, 6], "txt": [0, 1, 2], "file": [0, 1, 2, 3, 4, 5, 6], "": [0, 1, 2, 3, 6, 7, 8], "evalu": [0, 1, 2, 3, 4, 5, 6, 8], "script": [0, 1], "The": [0, 2, 5, 8], "number": [0, 1, 2, 3, 4, 5, 6], "produc": [0, 8], "quit": 0, "signific": 0, "It": [0, 2, 7], "save": [0, 8], "copi": [0, 1], "everi": [0, 5], "singl": [0, 1, 2], "function": [0, 1, 2, 3, 5, 6, 8], "us": [0, 1, 2, 5, 6, 7], "data": [0, 2, 4, 5], "machin": [0, 2], "learn": 0, "while": 0, "mai": [0, 2], "result": [0, 1, 3, 8], "some": [0, 2, 7, 8], "even": [0, 2], "fail": [0, 1], "These": [0, 2], "extra": 0, "debug": 0, "understand": 0, "trend": 0, "your": [0, 2, 7, 8], "space": [0, 2, 8], "solv": 0, "cfd": [0, 8], "cannot": 0, "provid": [0, 1], "direct": 0, "gradient": [0, 4, 5, 8], "relat": 0, "paramet": [0, 2, 3, 4, 5, 6], "best": [0, 1, 2, 7, 8], "method": [0, 1, 2, 8], "do": [0, 1, 6, 7, 8], "would": [0, 2, 8], "one": 0, "surrog": 0, "model": [0, 4, 5, 8], "nsopt": [0, 5], "specifi": [0, 1], "minim": [0, 1, 5, 8], "scipi": 0, "estim": [0, 8], "http": [0, 2, 4, 6, 7, 8], "doc": [0, 7, 8], "org": [0, 2, 6, 7, 8], "html": [0, 4, 8], "In": [0, 1, 8], "code": [0, 2], "hear": 0, "lot": 0, "repres": [0, 1, 2, 8], "so": [0, 2, 8], "let": [0, 1], "take": [0, 2, 5], "simpl": [0, 2, 8], "f": [0, 2], "x": [0, 1, 2, 3, 6], "x_1": 0, "x_2": 0, "x_3": 0, "2": [0, 1, 2, 6], "vector": [0, 8], "contain": [0, 1, 2], "class": [0, 2, 3, 4, 5, 6], "perform": [0, 1, 2, 3, 4, 5, 8], "valu": [0, 1, 2, 3, 4, 5, 6, 8], "constraint": [0, 1], "sai": 0, "includ": [0, 1], "two": [0, 1, 2], "f_1": 0, "math": 0, "f_2": 0, "where": [0, 1, 2], "share": 0, "between": [0, 1, 2, 8], "If": [0, 1, 2, 3, 4, 5, 6, 8], "have": [0, 6, 8], "other": [0, 1, 2, 8], "pressur": 0, "speed": 0, "also": [0, 1], "track": [0, 1, 2], "within": [0, 1, 6], "how": [0, 2], "per": [0, 2], "popul": [0, 1, 3, 4, 5, 6], "run": [0, 1, 3, 4, 6], "think": 0, "keep": [0, 1, 2], "peopl": 0, "group": 0, "which": [0, 1, 2, 8], "record": 0, "person": 0, "all": [0, 1, 2, 5, 8], "properti": [0, 1, 3, 4], "now": 0, "rough": 0, "pleas": [0, 7], "check": [0, 1], "tutori": 0, "recommend": [0, 7], "follow": [0, 2, 7], "calcul": [0, 1, 2], "creat": [0, 1, 2, 4, 5, 7], "automat": 0, "howev": [0, 8], "need": [0, 6, 7], "put": 0, "ind000": [0, 1], "py": [0, 3, 4, 5, 6], "input": [0, 1, 2, 3, 4, 5, 6], "dat": [0, 1], "goe": 0, "pop000": 0, "pop010": 0, "call": [0, 1, 2, 6, 8], "optimization_setup": 0, "start": [0, 1, 3, 4, 5, 6], "wa": [0, 1], "found": [0, 1, 7], "launch": 0, "directli": [0, 1], "wait": 0, "qsub": 0, "better": [0, 2], "instal": 0, "base": [0, 2, 4, 5, 6, 8], "differenti": [0, 2], "evolut": [0, 2], "sode": [0, 2], "non": 0, "domin": 0, "sort": 0, "genet": [0, 2], "algorithm": [0, 2, 6], "nsga": [0, 2], "iii": [0, 2], "optmiz": 0, "helper": 0, "index": [0, 1, 2], "modul": [0, 5], "search": [0, 1, 8], "page": 0, "eval_paramet": [1, 2], "list": [1, 2, 3, 4, 5, 6], "performance_paramet": [1, 2], "sourc": [1, 2, 3, 4, 5, 6], "each": [1, 2, 3, 4, 5, 8], "set": [1, 5, 6, 8], "well": 1, "addit": 1, "kept": 1, "isfail": 1, "bool": [1, 2, 4, 5], "make": 1, "sure": 1, "hasn": 1, "t": [1, 2, 3, 4, 5, 6, 8], "return": [1, 2, 3, 4, 5], "true": [1, 2, 4, 5], "fals": [1, 2, 3, 4, 5], "pass": 1, "type": [1, 2, 3, 4, 5, 6], "__hash__": [1, 2], "hash": 1, "self": [1, 2, 3], "__str__": 1, "str": [1, 2, 3, 4, 5, 6], "ndarrai": [1, 2, 3, 5, 6], "get": [1, 2, 3, 4], "matrix": [1, 2], "np": [1, 2, 5], "eval_parameter_max": 1, "maximum": [1, 2], "numpi": 1, "arrai": [1, 5, 6], "eval_parameter_min": 1, "minimum": [1, 2, 8], "paramt": 1, "eval": 1, "get_eval_paramet": 1, "name": 1, "none": [1, 2, 3, 4, 5, 6], "get_eval_parameter_list": 1, "get_object": 1, "exampl": [1, 2, 8], "1": [1, 2, 3, 4, 5, 6], "get_objectives_list": 1, "get_performance_paramet": 1, "given": [1, 2, 3, 4, 5], "get_performance_parameters_list": 1, "For": [1, 2], "include_constraint": 1, "option": [1, 2, 3, 4, 5, 6], "whether": [1, 2], "skew": 1, "violat": 1, "default": [1, 2, 3, 4, 5, 7], "c": [1, 2], "float": [1, 2, 4, 5], "penalti": 1, "coeffici": 1, "0": [1, 2, 3, 4, 5, 6, 8], "5": [1, 2, 4, 6, 8], "int": [1, 2, 3, 4, 5, 6], "exponenti": 1, "descript": [1, 2, 3, 4, 5], "set_eval_paramet": [1, 2], "val": 1, "set_eval_parameter_at_indx": 1, "indx": 1, "particular": 1, "replac": 1, "set_object": 1, "assign": 1, "typic": [1, 2], "450": 1, "set_performance_paramet": 1, "set_performance_parameter_at_indx": 1, "A": [1, 2, 6, 8], "abstract": [1, 2], "inherit": 1, "never": 1, "instanti": 1, "eval_command": [1, 3, 4, 5, 6], "eval_fold": [1, 3, 4, 5, 6], "opt_fold": 1, "single_folder_ev": [1, 3, 4, 5], "overwrite_input_fil": [1, 3, 4, 5], "__check_pid_running__": 1, "pid": 1, "process": 1, "id": 1, "try": 1, "kill": 1, "error": 1, "integ": [1, 2], "correspond": 1, "still": 1, "__check_population_folder__": 1, "population_numb": 1, "format": 1, "folder": [1, 3, 4, 5, 6], "20": 1, "rel": 1, "path": [1, 2], "__check_process_running__": 1, "p": 1, "popen": 1, "poll": 1, "subprocess": 1, "__create_input_file__": 1, "read": [1, 3, 4, 5, 6], "Will": 1, "onli": [1, 2, 5, 6], "alreadi": [1, 3, 4, 5, 6], "exist": [1, 4, 5], "n": [1, 2], "print": 1, "__evaluate_individual__": 1, "individual_directori": 1, "cores_per_execut": [1, 2], "tupl": [1, 2, 4, 5], "directori": [1, 2], "log": 1, "messag": 1, "string": 1, "__read_input_file__": 1, "e": [1, 2], "line": [1, 8], "pars": 1, "__read_output_file__": 1, "__select_cores_per_execution__": 1, "pid_list": 1, "being": [1, 2, 8], "find": [1, 5, 8], "ha": [1, 3, 4, 5, 6, 8], "been": 1, "freed": 1, "longer": [1, 5], "__write_proc_log__": 1, "ind_nam": 1, "write": 1, "ninteg": 1, "append_history_fil": 1, "best_ind": 1, "divers": [1, 2, 6, 8], "distanc": [1, 5, 6], "train_loss": 1, "test_loss": 1, "mse": 1, "histori": 1, "csv": [1, 2], "averag": 1, "append_restart_fil": 1, "append": 1, "population_track": 1, "matter": 1, "instead": [1, 8], "ani": 1, "size": [1, 2], "ad": 1, "change_working_dir": 1, "new_dir": 1, "chang": 1, "current": 1, "work": [1, 8], "new": [1, 2, 4, 5, 6], "create_restart": 1, "evaluate_popul": 1, "see": [1, 2, 8], "noth": [1, 2], "from_dict": 1, "dict": [1, 2], "dictionari": 1, "to_dict": 1, "get_current_directori": 1, "load_history_fil": 1, "parallel_set": [1, 2], "parallel": 1, "dataclass": 1, "plot_2d": 1, "obj1_nam": 1, "obj2_nam": 1, "xlim": 1, "ylim": 1, "2d": 1, "plot": 1, "scatter": 1, "axi": 1, "y": [1, 2, 6, 8], "xbound": 1, "ybound": 1, "read_calculation_fold": [1, 2], "entir": 1, "datafram": 1, "rais": [1, 5], "except": [1, 5], "could": [1, 2], "read_popul": 1, "we": [1, 6, 7], "read_restart_fil": 1, "about": 1, "same": 1, "happen": 1, "add": [1, 3, 4, 5], "column": 1, "match": 1, "null": 1, "dummi": 1, "empti": [1, 2], "export": 1, "to_panda": 1, "pop_numb": 1, "breturnpanda": 1, "panda": 1, "pd": 1, "to_tecplot": 1, "convert": 1, "tecplot": 1, "tec": 1, "use_calculation_fold": 1, "allow": 1, "defin": [1, 2], "calcuat": 1, "min_valu": 1, "max_valu": 1, "value_if_fail": 1, "10000": 1, "constraint_greater_than": 1, "constraint_less_than": 1, "comput": [1, 2, 6, 8], "stress": 1, "strain": 1, "volum": 1, "etc": 1, "anyth": 1, "isn": [1, 8], "lower_valu": 1, "lower": 1, "bound": [1, 8], "variabl": [1, 2], "upper_valu": 1, "upper": 1, "100000": 1, "probabl": 1, "good": [1, 2, 8], "constr_less_than": 1, "constr_greater_than": 1, "__eq__": [1, 2], "convert_to_ndarrai": 2, "scalar": 2, "param": 2, "src": 2, "dest": 2, "destin": 2, "symlink": 2, "accept": 2, "depend": 2, "metadata": 2, "origin": 2, "link": 2, "tree": 2, "ignor": 2, "must": 2, "callabl": 2, "receiv": 2, "its": 2, "argument": 2, "visit": 2, "copytre": 2, "content": 2, "o": 2, "listdir": 2, "__dir__": 2, "dir": 2, "implement": 2, "__format__": 2, "format_spec": 2, "formatt": 2, "__init_subclass__": 2, "subclass": 2, "overridden": 2, "extend": 2, "__new__": 2, "arg": 2, "kwarg": 2, "help": 2, "accur": [2, 5], "signatur": 2, "__reduce__": 2, "pickl": 2, "__reduce_ex__": 2, "protocol": 2, "__sizeof__": 2, "memori": 2, "byte": 2, "__subclasshook__": 2, "overrid": 2, "custom": 2, "issubclass": 2, "invok": 2, "earli": 2, "abc": 2, "abcmeta": 2, "__subclasscheck__": 2, "should": 2, "notimpl": 2, "normal": [2, 8], "otherwis": 2, "outcom": 2, "cach": 2, "crossov": [2, 3, 6, 8], "x1": [2, 8], "x2": [2, 8], "individu": [2, 3, 4, 5, 6, 7, 8], "differ": [2, 8], "y1": 2, "after": 2, "y2": 2, "de_best_1_bin": 2, "6": 2, "7": 2, "appli": [2, 6], "de_1_rand_bin": 2, "strategi": [2, 8], "lead": [2, 8], "citaton": 2, "gist": 2, "github": [2, 4], "com": [2, 7, 8], "martinu": 2, "7434625df79d820cd4d9": 2, "storn": [2, 8], "r": [2, 6, 8], "price": [2, 8], "k": [2, 6, 8], "1997": [2, 8], "effici": [2, 8], "heurist": [2, 8], "global": [2, 8], "optim": [2, 3, 4, 5, 6], "over": [2, 8], "continu": [2, 6, 8], "journal": [2, 8], "11": [2, 8], "4": [2, 3, 8], "341": [2, 8], "359": [2, 8], "doi": [2, 6], "10": [2, 6, 8], "1023": 2, "1008202821328": 2, "ao": 2, "chi": 2, "h": [2, 8], "2009": 2, "parent": 2, "fifth": 2, "intern": [2, 8], "confer": [2, 8], "natur": 2, "618": 2, "622": 2, "1109": [2, 6], "icnc": 2, "149": 2, "those": [2, 8], "amplif": 2, "factor": 2, "de_dmp": 2, "mean": [2, 5], "perturb": 2, "less": 2, "greedi": 2, "than": 2, "de": 2, "chanc": 2, "stuck": [2, 8], "minima": [2, 8], "prefer": 2, "explor": 2, "randomli": [2, 8], "switch": 2, "sampl": [2, 8], "uniform": 2, "random": [2, 3, 6, 8], "3": 2, "b": [2, 8], "blend": 2, "rate": 2, "chosen": 2, "median": 2, "9": 2, "gosh": 2, "da": [2, 6], "mallipeddi": [2, 6], "dash": [2, 6], "2017": [2, 6], "modifi": [2, 6], "select": [2, 6, 8], "presenc": [2, 6], "nois": [2, 6], "ieee": [2, 6], "access": [2, 6], "26944": [2, 6], "26964": [2, 6], "2773825": [2, 6], "term": 2, "de_dmp_bak": 2, "num_children": 2, "version": [2, 6], "archiv": 2, "next": [2, 3, 8], "children": 2, "de_mutation_typ": 2, "user": [2, 7], "what": [2, 8], "kind": 2, "de_rand_1_bin": 2, "rand": 2, "cross": 2, "de_rand_1_bin_spawn": 2, "spawn": 2, "more": [2, 5, 8], "combin": 2, "style": 2, "min_par": 2, "max_par": 2, "lowest": 2, "highest": 2, "rang": 2, "part": [2, 3, 4, 5, 8], "want": 2, "get_eval_param_matrix": 2, "xmin": 2, "min": 2, "evaluaton": 2, "first": 2, "xmax": 2, "max": 2, "get_pair": 2, "nindividu": 2, "nparent": 2, "parent_indx_se": 2, "control": 2, "length": 2, "pre": 2, "indeici": 2, "pair": 2, "mu": 2, "02": 2, "sigma": 2, "percentag": 2, "step": [2, 7], "mutation_paramet": [2, 3, 4], "mutation_typ": 2, "8": [2, 4, 5], "16": 2, "store": 2, "map": 2, "ncrossov": 2, "nmutat": 2, "loop": [2, 3, 8], "through": [2, 3, 8], "them": [2, 8], "citat": [2, 6], "yuan": [2, 8], "xu": [2, 8], "wang": [2, 8], "2014": [2, 8], "improv": [2, 6, 8], "procedur": [2, 8], "evolutionari": [2, 8], "gecco": 2, "661": [2, 8], "668": [2, 8], "1145": 2, "2576768": 2, "2598342": 2, "first_front_onli": 2, "front": [2, 5, 8], "rtype": 2, "non_dominated_sort": 2, "concurrent_execut": 2, "execution_timeout": 2, "rubric": 2, "concurr": 2, "core": 2, "exectuion": 2, "just": 2, "go": 2, "timeout": 2, "minut": 2, "machine_filenam": 2, "machinefil": 2, "database_filenam": 2, "databas": 2, "ignore_cor": 2, "indic": 2, "population_dist": 2, "newindividu": [2, 6], "past": 2, "higher": 2, "hu": 2, "j": 2, "zeng": 2, "tan": 2, "guid": 2, "particl": 2, "swarm": 2, "dynam": 2, "environ": [2, 7], "bio": 2, "inspir": 2, "intellig": 2, "applic": 2, "berlin": 2, "germani": 2, "springer": 2, "2007": 2, "pp": [2, 6, 8], "239": 2, "247": 2, "post_process": 2, "get_best": 2, "pop_siz": [2, 3, 4, 6], "v": 2, "won": [2, 3, 4, 5, 6], "alwai": 2, "carri": [2, 8], "import": 2, "represent": 2, "pop_fold": 2, "best_front": 2, "get_pop_best": 2, "roll": 2, "opt": 2, "nsga3": [2, 3], "note": [2, 3], "best_individu": 2, "pop001": 2, "best_individual_objective1": 2, "objective2": 2, "objective3": 2, "best_individual_compromis": 2, "pop002": 2, "pop003": 2, "comp_individu": 2, "compromis": [2, 8], "plot_pareto": 2, "objective1_index": 2, "objective2_index": 2, "glennopt": [3, 4, 5, 6, 7], "python": [3, 4, 5, 6, 7], "128": [3, 4, 5, 6], "optimization_fold": [3, 4, 5, 6], "pareto_resolut": [3, 5], "__crossover_mutate__": [3, 4, 6], "summari": [3, 4], "__optimize__": 3, "n_gener": [3, 4, 5, 6], "pop_start": [3, 4, 5, 6], "reference_point": [3, 5], "main": 3, "necessari": 3, "mutat": [3, 4, 6, 8], "enough": 3, "iter": [3, 5], "add_eval_paramet": [3, 4, 5], "eval_param": [3, 4, 5], "initi": [3, 4, 5], "add_object": [3, 4, 5], "add_performance_paramet": [3, 4, 5], "performance_param": [3, 4, 5], "mutation_param": [3, 4], "describ": [3, 4, 6], "optimize_from_popul": [3, 4, 5, 6], "previou": [3, 4, 5, 6], "start_do": [3, 4, 5, 6], "doe_individu": [3, 4, 5, 6], "doe_siz": [3, 4, 5, 6], "experi": [3, 4, 5, 6, 8], "case": [3, 4, 5], "interv": [3, 6], "adjoint": [4, 5], "nsga3_ml": 4, "linear_network": [4, 5], "64": [4, 5], "epoch": [4, 5], "100": 4, "train_test_split": [4, 5], "32": [4, 5, 6], "ml_eval": 4, "train": [4, 5], "retrain": [4, 5], "neural": [4, 5, 8], "network": [4, 5, 8], "predict": [4, 5, 8], "lbfg": 4, "johaupt": 4, "io": 4, "pytorch": 4, "20network": 4, "pytorch_lbfg": 4, "loss": [4, 5], "test": [4, 5], "200": 5, "min_method": 5, "powel": 5, "becaus": [5, 8], "renorm": 5, "surrogate_objective_func": 5, "x0": 5, "dist_index": 5, "labels_scal": 5, "minmaxscal": 5, "features_scal": 5, "goal": [5, 8], "refer": [5, 8], "point": [5, 8], "guess": 5, "nn": 5, "along": 5, "pareto": [5, 8], "intercept": 5, "sum": [5, 8], "fit": 5, "__set_eval_parameters__": 6, "expos": 6, "outsid": 6, "onc": 6, "might": 6, "sel_typ": 6, "selection_typ": 6, "best_design": 6, "select_individu": 6, "previndividu": 6, "suitabl": 6, "ghosh": 6, "With": 6, "konar": 6, "u": 6, "chakraborti": 6, "handl": 6, "noisi": 6, "proc": 6, "congr": 6, "evol": 6, "vol": 6, "sep": 6, "2005": 6, "1691": 6, "1698": 6, "enumer": 6, "root": 7, "system": 7, "miniconda": 7, "anaconda": 7, "virtual": 7, "setup": 7, "docker": 7, "imag": [7, 8], "herehttp": 7, "www": [7, 8], "product": 7, "below": [7, 8], "success": 7, "relev": 7, "packag": 7, "clone": 7, "repositori": 7, "poetri": 7, "manag": 7, "build": 7, "project": 7, "command": 7, "librari": 7, "domain": 8, "x3": 8, "There": 8, "wai": 8, "experin": 8, "illusr": 8, "cycl": 8, "draw": 8, "expans": 8, "multipl": 8, "dimens": 8, "top": 8, "row": 8, "figur": 8, "similar": 8, "bottom": 8, "show": 8, "filter": 8, "rank": 8, "end": 8, "up": 8, "crowd": 8, "cluster": 8, "togeth": 8, "why": 8, "author": 8, "closes": 8, "juli": 8, "proceed": 8, "annual": 8, "incorpor": 8, "insid": 8, "actual": 8, "time": 8, "downsid": 8, "toward": 8, "overfit": 8, "inaccur": 8, "solut": 8, "construct": 8, "weight": 8, "summat": 8, "variou": 8, "stratregi": 8, "poor": 8, "abil": 8, "convex": 8, "interest": 8, "capabl": 8, "made": 8, "futur": 8, "sciencedirect": 8, "topic": 8, "scienc": 8, "limit": 8, "youtu": 8, "yc9nwvlpepi": 8, "1945": 8}, "objects": {"glennopt.base": [[1, 0, 0, "-", "individual"], [1, 0, 0, "-", "optimizer"], [1, 0, 0, "-", "parameter"]], "glennopt.base.individual": [[1, 1, 1, "", "Individual"]], "glennopt.base.individual.Individual": [[1, 2, 1, "", "IsFailed"], [1, 3, 1, "", "__hash__"], [1, 3, 1, "", "__str__"], [1, 3, 1, "", "constraints"], [1, 2, 1, "", "eval_parameter_max"], [1, 2, 1, "", "eval_parameter_min"], [1, 2, 1, "", "eval_parameters"], [1, 3, 1, "", "get_eval_parameter"], [1, 3, 1, "", "get_eval_parameter_list"], [1, 3, 1, "", "get_objective"], [1, 3, 1, "", "get_objectives_list"], [1, 3, 1, "", "get_performance_parameter"], [1, 3, 1, "", "get_performance_parameters_list"], [1, 2, 1, "", "name"], [1, 2, 1, "", "objectives"], [1, 2, 1, "", "performance_parameters"], [1, 2, 1, "", "population"], [1, 3, 1, "", "set_eval_parameter"], [1, 3, 1, "", "set_eval_parameter_at_indx"], [1, 3, 1, "", "set_objective"], [1, 3, 1, "", "set_performance_parameter"], [1, 3, 1, "", "set_performance_parameter_at_indx"]], "glennopt.base.optimizer": [[1, 1, 1, "", "Optimizer"]], "glennopt.base.optimizer.Optimizer": [[1, 3, 1, "", "__check_PID_running__"], [1, 3, 1, "", "__check_population_folder__"], [1, 3, 1, "", "__check_process_running__"], [1, 3, 1, "", "__create_input_file__"], [1, 3, 1, "", "__evaluate_individual__"], [1, 3, 1, "", "__read_input_file__"], [1, 3, 1, "", "__read_output_file__"], [1, 3, 1, "", "__select_cores_per_execution__"], [1, 3, 1, "", "__write_proc_log__"], [1, 3, 1, "", "append_history_file"], [1, 3, 1, "", "append_restart_file"], [1, 3, 1, "", "change_working_dir"], [1, 3, 1, "", "create_restart"], [1, 3, 1, "", "evaluate_population"], [1, 3, 1, "", "from_dict"], [1, 3, 1, "", "get_current_directory"], [1, 3, 1, "", "load_history_file"], [1, 2, 1, "", "parallel_settings"], [1, 3, 1, "", "plot_2D"], [1, 3, 1, "", "read_calculation_folder"], [1, 3, 1, "", "read_population"], [1, 3, 1, "", "read_restart_file"], [1, 3, 1, "", "to_dict"], [1, 3, 1, "", "to_pandas"], [1, 3, 1, "", "to_tecplot"], [1, 2, 1, "", "use_calculation_folder"]], "glennopt.base.parameter": [[1, 1, 1, "", "Parameter"]], "glennopt.base.parameter.Parameter": [[1, 3, 1, "", "__eq__"], [1, 4, 1, "", "__hash__"]], "glennopt.helpers": [[2, 0, 0, "-", "convert_to_ndarray"], [2, 0, 0, "-", "copy"], [2, 0, 0, "-", "mutate"], [2, 0, 0, "-", "non_dominated_sorting"], [2, 0, 0, "-", "parallel_settings"], [2, 0, 0, "-", "population_distance"], [2, 0, 0, "-", "post_processing"]], "glennopt.helpers.convert_to_ndarray": [[2, 5, 1, "", "convert_to_ndarray"]], "glennopt.helpers.copy": [[2, 5, 1, "", "__dir__"], [2, 5, 1, "", "__format__"], [2, 5, 1, "", "__init_subclass__"], [2, 5, 1, "", "__new__"], [2, 5, 1, "", "__reduce__"], [2, 5, 1, "", "__reduce_ex__"], [2, 5, 1, "", "__sizeof__"], [2, 5, 1, "", "__subclasshook__"]], "glennopt.helpers.mutate": [[2, 5, 1, "", "crossover"], [2, 5, 1, "", "de_best_1_bin"], [2, 5, 1, "", "de_dmp"], [2, 5, 1, "", "de_dmp_bak"], [2, 1, 1, "", "de_mutation_type"], [2, 5, 1, "", "de_rand_1_bin"], [2, 5, 1, "", "de_rand_1_bin_spawn"], [2, 5, 1, "", "get_eval_param_matrix"], [2, 5, 1, "", "get_pairs"], [2, 5, 1, "", "mutate"], [2, 1, 1, "", "mutation_parameters"], [2, 5, 1, "", "set_eval_parameters"], [2, 5, 1, "", "simple"]], "glennopt.helpers.mutate.mutation_parameters": [[2, 3, 1, "", "__eq__"], [2, 4, 1, "", "__hash__"]], "glennopt.helpers.non_dominated_sorting": [[2, 5, 1, "", "__dir__"], [2, 5, 1, "", "__format__"], [2, 5, 1, "", "__init_subclass__"], [2, 5, 1, "", "__new__"], [2, 5, 1, "", "__reduce__"], [2, 5, 1, "", "__reduce_ex__"], [2, 5, 1, "", "__sizeof__"], [2, 5, 1, "", "__subclasshook__"]], "glennopt.helpers.parallel_settings": [[2, 1, 1, "", "parallel_settings"]], "glennopt.helpers.parallel_settings.parallel_settings": [[2, 3, 1, "", "__eq__"], [2, 4, 1, "", "__hash__"]], "glennopt.helpers.population_distance": [[2, 5, 1, "", "distance"], [2, 5, 1, "", "diversity"]], "glennopt.helpers.post_processing": [[2, 5, 1, "", "get_best"], [2, 5, 1, "", "get_pop_best"], [2, 5, 1, "", "plot_pareto"]], "glennopt.optimizers": [[3, 0, 0, "-", "nsga3"], [4, 0, 0, "-", "nsga3_ml"], [5, 0, 0, "-", "nsopt"], [6, 0, 0, "-", "sode"]], "glennopt.optimizers.nsga3": [[3, 1, 1, "", "NSGA3"], [3, 5, 1, "", "random"]], "glennopt.optimizers.nsga3.NSGA3": [[3, 3, 1, "", "__crossover_mutate__"], [3, 3, 1, "", "__optimize__"], [3, 3, 1, "", "add_eval_parameters"], [3, 3, 1, "", "add_objectives"], [3, 3, 1, "", "add_performance_parameters"], [3, 2, 1, "", "mutation_params"], [3, 3, 1, "", "optimize_from_population"], [3, 3, 1, "", "start_doe"]], "glennopt.optimizers.nsga3_ml": [[4, 1, 1, "", "NSGA3_ML"]], "glennopt.optimizers.nsga3_ml.NSGA3_ML": [[4, 3, 1, "", "__crossover_mutate__"], [4, 3, 1, "", "add_eval_parameters"], [4, 3, 1, "", "add_objectives"], [4, 3, 1, "", "add_performance_parameters"], [4, 2, 1, "", "mutation_params"], [4, 3, 1, "", "optimize_from_population"], [4, 3, 1, "", "start_doe"], [4, 3, 1, "", "train"]], "glennopt.optimizers.nsopt": [[5, 1, 1, "", "NSOPT"], [5, 5, 1, "", "surrogate_objective_func"]], "glennopt.optimizers.nsopt.NSOPT": [[5, 3, 1, "", "add_eval_parameters"], [5, 3, 1, "", "add_objectives"], [5, 3, 1, "", "add_performance_parameters"], [5, 3, 1, "", "optimize_from_population"], [5, 3, 1, "", "start_doe"], [5, 3, 1, "", "train"]], "glennopt.optimizers.sode": [[6, 1, 1, "", "SODE"], [6, 5, 1, "", "random"], [6, 1, 1, "", "selection_type"]], "glennopt.optimizers.sode.SODE": [[6, 3, 1, "", "__crossover_mutate__"], [6, 3, 1, "", "__set_eval_parameters__"], [6, 3, 1, "", "optimize_from_population"], [6, 3, 1, "", "select_individuals"], [6, 3, 1, "", "start_doe"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:property", "3": "py:method", "4": "py:attribute", "5": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "property", "Python property"], "3": ["py", "method", "Python method"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "function", "Python function"]}, "titleterms": {"glennopt": [0, 1, 2], "document": 0, "background": 0, "individu": [0, 1], "optim": [0, 1, 8], "folder": 0, "structur": 0, "note": 0, "about": 0, "na": 0, "nasa": 0, "advanc": 0, "super": 0, "comput": 0, "ani": 0, "torqu": 0, "slurm": 0, "queu": 0, "system": 0, "packag": 0, "refer": 0, "indic": 0, "tabl": 0, "base": 1, "class": 1, "paramet": 1, "helper": 2, "convert": 2, "numpi": 2, "arrai": 2, "copi": 2, "mutat": 2, "non": [2, 3, 4, 5, 8], "domin": [2, 3, 4, 5, 8], "sort": [2, 3, 4, 5, 8], "parallel": 2, "set": 2, "popul": 2, "distanc": 2, "post": 2, "process": 2, "genet": [3, 4, 8], "algorithm": [3, 4, 8], "nsga": [3, 4, 8], "iii": [3, 4, 8], "machin": [4, 8], "learn": [4, 8], "surrog": [4, 8], "optmiz": 5, "scipi": [5, 8], "singl": [6, 8], "object": [6, 8], "differenti": [6, 8], "evolut": [6, 8], "sode": [6, 8], "instal": 7, "via": 7, "pip": 7, "sourc": 7, "nsga3": 8, "nsga3_ml": 8, "nsopt": 8, "us": 8}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 57}, "alltitles": {"GlennOPT Documentation": [[0, "glennopt-documentation"]], "Background": [[0, "background"]], "Individual": [[0, "individual"]], "Optimization Folder Structure": [[0, "optimization-folder-structure"]], "Note about NAS (NASA Advance Super Computer) or any Torque/SLURM queuing system": [[0, "note-about-nas-nasa-advance-super-computer-or-any-torque-slurm-queuing-system"]], "Notes": [[0, null]], "Package Reference": [[0, null]], "Indices and tables": [[0, "indices-and-tables"]], "GlennOPT base classes": [[1, "glennopt-base-classes"]], "Individual Class": [[1, "module-glennopt.base.individual"]], "Optimizer Base Class": [[1, "module-glennopt.base.optimizer"]], "Parameter Class": [[1, "module-glennopt.base.parameter"]], "GlennOPT Helpers": [[2, "glennopt-helpers"]], "Converting to Numpy Array": [[2, "module-glennopt.helpers.convert_to_ndarray"]], "Copy": [[2, "module-glennopt.helpers.copy"]], "Mutations": [[2, "module-glennopt.helpers.mutate"]], "Non Dominated Sorting": [[2, "module-glennopt.helpers.non_dominated_sorting"]], "Parallel Settings": [[2, "module-glennopt.helpers.parallel_settings"]], "Population Distance": [[2, "module-glennopt.helpers.population_distance"]], "Post Processing": [[2, "module-glennopt.helpers.post_processing"]], "Non-dominated sorting genetic algorithm (NSGA-III)": [[3, "module-glennopt.optimizers.nsga3"]], "Non-dominated sorting genetic algorithm (NSGA-III) with Machine Learning Surrogate": [[4, "module-glennopt.optimizers.nsga3_ml"]], "Non-dominated sorting optmization with Scipy": [[5, "module-glennopt.optimizers.nsopt"]], "Single Objective Differential Evolution (SODE)": [[6, "module-glennopt.optimizers.sode"]], "Installation": [[7, "installation"]], "Installation via Pip": [[7, "installation-via-pip"]], "Installation via Source": [[7, "installation-via-source"]], "Optimizers": [[8, "optimizers"]], "SODE - Single Objective Differential Evolution": [[8, "sode-single-objective-differential-evolution"]], "NSGA3 / NSGA-III- Non-Dominated Sorting Genetic Algorithm": [[8, "nsga3-nsga-iii-non-dominated-sorting-genetic-algorithm"]], "NSGA3_ML - Non-Dominated Sorting Genetic Algorithm with Machine Learning Surrogate": [[8, "nsga3-ml-non-dominated-sorting-genetic-algorithm-with-machine-learning-surrogate"]], "NSOPT - Non-Dominated sorting optimization using Scipy": [[8, "nsopt-non-dominated-sorting-optimization-using-scipy"]]}, "indexentries": {"individual (class in glennopt.base.individual)": [[1, "glennopt.base.individual.Individual"]], "isfailed (glennopt.base.individual.individual property)": [[1, "glennopt.base.individual.Individual.IsFailed"]], "optimizer (class in glennopt.base.optimizer)": [[1, "glennopt.base.optimizer.Optimizer"]], "parameter (class in glennopt.base.parameter)": [[1, "glennopt.base.parameter.Parameter"]], "__check_pid_running__() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.__check_PID_running__"]], "__check_population_folder__() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.__check_population_folder__"]], "__check_process_running__() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.__check_process_running__"]], "__create_input_file__() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.__create_input_file__"]], "__eq__() (glennopt.base.parameter.parameter method)": [[1, "glennopt.base.parameter.Parameter.__eq__"]], "__evaluate_individual__() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.__evaluate_individual__"]], "__hash__ (glennopt.base.parameter.parameter attribute)": [[1, "glennopt.base.parameter.Parameter.__hash__"]], "__hash__() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.__hash__"]], "__read_input_file__() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.__read_input_file__"]], "__read_output_file__() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.__read_output_file__"]], "__select_cores_per_execution__() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.__select_cores_per_execution__"]], "__str__() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.__str__"]], "__write_proc_log__() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.__write_proc_log__"]], "append_history_file() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.append_history_file"]], "append_restart_file() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.append_restart_file"]], "change_working_dir() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.change_working_dir"]], "constraints() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.constraints"]], "create_restart() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.create_restart"]], "eval_parameter_max (glennopt.base.individual.individual property)": [[1, "glennopt.base.individual.Individual.eval_parameter_max"]], "eval_parameter_min (glennopt.base.individual.individual property)": [[1, "glennopt.base.individual.Individual.eval_parameter_min"]], "eval_parameters (glennopt.base.individual.individual property)": [[1, "glennopt.base.individual.Individual.eval_parameters"]], "evaluate_population() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.evaluate_population"]], "from_dict() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.from_dict"]], "get_current_directory() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.get_current_directory"]], "get_eval_parameter() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.get_eval_parameter"]], "get_eval_parameter_list() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.get_eval_parameter_list"]], "get_objective() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.get_objective"]], "get_objectives_list() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.get_objectives_list"]], "get_performance_parameter() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.get_performance_parameter"]], "get_performance_parameters_list() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.get_performance_parameters_list"]], "glennopt.base.individual": [[1, "module-glennopt.base.individual"]], "glennopt.base.optimizer": [[1, "module-glennopt.base.optimizer"]], "glennopt.base.parameter": [[1, "module-glennopt.base.parameter"]], "load_history_file() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.load_history_file"]], "module": [[1, "module-glennopt.base.individual"], [1, "module-glennopt.base.optimizer"], [1, "module-glennopt.base.parameter"], [2, "module-glennopt.helpers.convert_to_ndarray"], [2, "module-glennopt.helpers.copy"], [2, "module-glennopt.helpers.mutate"], [2, "module-glennopt.helpers.non_dominated_sorting"], [2, "module-glennopt.helpers.parallel_settings"], [2, "module-glennopt.helpers.population_distance"], [2, "module-glennopt.helpers.post_processing"], [3, "module-glennopt.optimizers.nsga3"], [4, "module-glennopt.optimizers.nsga3_ml"], [5, "module-glennopt.optimizers.nsopt"], [6, "module-glennopt.optimizers.sode"]], "name (glennopt.base.individual.individual property)": [[1, "glennopt.base.individual.Individual.name"]], "objectives (glennopt.base.individual.individual property)": [[1, "glennopt.base.individual.Individual.objectives"]], "parallel_settings (glennopt.base.optimizer.optimizer property)": [[1, "glennopt.base.optimizer.Optimizer.parallel_settings"]], "performance_parameters (glennopt.base.individual.individual property)": [[1, "glennopt.base.individual.Individual.performance_parameters"]], "plot_2d() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.plot_2D"]], "population (glennopt.base.individual.individual property)": [[1, "glennopt.base.individual.Individual.population"]], "read_calculation_folder() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.read_calculation_folder"]], "read_population() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.read_population"]], "read_restart_file() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.read_restart_file"]], "set_eval_parameter() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.set_eval_parameter"]], "set_eval_parameter_at_indx() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.set_eval_parameter_at_indx"]], "set_objective() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.set_objective"]], "set_performance_parameter() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.set_performance_parameter"]], "set_performance_parameter_at_indx() (glennopt.base.individual.individual method)": [[1, "glennopt.base.individual.Individual.set_performance_parameter_at_indx"]], "to_dict() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.to_dict"]], "to_pandas() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.to_pandas"]], "to_tecplot() (glennopt.base.optimizer.optimizer method)": [[1, "glennopt.base.optimizer.Optimizer.to_tecplot"]], "use_calculation_folder (glennopt.base.optimizer.optimizer property)": [[1, "glennopt.base.optimizer.Optimizer.use_calculation_folder"]], "__dir__() (in module glennopt.helpers.copy)": [[2, "glennopt.helpers.copy.__dir__"]], "__dir__() (in module glennopt.helpers.non_dominated_sorting)": [[2, "glennopt.helpers.non_dominated_sorting.__dir__"]], "__eq__() (glennopt.helpers.mutate.mutation_parameters method)": [[2, "glennopt.helpers.mutate.mutation_parameters.__eq__"]], "__eq__() (glennopt.helpers.parallel_settings.parallel_settings method)": [[2, "glennopt.helpers.parallel_settings.parallel_settings.__eq__"]], "__format__() (in module glennopt.helpers.copy)": [[2, "glennopt.helpers.copy.__format__"]], "__format__() (in module glennopt.helpers.non_dominated_sorting)": [[2, "glennopt.helpers.non_dominated_sorting.__format__"]], "__hash__ (glennopt.helpers.mutate.mutation_parameters attribute)": [[2, "glennopt.helpers.mutate.mutation_parameters.__hash__"]], "__hash__ (glennopt.helpers.parallel_settings.parallel_settings attribute)": [[2, "glennopt.helpers.parallel_settings.parallel_settings.__hash__"]], "__init_subclass__() (in module glennopt.helpers.copy)": [[2, "glennopt.helpers.copy.__init_subclass__"]], "__init_subclass__() (in module glennopt.helpers.non_dominated_sorting)": [[2, "glennopt.helpers.non_dominated_sorting.__init_subclass__"]], "__new__() (in module glennopt.helpers.copy)": [[2, "glennopt.helpers.copy.__new__"]], "__new__() (in module glennopt.helpers.non_dominated_sorting)": [[2, "glennopt.helpers.non_dominated_sorting.__new__"]], "__reduce__() (in module glennopt.helpers.copy)": [[2, "glennopt.helpers.copy.__reduce__"]], "__reduce__() (in module glennopt.helpers.non_dominated_sorting)": [[2, "glennopt.helpers.non_dominated_sorting.__reduce__"]], "__reduce_ex__() (in module glennopt.helpers.copy)": [[2, "glennopt.helpers.copy.__reduce_ex__"]], "__reduce_ex__() (in module glennopt.helpers.non_dominated_sorting)": [[2, "glennopt.helpers.non_dominated_sorting.__reduce_ex__"]], "__sizeof__() (in module glennopt.helpers.copy)": [[2, "glennopt.helpers.copy.__sizeof__"]], "__sizeof__() (in module glennopt.helpers.non_dominated_sorting)": [[2, "glennopt.helpers.non_dominated_sorting.__sizeof__"]], "__subclasshook__() (in module glennopt.helpers.copy)": [[2, "glennopt.helpers.copy.__subclasshook__"]], "__subclasshook__() (in module glennopt.helpers.non_dominated_sorting)": [[2, "glennopt.helpers.non_dominated_sorting.__subclasshook__"]], "convert_to_ndarray() (in module glennopt.helpers.convert_to_ndarray)": [[2, "glennopt.helpers.convert_to_ndarray.convert_to_ndarray"]], "crossover() (in module glennopt.helpers.mutate)": [[2, "glennopt.helpers.mutate.crossover"]], "de_best_1_bin() (in module glennopt.helpers.mutate)": [[2, "glennopt.helpers.mutate.de_best_1_bin"]], "de_dmp() (in module glennopt.helpers.mutate)": [[2, "glennopt.helpers.mutate.de_dmp"]], "de_dmp_bak() (in module glennopt.helpers.mutate)": [[2, "glennopt.helpers.mutate.de_dmp_bak"]], "de_mutation_type (class in glennopt.helpers.mutate)": [[2, "glennopt.helpers.mutate.de_mutation_type"]], "de_rand_1_bin() (in module glennopt.helpers.mutate)": [[2, "glennopt.helpers.mutate.de_rand_1_bin"]], "de_rand_1_bin_spawn() (in module glennopt.helpers.mutate)": [[2, "glennopt.helpers.mutate.de_rand_1_bin_spawn"]], "distance() (in module glennopt.helpers.population_distance)": [[2, "glennopt.helpers.population_distance.distance"]], "diversity() (in module glennopt.helpers.population_distance)": [[2, "glennopt.helpers.population_distance.diversity"]], "get_best() (in module glennopt.helpers.post_processing)": [[2, "glennopt.helpers.post_processing.get_best"]], "get_eval_param_matrix() (in module glennopt.helpers.mutate)": [[2, "glennopt.helpers.mutate.get_eval_param_matrix"]], "get_pairs() (in module glennopt.helpers.mutate)": [[2, "glennopt.helpers.mutate.get_pairs"]], "get_pop_best() (in module glennopt.helpers.post_processing)": [[2, "glennopt.helpers.post_processing.get_pop_best"]], "glennopt.helpers.convert_to_ndarray": [[2, "module-glennopt.helpers.convert_to_ndarray"]], "glennopt.helpers.copy": [[2, "module-glennopt.helpers.copy"]], "glennopt.helpers.mutate": [[2, "module-glennopt.helpers.mutate"]], "glennopt.helpers.non_dominated_sorting": [[2, "module-glennopt.helpers.non_dominated_sorting"]], "glennopt.helpers.parallel_settings": [[2, "module-glennopt.helpers.parallel_settings"]], "glennopt.helpers.population_distance": [[2, "module-glennopt.helpers.population_distance"]], "glennopt.helpers.post_processing": [[2, "module-glennopt.helpers.post_processing"]], "mutate() (in module glennopt.helpers.mutate)": [[2, "glennopt.helpers.mutate.mutate"]], "mutation_parameters (class in glennopt.helpers.mutate)": [[2, "glennopt.helpers.mutate.mutation_parameters"]], "parallel_settings (class in glennopt.helpers.parallel_settings)": [[2, "glennopt.helpers.parallel_settings.parallel_settings"]], "plot_pareto() (in module glennopt.helpers.post_processing)": [[2, "glennopt.helpers.post_processing.plot_pareto"]], "set_eval_parameters() (in module glennopt.helpers.mutate)": [[2, "glennopt.helpers.mutate.set_eval_parameters"]], "simple() (in module glennopt.helpers.mutate)": [[2, "glennopt.helpers.mutate.simple"]], "nsga3 (class in glennopt.optimizers.nsga3)": [[3, "glennopt.optimizers.nsga3.NSGA3"]], "__crossover_mutate__() (glennopt.optimizers.nsga3.nsga3 method)": [[3, "glennopt.optimizers.nsga3.NSGA3.__crossover_mutate__"]], "__optimize__() (glennopt.optimizers.nsga3.nsga3 method)": [[3, "glennopt.optimizers.nsga3.NSGA3.__optimize__"]], "add_eval_parameters() (glennopt.optimizers.nsga3.nsga3 method)": [[3, "glennopt.optimizers.nsga3.NSGA3.add_eval_parameters"]], "add_objectives() (glennopt.optimizers.nsga3.nsga3 method)": [[3, "glennopt.optimizers.nsga3.NSGA3.add_objectives"]], "add_performance_parameters() (glennopt.optimizers.nsga3.nsga3 method)": [[3, "glennopt.optimizers.nsga3.NSGA3.add_performance_parameters"]], "glennopt.optimizers.nsga3": [[3, "module-glennopt.optimizers.nsga3"]], "mutation_params (glennopt.optimizers.nsga3.nsga3 property)": [[3, "glennopt.optimizers.nsga3.NSGA3.mutation_params"]], "optimize_from_population() (glennopt.optimizers.nsga3.nsga3 method)": [[3, "glennopt.optimizers.nsga3.NSGA3.optimize_from_population"]], "random() (in module glennopt.optimizers.nsga3)": [[3, "glennopt.optimizers.nsga3.random"]], "start_doe() (glennopt.optimizers.nsga3.nsga3 method)": [[3, "glennopt.optimizers.nsga3.NSGA3.start_doe"]], "nsga3_ml (class in glennopt.optimizers.nsga3_ml)": [[4, "glennopt.optimizers.nsga3_ml.NSGA3_ML"]], "__crossover_mutate__() (glennopt.optimizers.nsga3_ml.nsga3_ml method)": [[4, "glennopt.optimizers.nsga3_ml.NSGA3_ML.__crossover_mutate__"]], "add_eval_parameters() (glennopt.optimizers.nsga3_ml.nsga3_ml method)": [[4, "glennopt.optimizers.nsga3_ml.NSGA3_ML.add_eval_parameters"]], "add_objectives() (glennopt.optimizers.nsga3_ml.nsga3_ml method)": [[4, "glennopt.optimizers.nsga3_ml.NSGA3_ML.add_objectives"]], "add_performance_parameters() (glennopt.optimizers.nsga3_ml.nsga3_ml method)": [[4, "glennopt.optimizers.nsga3_ml.NSGA3_ML.add_performance_parameters"]], "glennopt.optimizers.nsga3_ml": [[4, "module-glennopt.optimizers.nsga3_ml"]], "mutation_params (glennopt.optimizers.nsga3_ml.nsga3_ml property)": [[4, "glennopt.optimizers.nsga3_ml.NSGA3_ML.mutation_params"]], "optimize_from_population() (glennopt.optimizers.nsga3_ml.nsga3_ml method)": [[4, "glennopt.optimizers.nsga3_ml.NSGA3_ML.optimize_from_population"]], "start_doe() (glennopt.optimizers.nsga3_ml.nsga3_ml method)": [[4, "glennopt.optimizers.nsga3_ml.NSGA3_ML.start_doe"]], "train() (glennopt.optimizers.nsga3_ml.nsga3_ml method)": [[4, "glennopt.optimizers.nsga3_ml.NSGA3_ML.train"]], "nsopt (class in glennopt.optimizers.nsopt)": [[5, "glennopt.optimizers.nsopt.NSOPT"]], "add_eval_parameters() (glennopt.optimizers.nsopt.nsopt method)": [[5, "glennopt.optimizers.nsopt.NSOPT.add_eval_parameters"]], "add_objectives() (glennopt.optimizers.nsopt.nsopt method)": [[5, "glennopt.optimizers.nsopt.NSOPT.add_objectives"]], "add_performance_parameters() (glennopt.optimizers.nsopt.nsopt method)": [[5, "glennopt.optimizers.nsopt.NSOPT.add_performance_parameters"]], "glennopt.optimizers.nsopt": [[5, "module-glennopt.optimizers.nsopt"]], "optimize_from_population() (glennopt.optimizers.nsopt.nsopt method)": [[5, "glennopt.optimizers.nsopt.NSOPT.optimize_from_population"]], "start_doe() (glennopt.optimizers.nsopt.nsopt method)": [[5, "glennopt.optimizers.nsopt.NSOPT.start_doe"]], "surrogate_objective_func() (in module glennopt.optimizers.nsopt)": [[5, "glennopt.optimizers.nsopt.surrogate_objective_func"]], "train() (glennopt.optimizers.nsopt.nsopt method)": [[5, "glennopt.optimizers.nsopt.NSOPT.train"]], "sode (class in glennopt.optimizers.sode)": [[6, "glennopt.optimizers.sode.SODE"]], "__crossover_mutate__() (glennopt.optimizers.sode.sode method)": [[6, "glennopt.optimizers.sode.SODE.__crossover_mutate__"]], "__set_eval_parameters__() (glennopt.optimizers.sode.sode method)": [[6, "glennopt.optimizers.sode.SODE.__set_eval_parameters__"]], "glennopt.optimizers.sode": [[6, "module-glennopt.optimizers.sode"]], "optimize_from_population() (glennopt.optimizers.sode.sode method)": [[6, "glennopt.optimizers.sode.SODE.optimize_from_population"]], "random() (in module glennopt.optimizers.sode)": [[6, "glennopt.optimizers.sode.random"]], "select_individuals() (glennopt.optimizers.sode.sode method)": [[6, "glennopt.optimizers.sode.SODE.select_individuals"]], "selection_type (class in glennopt.optimizers.sode)": [[6, "glennopt.optimizers.sode.selection_type"]], "start_doe() (glennopt.optimizers.sode.sode method)": [[6, "glennopt.optimizers.sode.SODE.start_doe"]]}}) \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py index 1046e35ad..a4f153f09 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,8 +22,8 @@ author = 'Paht Juangphanich ' # The full version, including alpha/beta/rc tags -version = '1.4.*' # glennopt.__version__ -release = '1.4.*' # glennopt.__version__ +version = '1.4.5' # glennopt.__version__ +release = '1.4.5' # glennopt.__version__ # -- General configuration --------------------------------------------------- diff --git a/pyproject.toml b/pyproject.toml index d61e94139..630ab7824 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "GlennOPT" -version = "1.4.4" +version = "1.4.5" description = "Multi and single objective optimization tool for cfd/computer simulations." authors = ["Paht Juangphanich "]