From 48a2c9daab095afe4d081da62b03761b6354789a Mon Sep 17 00:00:00 2001 From: pfperroni <pfperroni@inf.ufpr.br> Date: Mon, 3 Jul 2017 14:08:39 -0300 Subject: [PATCH] Add project files --- cpp/CSMOn.cpp | 200 +++ cpp/CSMOn.hpp | 99 ++ cpp/ISearch.hpp | 76 + cpp/PSO.cpp | 195 +++ cpp/PSO.hpp | 72 + doc/CSMOn.pdf | Bin 0 -> 148232 bytes doc/html/CSMOn_8cpp_source.html | 281 ++++ doc/html/CSMOn_8hpp_source.html | 176 ++ doc/html/CSMOn_8py_source.html | 214 +++ doc/html/CSMOn__wrapper_8cpp.html | 203 +++ doc/html/CSMOn__wrapper_8cpp__incl.map | 5 + doc/html/CSMOn__wrapper_8cpp__incl.md5 | 1 + doc/html/CSMOn__wrapper_8cpp__incl.png | Bin 0 -> 23948 bytes doc/html/CSMOn__wrapper_8cpp_source.html | 207 +++ doc/html/ISearch_8hpp_source.html | 150 ++ doc/html/PSO_8cpp_source.html | 257 +++ doc/html/PSO_8hpp_source.html | 174 ++ doc/html/annotated.html | 106 ++ doc/html/bc_s.png | Bin 0 -> 676 bytes doc/html/bdwn.png | Bin 0 -> 147 bytes doc/html/classCSMOn-members.html | 110 ++ doc/html/classCSMOn.html | 258 +++ doc/html/classCSMOn_1_1Param-members.html | 105 ++ doc/html/classCSMOn_1_1Param.html | 120 ++ .../classCSMOn_1_1ParamArrayType-members.html | 110 ++ doc/html/classCSMOn_1_1ParamArrayType.html | 134 ++ doc/html/classCSMOn_1_1Param__coll__graph.map | 2 + doc/html/classCSMOn_1_1Param__coll__graph.md5 | 1 + doc/html/classCSMOn_1_1Param__coll__graph.png | Bin 0 -> 3590 bytes .../classCSMOn_1_1Param__inherit__graph.map | 2 + .../classCSMOn_1_1Param__inherit__graph.md5 | 1 + .../classCSMOn_1_1Param__inherit__graph.png | Bin 0 -> 3590 bytes doc/html/classCSMOn__coll__graph.map | 3 + doc/html/classCSMOn__coll__graph.md5 | 1 + doc/html/classCSMOn__coll__graph.png | Bin 0 -> 2963 bytes doc/html/classISearch-members.html | 108 ++ doc/html/classISearch.html | 267 +++ doc/html/classISearch__inherit__graph.map | 3 + doc/html/classISearch__inherit__graph.md5 | 1 + doc/html/classISearch__inherit__graph.png | Bin 0 -> 2145 bytes doc/html/classPSO-members.html | 111 ++ doc/html/classPSO.html | 389 +++++ doc/html/classPSO__coll__graph.map | 3 + doc/html/classPSO__coll__graph.md5 | 1 + doc/html/classPSO__coll__graph.png | Bin 0 -> 2167 bytes doc/html/classPSO__inherit__graph.map | 3 + doc/html/classPSO__inherit__graph.md5 | 1 + doc/html/classPSO__inherit__graph.png | Bin 0 -> 2167 bytes doc/html/classes.html | 109 ++ doc/html/closed.png | Bin 0 -> 132 bytes .../dir_7837fde3ab9c1fb2fc5be7b717af8d79.html | 106 ++ ...r_7837fde3ab9c1fb2fc5be7b717af8d79_dep.map | 3 + ...r_7837fde3ab9c1fb2fc5be7b717af8d79_dep.md5 | 1 + ...r_7837fde3ab9c1fb2fc5be7b717af8d79_dep.png | Bin 0 -> 1199 bytes .../dir_df511e5bd85cec96854b39d5e1c27aa8.html | 114 ++ ...r_df511e5bd85cec96854b39d5e1c27aa8_dep.map | 3 + ...r_df511e5bd85cec96854b39d5e1c27aa8_dep.md5 | 1 + ...r_df511e5bd85cec96854b39d5e1c27aa8_dep.png | Bin 0 -> 759 bytes doc/html/doxygen.css | 1440 +++++++++++++++++ doc/html/doxygen.png | Bin 0 -> 3779 bytes doc/html/dynsections.js | 104 ++ doc/html/files.html | 107 ++ doc/html/fitnessFunction_8py_source.html | 144 ++ doc/html/ftv2blank.png | Bin 0 -> 86 bytes doc/html/ftv2doc.png | Bin 0 -> 746 bytes doc/html/ftv2folderclosed.png | Bin 0 -> 616 bytes doc/html/ftv2folderopen.png | Bin 0 -> 597 bytes doc/html/ftv2lastnode.png | Bin 0 -> 86 bytes doc/html/ftv2link.png | Bin 0 -> 746 bytes doc/html/ftv2mlastnode.png | Bin 0 -> 246 bytes doc/html/ftv2mnode.png | Bin 0 -> 246 bytes doc/html/ftv2node.png | Bin 0 -> 86 bytes doc/html/ftv2plastnode.png | Bin 0 -> 229 bytes doc/html/ftv2pnode.png | Bin 0 -> 229 bytes doc/html/ftv2splitbar.png | Bin 0 -> 314 bytes doc/html/ftv2vertline.png | Bin 0 -> 86 bytes doc/html/functions.html | 136 ++ doc/html/functions_func.html | 136 ++ doc/html/globals.html | 106 ++ doc/html/globals_func.html | 103 ++ doc/html/globals_type.html | 103 ++ doc/html/graph_legend.html | 152 ++ doc/html/graph_legend.md5 | 1 + doc/html/graph_legend.png | Bin 0 -> 19871 bytes doc/html/hierarchy.html | 108 ++ doc/html/index.html | 92 ++ doc/html/inherit_graph_0.map | 3 + doc/html/inherit_graph_0.md5 | 1 + doc/html/inherit_graph_0.png | Bin 0 -> 714 bytes doc/html/inherit_graph_1.map | 3 + doc/html/inherit_graph_1.md5 | 1 + doc/html/inherit_graph_1.png | Bin 0 -> 722 bytes doc/html/inherit_graph_2.map | 3 + doc/html/inherit_graph_2.md5 | 1 + doc/html/inherit_graph_2.png | Bin 0 -> 1146 bytes doc/html/inherit_graph_3.map | 4 + doc/html/inherit_graph_3.md5 | 1 + doc/html/inherit_graph_3.png | Bin 0 -> 1962 bytes doc/html/inherit_graph_4.map | 3 + doc/html/inherit_graph_4.md5 | 1 + doc/html/inherit_graph_4.png | Bin 0 -> 2279 bytes doc/html/inherit_graph_5.map | 3 + doc/html/inherit_graph_5.md5 | 1 + doc/html/inherit_graph_5.png | Bin 0 -> 1014 bytes doc/html/inherits.html | 117 ++ doc/html/jquery.js | 39 + doc/html/nav_f.png | Bin 0 -> 153 bytes doc/html/nav_g.png | Bin 0 -> 95 bytes doc/html/nav_h.png | Bin 0 -> 98 bytes doc/html/open.png | Bin 0 -> 123 bytes doc/html/pso__example_8py_source.html | 155 ++ doc/html/search/all_0.html | 26 + doc/html/search/all_0.js | 5 + doc/html/search/all_1.html | 26 + doc/html/search/all_1.js | 6 + doc/html/search/all_2.html | 26 + doc/html/search/all_2.js | 7 + doc/html/search/all_3.html | 26 + doc/html/search/all_3.js | 4 + doc/html/search/all_4.html | 26 + doc/html/search/all_4.js | 4 + doc/html/search/all_5.html | 26 + doc/html/search/all_5.js | 5 + doc/html/search/all_6.html | 26 + doc/html/search/all_6.js | 4 + doc/html/search/all_7.html | 26 + doc/html/search/all_7.js | 5 + doc/html/search/all_8.html | 26 + doc/html/search/all_8.js | 4 + doc/html/search/classes_0.html | 26 + doc/html/search/classes_0.js | 5 + doc/html/search/classes_1.html | 26 + doc/html/search/classes_1.js | 4 + doc/html/search/classes_2.html | 26 + doc/html/search/classes_2.js | 4 + doc/html/search/classes_3.html | 26 + doc/html/search/classes_3.js | 4 + doc/html/search/close.png | Bin 0 -> 273 bytes doc/html/search/files_0.html | 26 + doc/html/search/files_0.js | 4 + doc/html/search/functions_0.html | 26 + doc/html/search/functions_0.js | 4 + doc/html/search/functions_1.html | 26 + doc/html/search/functions_1.js | 7 + doc/html/search/functions_2.html | 26 + doc/html/search/functions_2.js | 4 + doc/html/search/functions_3.html | 26 + doc/html/search/functions_3.js | 4 + doc/html/search/functions_4.html | 26 + doc/html/search/functions_4.js | 4 + doc/html/search/functions_5.html | 26 + doc/html/search/functions_5.js | 5 + doc/html/search/mag_sel.png | Bin 0 -> 563 bytes doc/html/search/nomatches.html | 12 + doc/html/search/pages_0.html | 26 + doc/html/search/pages_0.js | 4 + doc/html/search/search.css | 271 ++++ doc/html/search/search.js | 803 +++++++++ doc/html/search/search_l.png | Bin 0 -> 604 bytes doc/html/search/search_m.png | Bin 0 -> 158 bytes doc/html/search/search_r.png | Bin 0 -> 612 bytes doc/html/search/typedefs_0.html | 26 + doc/html/search/typedefs_0.js | 4 + doc/html/struct__Param-members.html | 107 ++ doc/html/struct__Param.html | 131 ++ doc/html/struct__point-members.html | 104 ++ doc/html/struct__point.html | 130 ++ doc/html/sync_off.png | Bin 0 -> 853 bytes doc/html/sync_on.png | Bin 0 -> 845 bytes doc/html/tab_a.png | Bin 0 -> 142 bytes doc/html/tab_b.png | Bin 0 -> 169 bytes doc/html/tab_h.png | Bin 0 -> 177 bytes doc/html/tab_s.png | Bin 0 -> 184 bytes doc/html/tabs.css | 60 + python/CSMOn.py | 113 ++ python/CSMOn_wrapper.cpp | 122 ++ python/Makefile | 16 + python/fitnessFunction.py | 45 + python/pso_example.py | 55 + 179 files changed, 10197 insertions(+) create mode 100644 cpp/CSMOn.cpp create mode 100644 cpp/CSMOn.hpp create mode 100644 cpp/ISearch.hpp create mode 100644 cpp/PSO.cpp create mode 100644 cpp/PSO.hpp create mode 100644 doc/CSMOn.pdf create mode 100644 doc/html/CSMOn_8cpp_source.html create mode 100644 doc/html/CSMOn_8hpp_source.html create mode 100644 doc/html/CSMOn_8py_source.html create mode 100644 doc/html/CSMOn__wrapper_8cpp.html create mode 100644 doc/html/CSMOn__wrapper_8cpp__incl.map create mode 100644 doc/html/CSMOn__wrapper_8cpp__incl.md5 create mode 100644 doc/html/CSMOn__wrapper_8cpp__incl.png create mode 100644 doc/html/CSMOn__wrapper_8cpp_source.html create mode 100644 doc/html/ISearch_8hpp_source.html create mode 100644 doc/html/PSO_8cpp_source.html create mode 100644 doc/html/PSO_8hpp_source.html create mode 100644 doc/html/annotated.html create mode 100644 doc/html/bc_s.png create mode 100644 doc/html/bdwn.png create mode 100644 doc/html/classCSMOn-members.html create mode 100644 doc/html/classCSMOn.html create mode 100644 doc/html/classCSMOn_1_1Param-members.html create mode 100644 doc/html/classCSMOn_1_1Param.html create mode 100644 doc/html/classCSMOn_1_1ParamArrayType-members.html create mode 100644 doc/html/classCSMOn_1_1ParamArrayType.html create mode 100644 doc/html/classCSMOn_1_1Param__coll__graph.map create mode 100644 doc/html/classCSMOn_1_1Param__coll__graph.md5 create mode 100644 doc/html/classCSMOn_1_1Param__coll__graph.png create mode 100644 doc/html/classCSMOn_1_1Param__inherit__graph.map create mode 100644 doc/html/classCSMOn_1_1Param__inherit__graph.md5 create mode 100644 doc/html/classCSMOn_1_1Param__inherit__graph.png create mode 100644 doc/html/classCSMOn__coll__graph.map create mode 100644 doc/html/classCSMOn__coll__graph.md5 create mode 100644 doc/html/classCSMOn__coll__graph.png create mode 100644 doc/html/classISearch-members.html create mode 100644 doc/html/classISearch.html create mode 100644 doc/html/classISearch__inherit__graph.map create mode 100644 doc/html/classISearch__inherit__graph.md5 create mode 100644 doc/html/classISearch__inherit__graph.png create mode 100644 doc/html/classPSO-members.html create mode 100644 doc/html/classPSO.html create mode 100644 doc/html/classPSO__coll__graph.map create mode 100644 doc/html/classPSO__coll__graph.md5 create mode 100644 doc/html/classPSO__coll__graph.png create mode 100644 doc/html/classPSO__inherit__graph.map create mode 100644 doc/html/classPSO__inherit__graph.md5 create mode 100644 doc/html/classPSO__inherit__graph.png create mode 100644 doc/html/classes.html create mode 100644 doc/html/closed.png create mode 100644 doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79.html create mode 100644 doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79_dep.map create mode 100644 doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79_dep.md5 create mode 100644 doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79_dep.png create mode 100644 doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8.html create mode 100644 doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8_dep.map create mode 100644 doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8_dep.md5 create mode 100644 doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8_dep.png create mode 100644 doc/html/doxygen.css create mode 100644 doc/html/doxygen.png create mode 100644 doc/html/dynsections.js create mode 100644 doc/html/files.html create mode 100644 doc/html/fitnessFunction_8py_source.html create mode 100644 doc/html/ftv2blank.png create mode 100644 doc/html/ftv2doc.png create mode 100644 doc/html/ftv2folderclosed.png create mode 100644 doc/html/ftv2folderopen.png create mode 100644 doc/html/ftv2lastnode.png create mode 100644 doc/html/ftv2link.png create mode 100644 doc/html/ftv2mlastnode.png create mode 100644 doc/html/ftv2mnode.png create mode 100644 doc/html/ftv2node.png create mode 100644 doc/html/ftv2plastnode.png create mode 100644 doc/html/ftv2pnode.png create mode 100644 doc/html/ftv2splitbar.png create mode 100644 doc/html/ftv2vertline.png create mode 100644 doc/html/functions.html create mode 100644 doc/html/functions_func.html create mode 100644 doc/html/globals.html create mode 100644 doc/html/globals_func.html create mode 100644 doc/html/globals_type.html create mode 100644 doc/html/graph_legend.html create mode 100644 doc/html/graph_legend.md5 create mode 100644 doc/html/graph_legend.png create mode 100644 doc/html/hierarchy.html create mode 100644 doc/html/index.html create mode 100644 doc/html/inherit_graph_0.map create mode 100644 doc/html/inherit_graph_0.md5 create mode 100644 doc/html/inherit_graph_0.png create mode 100644 doc/html/inherit_graph_1.map create mode 100644 doc/html/inherit_graph_1.md5 create mode 100644 doc/html/inherit_graph_1.png create mode 100644 doc/html/inherit_graph_2.map create mode 100644 doc/html/inherit_graph_2.md5 create mode 100644 doc/html/inherit_graph_2.png create mode 100644 doc/html/inherit_graph_3.map create mode 100644 doc/html/inherit_graph_3.md5 create mode 100644 doc/html/inherit_graph_3.png create mode 100644 doc/html/inherit_graph_4.map create mode 100644 doc/html/inherit_graph_4.md5 create mode 100644 doc/html/inherit_graph_4.png create mode 100644 doc/html/inherit_graph_5.map create mode 100644 doc/html/inherit_graph_5.md5 create mode 100644 doc/html/inherit_graph_5.png create mode 100644 doc/html/inherits.html create mode 100644 doc/html/jquery.js create mode 100644 doc/html/nav_f.png create mode 100644 doc/html/nav_g.png create mode 100644 doc/html/nav_h.png create mode 100644 doc/html/open.png create mode 100644 doc/html/pso__example_8py_source.html create mode 100644 doc/html/search/all_0.html create mode 100644 doc/html/search/all_0.js create mode 100644 doc/html/search/all_1.html create mode 100644 doc/html/search/all_1.js create mode 100644 doc/html/search/all_2.html create mode 100644 doc/html/search/all_2.js create mode 100644 doc/html/search/all_3.html create mode 100644 doc/html/search/all_3.js create mode 100644 doc/html/search/all_4.html create mode 100644 doc/html/search/all_4.js create mode 100644 doc/html/search/all_5.html create mode 100644 doc/html/search/all_5.js create mode 100644 doc/html/search/all_6.html create mode 100644 doc/html/search/all_6.js create mode 100644 doc/html/search/all_7.html create mode 100644 doc/html/search/all_7.js create mode 100644 doc/html/search/all_8.html create mode 100644 doc/html/search/all_8.js create mode 100644 doc/html/search/classes_0.html create mode 100644 doc/html/search/classes_0.js create mode 100644 doc/html/search/classes_1.html create mode 100644 doc/html/search/classes_1.js create mode 100644 doc/html/search/classes_2.html create mode 100644 doc/html/search/classes_2.js create mode 100644 doc/html/search/classes_3.html create mode 100644 doc/html/search/classes_3.js create mode 100644 doc/html/search/close.png create mode 100644 doc/html/search/files_0.html create mode 100644 doc/html/search/files_0.js create mode 100644 doc/html/search/functions_0.html create mode 100644 doc/html/search/functions_0.js create mode 100644 doc/html/search/functions_1.html create mode 100644 doc/html/search/functions_1.js create mode 100644 doc/html/search/functions_2.html create mode 100644 doc/html/search/functions_2.js create mode 100644 doc/html/search/functions_3.html create mode 100644 doc/html/search/functions_3.js create mode 100644 doc/html/search/functions_4.html create mode 100644 doc/html/search/functions_4.js create mode 100644 doc/html/search/functions_5.html create mode 100644 doc/html/search/functions_5.js create mode 100644 doc/html/search/mag_sel.png create mode 100644 doc/html/search/nomatches.html create mode 100644 doc/html/search/pages_0.html create mode 100644 doc/html/search/pages_0.js create mode 100644 doc/html/search/search.css create mode 100644 doc/html/search/search.js create mode 100644 doc/html/search/search_l.png create mode 100644 doc/html/search/search_m.png create mode 100644 doc/html/search/search_r.png create mode 100644 doc/html/search/typedefs_0.html create mode 100644 doc/html/search/typedefs_0.js create mode 100644 doc/html/struct__Param-members.html create mode 100644 doc/html/struct__Param.html create mode 100644 doc/html/struct__point-members.html create mode 100644 doc/html/struct__point.html create mode 100644 doc/html/sync_off.png create mode 100644 doc/html/sync_on.png create mode 100644 doc/html/tab_a.png create mode 100644 doc/html/tab_b.png create mode 100644 doc/html/tab_h.png create mode 100644 doc/html/tab_s.png create mode 100644 doc/html/tabs.css create mode 100644 python/CSMOn.py create mode 100644 python/CSMOn_wrapper.cpp create mode 100644 python/Makefile create mode 100644 python/fitnessFunction.py create mode 100644 python/pso_example.py diff --git a/cpp/CSMOn.cpp b/cpp/CSMOn.cpp new file mode 100644 index 0000000..9b188fb --- /dev/null +++ b/cpp/CSMOn.cpp @@ -0,0 +1,200 @@ +/* + * Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * Additionally, if used for any scientific purpose, the following reference + * must be cited: + * + * Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado. + * 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic + * Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017, + * pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326 + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "CSMOn.hpp" + +/** + * @brief Class for CSMOn. + * + * Always call this class directly (instead of the search method). + * + * @param search The instance for the search method. + * @param M The maximum number of fitness function evaluations allocated for this run. + * @param R The relaxation to be used for the limit calculations, in the interval ]0,1[. For decreasing relaxation, provide it in negative values. + * @param minEstimatedFit The lowest fitness value expected. + */ +CSMOn::CSMOn(ISearch *search, int M, double R, double minEstimatedFit) { + this->search = search; + this->M = M; + this->minEstimatedFit = minEstimatedFit; + if(R < 0){ + autoRelaxation = true; + this->R = abs(R); + } + else{ + autoRelaxation = false; + this->R = R; + } + + search->startup(); + + s = -1; +} + +CSMOn::~CSMOn() {} + +ISearch::~ISearch() {} + +/** + * @brief Call this method to execute the search. + */ +void CSMOn::run() { + int pT = -1, pS = -1; + double r = (autoRelaxation ? 0.99 : R); + getBest(1); + do{ + r = (autoRelaxation ? max(r*r, R) : r); + if(pS == -1) + pT = adjustExp(r); + if(pT > 0) + pS = adjustLog(r, pT); + }while(getNEvals() < M && (r > R || pS == -1)); +} + +int CSMOn::adjustExp(double r) { + int sPrev = s; + getBest(2); + if(s-sPrev < 2) return -1; + int pB = -1; + double alpha1, alpha2; + while(getNEvals() < M){ + if(decayE() < r && decayL() < r){ + if(pB == -1){ + pB = s-2; + alpha2 = alphaE(pB, s); + } + else{ + alpha1 = alpha2; + alpha2 = alphaE(pB, s); + if(alpha2 < alpha1) return s; + } + } + else pB = -1; + getBest(1); + } + return -1; +} + +int CSMOn::adjustLog(double r, int pT) { + int sPrev = s; + getBest(3); + if(s-sPrev < 3) return -1; + double alpha1 = alphaP(pT, s-1); + double alpha2 = alphaP(pT, s); + while(alpha2 >= alpha1 && getNEvals() < M){ + if(decayE() >= r || decayL() >= r) return -1; + getBest(1); + alpha1 = alpha2; + alpha2 = alphaP(pT, s); + } + return s; +} + +void CSMOn::getBest(int nBest) { + for(int i=0; i < nBest && search->getNEvals() < M; i++){ + search->next(M); + gb.push_back(t_point(search->getNEvals(), search->getFitness())); + s++; + } +} + +double CSMOn::decayE() { + return fabs(1 - (gb[s].y-minEstimatedFit) / (gb[s-1].y-minEstimatedFit)); +} + +double CSMOn::decayL() { + return fabs(1 - (gb[s].y-gb[s-1].y) / (gb[s-1].y-gb[s-2].y)); +} + +double CSMOn::alphaE(int p1, int p2) { + int i, n = p2 - p1 + 1; + double yAvg = 0, yAvgLn, ySumLn = 0, xSum = 0, xAvg, S1 = 0, S2 = 0, aux; + for(i=p1; i <= p2; i++){ + xSum += gb[i].x; + yAvg += gb[i].y; + ySumLn += log(gb[i].y); + } + xAvg = xSum / n; + yAvg /= n; + yAvgLn = ySumLn / n; + for(i=p1; i <= p2; i++){ + aux = (gb[i].x - xAvg); + S1 += aux * (gb[i].y - yAvgLn); + S2 += aux * aux; + } + return (ySumLn - (S1 / S2) * xSum) / n; +} + +double CSMOn::alphaP(int p1, int p2) { + int i, n = p2 - p1 + 1; + double yAvgLog, ySumLog = 0, xAvgLog, xSumLog = 0, S1 = 0, S2 = 0, aux; + for(i=p1; i <= p2; i++){ + xSumLog += log10(gb[i].x); + ySumLog += log10(gb[i].y); + } + xAvgLog = xSumLog / n; + yAvgLog = ySumLog / n; + for(i=p1; i <= p2; i++){ + aux = (log10(gb[i].x) - xAvgLog); + S1 += aux * (log10(gb[i].y) - yAvgLog); + S2 += aux * aux; + } + return (ySumLog - (S1 / S2) * xSumLog) / n; +} + +/** + * @brief Get the final fitness value. + * + * + * @return The final fitness value. + */ +double CSMOn::getFitness() { + return search->getFitness(); +} + +/** + * @brief Get the actual number of evaluations executed. + * + * + * @return The actual number of evaluations executed. + */ +int CSMOn::getNEvals() { + return search->getNEvals(); +} + +/** + * @brief Get the final optimized result (position). + * + * + * @return The final position. + */ +int CSMOn::getBestPos(double *x) { + return search->getBestPos(x); +} diff --git a/cpp/CSMOn.hpp b/cpp/CSMOn.hpp new file mode 100644 index 0000000..d2ef6a7 --- /dev/null +++ b/cpp/CSMOn.hpp @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * Additionally, if used for any scientific purpose, the following reference + * must be cited: + * + * Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado. + * 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic + * Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017, + * pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326 + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * @mainpage Convergence Stabilization Modeling operating in Online Mode + * + * This is an automated method to estimate the best moment to stop swarm + * iterations based on the analysis of the convergence behavior presented + * during optimization, aiming to provide an effective balance between + * saving fitness evaluations and keeping the optimization quality. + * The convergence analysis is performed through a sequence of linear + * regressions using exponential and log-like curves. + * + * @date 04/Mar/2017 + * @author Peter Frank Perroni (pfperroni@gmail.com) + */ + +#ifndef CSMON_HPP_ +#define CSMON_HPP_ + +#include <vector> +#include <cmath> +#include "ISearch.hpp" + +using namespace std; + +/** + * @brief A point representing the number of evaluations and the respective fitness value. + * + * @date 04/Mar/2017 + * @author Peter Frank Perroni (pfperroni@gmail.com) + */ +typedef struct _point{ + int x; + double y; + _point(int _x, int _y){ + x = _x, y = _y; + } +}t_point; + +/** + * @brief Convergence Stabilization Modeling operating in Online Mode ( formely called of C'MOn! ). + * + * @date 04/Mar/2017 + * @author Peter Frank Perroni (pfperroni@gmail.com) + */ +class CSMOn{ + ISearch *search; + bool autoRelaxation; + int M, s; + double R, minEstimatedFit; + vector<t_point> gb; + + double decayE(); + double decayL(); + double alphaE(int p1, int p2); + double alphaP(int p1, int p2); + +public: + CSMOn(ISearch *search, int M, double R, double minEstimatedFit); + virtual ~CSMOn(); + void run(); + void getBest(int nBest); + int adjustExp(double r); + int adjustLog(double r, int pT); + int getNEvals(); + double getFitness(); + int getBestPos(double *x); + +}; + +#endif /* CSMON_HPP_ */ diff --git a/cpp/ISearch.hpp b/cpp/ISearch.hpp new file mode 100644 index 0000000..efd7448 --- /dev/null +++ b/cpp/ISearch.hpp @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * Additionally, if used for any scientific purpose, the following reference + * must be cited: + * + * Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado. + * 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic + * Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017, + * pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326 + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef ISEARCH_HPP_ +#define ISEARCH_HPP_ + +/** + * @brief The interface that the search methods must to implement. + * + * @date 04/Mar/2017 + * @author Peter Frank Perroni (pfperroni@gmail.com) + */ +class ISearch{ +public: + ISearch(){} + virtual ~ISearch()=0; + /** + * @brief Startup the search method. + */ + virtual void startup()=0; + /** + * @brief Obtain the next improvement. + * + * @param M The maximum number of evaluations allowed. + */ + virtual void next(int M)=0; + /** + * @brief Get the best result obtained up to the moment. + * + * @param _x A pointer to store the positions of the best result. + * @return An ID for the best result (implementation specific). + */ + virtual int getBestPos(double *_x)=0; + /** + * @brief Get the number of fitness function evaluations performed up to the moment. + * + * @return The number of evaluations performed. + */ + virtual int getNEvals()=0; + /** + * @brief Get the best fitness value found up to the moment. + * + * + * @return The best fitness value found. + */ + virtual double getFitness()=0; +}; + +#endif /* ISEARCH_HPP_ */ diff --git a/cpp/PSO.cpp b/cpp/PSO.cpp new file mode 100644 index 0000000..8c878d1 --- /dev/null +++ b/cpp/PSO.cpp @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * Additionally, if used for any scientific purpose, the following reference + * must be cited: + * + * Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado. + * 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic + * Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017, + * pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326 + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "PSO.hpp" + +/** + * @brief A standard implementation of PSO. + * + * @param fitnessFunction The callback reference to the fitness function. + * @param s1 The lower bound of the search space. + * @param s2 The upper bound of the search space. + * @param p The number of particles. + * @param n The number of dimensions of the problem. + * @param w The acceleration coefficient. For linear decreasing weight, provide it in negative values + * @param c1 The cognitive knowledge rate. + * @param c2 The social knowledge rate. + */ +PSO::PSO(callback_t fitnessFunction, double s1, double s2, int p, int n, double w, double c1, double c2){ + this->fitnessFunction = fitnessFunction; + this->s1 = s1; + this->s2 = s2; + this->p = p; + this->n = n; + this->c1 = c1; + this->c2 = c2; + if(w < 0){ + decreasingW = true; + this->w = abs(w); + } + else{ + decreasingW = false; + this->w = w; + } + + Gb = new double[n]; + pb = new double*[p]; + pb_Fit = new double[p]; + x = new double*[p]; + fit = new double[p]; + v = new double*[p]; + for(int i=0; i < p; i++){ + pb[i] = new double[n]; + x[i] = new double[n]; + v[i] = new double[n]; + } + seed = 1; + nEvals = 0; + Gb_Fit = DBL_MAX; + gb = -1; +} + +PSO::~PSO() { + for(int i=0; i < p; i++){ + delete pb[i]; + delete x[i]; + delete v[i]; + } + delete Gb; + delete pb; + delete pb_Fit; + delete x; + delete fit; + delete v; +} + +/** + * @brief Startup the PSO. + */ +void PSO::startup(){ + seed = getRandomSeed(); + nEvals = 0; + Gb_Fit = DBL_MAX; + gb = -1; + + for(int j, i=0; i < p; i++){ + for(j=0; j < n; j++) v[i][j] = RAND_DOUBLE(seed, s1, s2)/10; + for(j=0; j < n; j++) x[i][j] = RAND_DOUBLE(seed, s1, s2); + COPY_ARR(x[i], pb[i], n); + pb_Fit[i] = fit[i] = fitnessFunction(x[i], n); + if(pb_Fit[i] < Gb_Fit){ + COPY_ARR(pb[i], Gb, n); + Gb_Fit = pb_Fit[i]; + gb = i; + } + } +} + +/** + * @brief Obtain the next improvement. + * + * @param M The maximum number of evaluations allowed. + */ +void PSO::next(int M) { + bool found = false; + int i, j; + double currW = w - (w / M) * nEvals; + while(!found && nEvals < M){ + for(i=0; i < p; i++){ + for(j=0; j < n; j++){ + v[i][j] = currW * v[i][j] + c1 * RAND_DOUBLE(seed, 0, 1) * (pb[i][j] - x[i][j]) + + c2 * RAND_DOUBLE(seed, 0, 1) * (Gb[j] - x[i][j]); + x[i][j] += v[i][j]; + if(x[i][j] < s1) + x[i][j] = s1; + else if(x[i][j] > s2) + x[i][j] = s2; + } + fit[i] = fitnessFunction(x[i], n); + nEvals++; + } + for(i=0; i < p; i++){ + if(fit[i] < pb_Fit[i]){ + COPY_ARR(x[i], pb[i], n); + pb_Fit[i] = fit[i]; + if(pb_Fit[i] < Gb_Fit){ + found = true; + COPY_ARR(pb[i], Gb, n); + Gb_Fit = pb_Fit[i]; + gb = i; + } + } + } + if(decreasingW) currW -= w / M; + } +} + +/** + * @brief Get the best result obtained up to the moment (global best). + * + * @param _x A pointer to store the positions of the global best. + * @return The index of the particle that found the global best position. + */ +int PSO::getBestPos(double *_x){ + COPY_ARR(pb[gb], _x, n); + return gb; +} + +/** + * @brief Get the number of fitness function evaluations performed up to the moment. + * + * @return The number of evaluations performed. + */ +int PSO::getNEvals() { + return nEvals; +} + +/** + * @brief Get the best fitness value found up to the moment. + * + * + * @return The best fitness value found. + */ +double PSO::getFitness() { + return Gb_Fit; +} + +/** + * @brief Get a random number to be used as seed for the random number generator. + * + * This implementation can be adapted/changed as necessary. + * + * @return A random seed. + */ +unsigned int PSO::getRandomSeed(){ + struct timeval tv; + gettimeofday(&tv,NULL); + return tv.tv_usec; +} diff --git a/cpp/PSO.hpp b/cpp/PSO.hpp new file mode 100644 index 0000000..f99e4cf --- /dev/null +++ b/cpp/PSO.hpp @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * Additionally, if used for any scientific purpose, the following reference + * must be cited: + * + * Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado. + * 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic + * Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017, + * pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326 + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef PSO_HPP_ +#define PSO_HPP_ + +#include <sys/time.h> +#include <float.h> +#include <stdlib.h> +#include "ISearch.hpp" + +#define PI (3.141592653589793238462643383279) + +#define COPY_ARR(orig, dest, sz) for(int _i_=0; _i_ < sz; dest[_i_] = orig[_i_], _i_++); + +#define RAND_DOUBLE(seed, a, b) ((a==b)?a:(a+(((double)rand_r(&seed))/RAND_MAX)*(b-a))) + +typedef double (*callback_t)(double *buf, int n); + +/** + * @brief Particle Swarm Optimization. + * + * @date 04/Mar/2017 + * @author Peter Frank Perroni (pfperroni@gmail.com) + */ +class PSO : public ISearch{ + unsigned int seed; + bool decreasingW; + int p, n, nEvals, gb; + double **x, *fit, s1, s2, w, c1, c2, *Gb, Gb_Fit, **pb, *pb_Fit, **v; + + callback_t fitnessFunction; + +public: + PSO(callback_t fitnessFunction, double s1, double s2, int p, int n, double w, double c1, double c2) ; + ~PSO(); + void startup(); + void next(int M); + int getBestPos(double *_x); + int getNEvals(); + double getFitness(); + unsigned int getRandomSeed(); +}; + +#endif /* PSO_HPP_ */ diff --git a/doc/CSMOn.pdf b/doc/CSMOn.pdf new file mode 100644 index 0000000000000000000000000000000000000000..30c9604dcff5ccd83f87339441e7aee45c2e3087 GIT binary patch literal 148232 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%0DLSKK@^lm6k+Pooh(-$2R z3r79xZ{=3ET#bHXux@6`7gk->n3*QUw(8GjcYP=n*!b(GUQzOooQW!{*BE~7>-_C; zHr&cHmZhyv`B1CUOMB@%_XBM7w&vZF^AQpe`7~qp=f79e0+&b@F@((7IX^S!tHPG; zt^zXCr?h!b(2A=nxX~85WsZQ%wbe#z{`O6HyOg<nQ{Iidn;ULQdF0sXC7u;pw?T{h z%XIts@40R;6eReBet9b;#=5ciym8$L!D)J>Umle>2QKY)n>*p@wTh`LHkoaT>ioa4 zi1VVgtY|}SUP0`ioOwdOiUaIgqVvAG-qy4@{`6hJ>W-`LuZQj5dBkr;ini>0xhl_0 z_c`HBPqWV642pF!KeSk;!F=UK{`Zw4%-^O~IRBXWaKpB?wP$SEgJ!&#)vl7hGx=Y` z(!fo&jk%`Vwf09iRwkvkm#s8=|H$q2o;?1!i+r~1vEb=#{Sl)xFVAMuF?U8on~XHs zV|sF)1vfvRkNB9VwM6gfl5@7}dZc=;2<HSRe|z%td$Y~QEvcJC{)<nxdvLSLH~1Le z-v_MsS8a&p+m*ED`{Q!0nxuK#ESZAY%--ycoU5``Gt}?*O?mzkKaSqt)lq-#&h#th zDNh#3y1DY*KX5ZN^QCLgdBXq&K7q%nTE|;{Z>#pJeRpkz&pyE;7Y}oDo$5#n&Hrev z?X6$U^{Z0U?4n#qnoL;5u8Z=|3{J>rp2%CEob~!yZT?ZYgPY`~o3Ao`pK0c35__GW zd+wIYY`x(zR|H?RUv6jcUG+}=dDNn{4z4zjDixa|QuO@IJD-@$bkr1=Th_Jdpi)== zl4BMQzmz#;c1fKTPMezlxXa+**7Z7)bHjXWe;>PH{ZR1ctc#c8FDB1laks6$aN_cJ zU7AX!KiJRSoZD})h&`oudbi?=sn>XZ_}=-oSfcWXt%UaRb#h|%6<TjjmAjum9W!M@ zhy;V`FT+=vZT%~&G9FrAwp#h~70a)$XFi#hah{)WI?ySTNnwZV-mK;7*R7-sd_!A8 z9{5JwWm(<0yx`KYTqE9_)pPs}WFK8gXgTE6yhP?e+leLS{FiT8y*;oqX8Q_b&u2-B zUWQkDIOgQb$Hj!TeUQDirbK@CCvl}m3p{L6=PT@)=5s(pY|&YPi)*INwG6wpDzaju z_OzRwy9&G3T1&iraHIVAl1m?i=S04a{;{G)NM2>d1K&HRH6Fb>>L$KzW2DgC;x2>3 zfqkbA?O$<yvYm7Oe9if;=NnI#>|19tXKvGrFAozxJYL*eyzCHz+}-&lkMemGYjZyp zcI;ZeI{I(^oNclDw_K>GoB3>Wh?L4LSN6X?Y7cyZ=G9*F|M|4*fYnkpnYQFUTeAYs z6+x2kvI7oWU+&?Nda+R?L@skHYi*a}538W`9g82_-Ⓢ(&X)@&iTDb`g7Q7wK@6! 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∨3Wx?_KNFYP}1HTC=(_f4TpKhMokX;Sqq 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 literal 0 HcmV?d00001 diff --git a/doc/html/CSMOn_8cpp_source.html b/doc/html/CSMOn_8cpp_source.html new file mode 100644 index 0000000..968d517 --- /dev/null +++ b/doc/html/CSMOn_8cpp_source.html @@ -0,0 +1,281 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: cpp/CSMOn.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_df511e5bd85cec96854b39d5e1c27aa8.html">cpp</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">CSMOn.cpp</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com)</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * of this software and associated documentation files (the "Software"), to deal</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * in the Software without restriction, including without limitation the rights</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * The above copyright notice and this permission notice shall be included in</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * </span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * Additionally, if used for any scientific purpose, the following reference</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * must be cited:</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado.</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017,</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * THE SOFTWARE.</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "CSMOn.hpp"</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div> +<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classCSMOn.html#a9b25325acfda9b579b3a272ed474480e"> 43</a></span> <a class="code" href="classCSMOn.html#a9b25325acfda9b579b3a272ed474480e">CSMOn::CSMOn</a>(<a class="code" href="classISearch.html">ISearch</a> *<a class="code" href="CSMOn__wrapper_8cpp.html#a918c532a1803542131c64811335fe6d7">search</a>, <span class="keywordtype">int</span> M, <span class="keywordtype">double</span> R, <span class="keywordtype">double</span> minEstimatedFit) {</div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  this->search = search;</div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  this->M = M;</div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  this->minEstimatedFit = minEstimatedFit;</div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span>(R < 0){</div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  autoRelaxation = <span class="keyword">true</span>;</div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  this->R = abs(R);</div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">else</span>{</div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  autoRelaxation = <span class="keyword">false</span>;</div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  this->R = R;</div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  search-><a class="code" href="classISearch.html#a8eabe4ae3ed69ede2646a536f558f2fe">startup</a>();</div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  s = -1;</div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> CSMOn::~CSMOn() {}</div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> ISearch::~ISearch() {}</div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div> +<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classCSMOn.html#a287ef04ef03f758a2a121057e9798c22"> 68</a></span> <span class="keywordtype">void</span> <a class="code" href="classCSMOn.html#a287ef04ef03f758a2a121057e9798c22">CSMOn::run</a>() {</div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">int</span> pT = -1, pS = -1;</div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">double</span> r = (autoRelaxation ? 0.99 : R);</div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  getBest(1);</div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">do</span>{</div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  r = (autoRelaxation ? max(r*r, R) : r);</div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span>(pS == -1)</div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  pT = adjustExp(r);</div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>(pT > 0)</div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  pS = adjustLog(r, pT);</div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }<span class="keywordflow">while</span>(<a class="code" href="classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593">getNEvals</a>() < M && (r > R || pS == -1));</div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">int</span> CSMOn::adjustExp(<span class="keywordtype">double</span> r) {</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">int</span> sPrev = s;</div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  getBest(2);</div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span>(s-sPrev < 2) <span class="keywordflow">return</span> -1;</div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">int</span> pB = -1;</div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">double</span> alpha1, alpha2;</div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">while</span>(<a class="code" href="classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593">getNEvals</a>() < M){</div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span>(decayE() < r && decayL() < r){</div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>(pB == -1){</div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  pB = s-2;</div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  alpha2 = alphaE(pB, s);</div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">else</span>{</div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  alpha1 = alpha2;</div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  alpha2 = alphaE(pB, s);</div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span>(alpha2 < alpha1) <span class="keywordflow">return</span> s;</div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">else</span> pB = -1;</div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  getBest(1);</div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> -1;</div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keywordtype">int</span> CSMOn::adjustLog(<span class="keywordtype">double</span> r, <span class="keywordtype">int</span> pT) {</div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">int</span> sPrev = s;</div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  getBest(3);</div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span>(s-sPrev < 3) <span class="keywordflow">return</span> -1;</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">double</span> alpha1 = alphaP(pT, s-1);</div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordtype">double</span> alpha2 = alphaP(pT, s);</div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">while</span>(alpha2 >= alpha1 && <a class="code" href="classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593">getNEvals</a>() < M){</div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span>(decayE() >= r || decayL() >= r) <span class="keywordflow">return</span> -1;</div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  getBest(1);</div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  alpha1 = alpha2;</div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  alpha2 = alphaP(pT, s);</div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> s;</div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keywordtype">void</span> CSMOn::getBest(<span class="keywordtype">int</span> nBest) {</div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i < nBest && search-><a class="code" href="classISearch.html#a56f6b069cc3dd7f8e3f2ff38bb681639">getNEvals</a>() < M; i++){</div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  search-><a class="code" href="classISearch.html#ae3cc643bf0fbe9d9bac1d43642bbb129">next</a>(M);</div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  gb.push_back(<a class="code" href="struct__point.html">t_point</a>(search-><a class="code" href="classISearch.html#a56f6b069cc3dd7f8e3f2ff38bb681639">getNEvals</a>(), search-><a class="code" href="classISearch.html#a3504ed6684ca6c82aa79c40b965d5237">getFitness</a>()));</div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  s++;</div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> }</div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="keywordtype">double</span> CSMOn::decayE() {</div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> fabs(1 - (gb[s].y-minEstimatedFit) / (gb[s-1].y-minEstimatedFit));</div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keywordtype">double</span> CSMOn::decayL() {</div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> fabs(1 - (gb[s].y-gb[s-1].y) / (gb[s-1].y-gb[s-2].y));</div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> }</div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keywordtype">double</span> CSMOn::alphaE(<span class="keywordtype">int</span> p1, <span class="keywordtype">int</span> p2) {</div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">int</span> i, n = p2 - p1 + 1;</div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordtype">double</span> yAvg = 0, yAvgLn, ySumLn = 0, xSum = 0, xAvg, S1 = 0, S2 = 0, aux;</div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">for</span>(i=p1; i <= p2; i++){</div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  xSum += gb[i].x;</div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  yAvg += gb[i].y;</div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  ySumLn += log(gb[i].y);</div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  xAvg = xSum / n;</div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  yAvg /= n;</div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  yAvgLn = ySumLn / n;</div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">for</span>(i=p1; i <= p2; i++){</div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  aux = (gb[i].x - xAvg);</div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  S1 += aux * (gb[i].y - yAvgLn);</div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  S2 += aux * aux;</div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span> (ySumLn - (S1 / S2) * xSum) / n;</div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> }</div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="keywordtype">double</span> CSMOn::alphaP(<span class="keywordtype">int</span> p1, <span class="keywordtype">int</span> p2) {</div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">int</span> i, n = p2 - p1 + 1;</div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordtype">double</span> yAvgLog, ySumLog = 0, xAvgLog, xSumLog = 0, S1 = 0, S2 = 0, aux;</div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">for</span>(i=p1; i <= p2; i++){</div> +<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  xSumLog += log10(gb[i].x);</div> +<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  ySumLog += log10(gb[i].y);</div> +<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  xAvgLog = xSumLog / n;</div> +<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  yAvgLog = ySumLog / n;</div> +<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">for</span>(i=p1; i <= p2; i++){</div> +<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  aux = (log10(gb[i].x) - xAvgLog);</div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  S1 += aux * (log10(gb[i].y) - yAvgLog);</div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  S2 += aux * aux;</div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> (ySumLog - (S1 / S2) * xSumLog) / n;</div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> }</div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div> +<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classCSMOn.html#a4b1a2a4e99746adec24b3cdf683f31c5"> 178</a></span> <span class="keywordtype">double</span> <a class="code" href="classCSMOn.html#a4b1a2a4e99746adec24b3cdf683f31c5">CSMOn::getFitness</a>() {</div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> search-><a class="code" href="classISearch.html#a3504ed6684ca6c82aa79c40b965d5237">getFitness</a>();</div> +<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div> +<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div> +<div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593"> 188</a></span> <span class="keywordtype">int</span> <a class="code" href="classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593">CSMOn::getNEvals</a>() {</div> +<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> search-><a class="code" href="classISearch.html#a56f6b069cc3dd7f8e3f2ff38bb681639">getNEvals</a>();</div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> }</div> +<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div> +<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classCSMOn.html#ac5665384c5c4af241bbead4f98fdb3c6"> 198</a></span> <span class="keywordtype">int</span> <a class="code" href="classCSMOn.html#ac5665384c5c4af241bbead4f98fdb3c6">CSMOn::getBestPos</a>(<span class="keywordtype">double</span> *x) {</div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">return</span> search-><a class="code" href="classISearch.html#a9cee257ee19c02341da60440c5cddbd8">getBestPos</a>(x);</div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> }</div> +<div class="ttc" id="classCSMOn_html_a9b25325acfda9b579b3a272ed474480e"><div class="ttname"><a href="classCSMOn.html#a9b25325acfda9b579b3a272ed474480e">CSMOn::CSMOn</a></div><div class="ttdeci">CSMOn(ISearch *search, int M, double R, double minEstimatedFit)</div><div class="ttdoc">Class for CSMOn. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8cpp_source.html#l00043">CSMOn.cpp:43</a></div></div> +<div class="ttc" id="struct__point_html"><div class="ttname"><a href="struct__point.html">_point</a></div><div class="ttdoc">A point representing the number of evaluations and the respective fitness value. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8hpp_source.html#l00060">CSMOn.hpp:60</a></div></div> +<div class="ttc" id="classISearch_html_a8eabe4ae3ed69ede2646a536f558f2fe"><div class="ttname"><a href="classISearch.html#a8eabe4ae3ed69ede2646a536f558f2fe">ISearch::startup</a></div><div class="ttdeci">virtual void startup()=0</div><div class="ttdoc">Startup the search method. </div></div> +<div class="ttc" id="classISearch_html"><div class="ttname"><a href="classISearch.html">ISearch</a></div><div class="ttdoc">The interface that the search methods must to implement. </div><div class="ttdef"><b>Definition:</b> <a href="ISearch_8hpp_source.html#l00040">ISearch.hpp:40</a></div></div> +<div class="ttc" id="classCSMOn_html_ac5665384c5c4af241bbead4f98fdb3c6"><div class="ttname"><a href="classCSMOn.html#ac5665384c5c4af241bbead4f98fdb3c6">CSMOn::getBestPos</a></div><div class="ttdeci">int getBestPos(double *x)</div><div class="ttdoc">Get the final optimized result (position). </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8cpp_source.html#l00198">CSMOn.cpp:198</a></div></div> +<div class="ttc" id="classISearch_html_a3504ed6684ca6c82aa79c40b965d5237"><div class="ttname"><a href="classISearch.html#a3504ed6684ca6c82aa79c40b965d5237">ISearch::getFitness</a></div><div class="ttdeci">virtual double getFitness()=0</div><div class="ttdoc">Get the best fitness value found up to the moment. </div></div> +<div class="ttc" id="classCSMOn_html_a287ef04ef03f758a2a121057e9798c22"><div class="ttname"><a href="classCSMOn.html#a287ef04ef03f758a2a121057e9798c22">CSMOn::run</a></div><div class="ttdeci">void run()</div><div class="ttdoc">Call this method to execute the search. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8cpp_source.html#l00068">CSMOn.cpp:68</a></div></div> +<div class="ttc" id="classISearch_html_ae3cc643bf0fbe9d9bac1d43642bbb129"><div class="ttname"><a href="classISearch.html#ae3cc643bf0fbe9d9bac1d43642bbb129">ISearch::next</a></div><div class="ttdeci">virtual void next(int M)=0</div><div class="ttdoc">Obtain the next improvement. </div></div> +<div class="ttc" id="classISearch_html_a56f6b069cc3dd7f8e3f2ff38bb681639"><div class="ttname"><a href="classISearch.html#a56f6b069cc3dd7f8e3f2ff38bb681639">ISearch::getNEvals</a></div><div class="ttdeci">virtual int getNEvals()=0</div><div class="ttdoc">Get the number of fitness function evaluations performed up to the moment. </div></div> +<div class="ttc" id="classCSMOn_html_a4b1a2a4e99746adec24b3cdf683f31c5"><div class="ttname"><a href="classCSMOn.html#a4b1a2a4e99746adec24b3cdf683f31c5">CSMOn::getFitness</a></div><div class="ttdeci">double getFitness()</div><div class="ttdoc">Get the final fitness value. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8cpp_source.html#l00178">CSMOn.cpp:178</a></div></div> +<div class="ttc" id="CSMOn__wrapper_8cpp_html_a918c532a1803542131c64811335fe6d7"><div class="ttname"><a href="CSMOn__wrapper_8cpp.html#a918c532a1803542131c64811335fe6d7">search</a></div><div class="ttdeci">void search(char *method, Param *inParam, Param *outParam, double *outPos, callback_t fitnessFunction)</div><div class="ttdoc">The wrapper function for Python calls. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn__wrapper_8cpp_source.html#l00069">CSMOn_wrapper.cpp:69</a></div></div> +<div class="ttc" id="classISearch_html_a9cee257ee19c02341da60440c5cddbd8"><div class="ttname"><a href="classISearch.html#a9cee257ee19c02341da60440c5cddbd8">ISearch::getBestPos</a></div><div class="ttdeci">virtual int getBestPos(double *_x)=0</div><div class="ttdoc">Get the best result obtained up to the moment. </div></div> +<div class="ttc" id="classCSMOn_html_af423cda7d5f129d768ec5d4ef6f80593"><div class="ttname"><a href="classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593">CSMOn::getNEvals</a></div><div class="ttdeci">int getNEvals()</div><div class="ttdoc">Get the actual number of evaluations executed. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8cpp_source.html#l00188">CSMOn.cpp:188</a></div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/CSMOn_8hpp_source.html b/doc/html/CSMOn_8hpp_source.html new file mode 100644 index 0000000..a93e89b --- /dev/null +++ b/doc/html/CSMOn_8hpp_source.html @@ -0,0 +1,176 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: cpp/CSMOn.hpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_df511e5bd85cec96854b39d5e1c27aa8.html">cpp</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">CSMOn.hpp</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com)</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * of this software and associated documentation files (the "Software"), to deal</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * in the Software without restriction, including without limitation the rights</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * The above copyright notice and this permission notice shall be included in</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * </span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * Additionally, if used for any scientific purpose, the following reference</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * must be cited:</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado.</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017,</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * THE SOFTWARE.</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#ifndef CSMON_HPP_</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#define CSMON_HPP_</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include <vector></span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include <cmath></span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "ISearch.hpp"</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">using namespace </span>std;</div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div> +<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct__point.html"> 60</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__point.html">_point</a>{</div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">int</span> x;</div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">double</span> y;</div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="struct__point.html">_point</a>(<span class="keywordtype">int</span> _x, <span class="keywordtype">int</span> _y){</div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  x = _x, y = _y;</div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }<a class="code" href="struct__point.html">t_point</a>;</div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div> +<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classCSMOn.html"> 74</a></span> <span class="keyword">class </span><a class="code" href="classCSMOn.html">CSMOn</a>{</div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="classISearch.html">ISearch</a> *<a class="code" href="CSMOn__wrapper_8cpp.html#a918c532a1803542131c64811335fe6d7">search</a>;</div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">bool</span> autoRelaxation;</div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">int</span> M, s;</div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">double</span> R, minEstimatedFit;</div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  vector<t_point> gb;</div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">double</span> decayE();</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">double</span> decayL();</div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">double</span> alphaE(<span class="keywordtype">int</span> p1, <span class="keywordtype">int</span> p2);</div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">double</span> alphaP(<span class="keywordtype">int</span> p1, <span class="keywordtype">int</span> p2);</div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="classCSMOn.html">CSMOn</a>(<a class="code" href="classISearch.html">ISearch</a> *<a class="code" href="CSMOn__wrapper_8cpp.html#a918c532a1803542131c64811335fe6d7">search</a>, <span class="keywordtype">int</span> M, <span class="keywordtype">double</span> R, <span class="keywordtype">double</span> minEstimatedFit);</div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">virtual</span> ~<a class="code" href="classCSMOn.html">CSMOn</a>();</div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">void</span> run();</div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">void</span> getBest(<span class="keywordtype">int</span> nBest);</div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">int</span> adjustExp(<span class="keywordtype">double</span> r);</div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">int</span> adjustLog(<span class="keywordtype">double</span> r, <span class="keywordtype">int</span> pT);</div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">int</span> getNEvals();</div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">double</span> getFitness();</div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">int</span> getBestPos(<span class="keywordtype">double</span> *x);</div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> };</div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#endif </span><span class="comment">/* CSMON_HPP_ */</span><span class="preprocessor"></span></div> +<div class="ttc" id="classCSMOn_html"><div class="ttname"><a href="classCSMOn.html">CSMOn</a></div><div class="ttdoc">Convergence Stabilization Modeling operating in Online Mode ( formely called of C'MOn! )...</div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8hpp_source.html#l00074">CSMOn.hpp:74</a></div></div> +<div class="ttc" id="struct__point_html"><div class="ttname"><a href="struct__point.html">_point</a></div><div class="ttdoc">A point representing the number of evaluations and the respective fitness value. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8hpp_source.html#l00060">CSMOn.hpp:60</a></div></div> +<div class="ttc" id="classISearch_html"><div class="ttname"><a href="classISearch.html">ISearch</a></div><div class="ttdoc">The interface that the search methods must to implement. </div><div class="ttdef"><b>Definition:</b> <a href="ISearch_8hpp_source.html#l00040">ISearch.hpp:40</a></div></div> +<div class="ttc" id="CSMOn__wrapper_8cpp_html_a918c532a1803542131c64811335fe6d7"><div class="ttname"><a href="CSMOn__wrapper_8cpp.html#a918c532a1803542131c64811335fe6d7">search</a></div><div class="ttdeci">void search(char *method, Param *inParam, Param *outParam, double *outPos, callback_t fitnessFunction)</div><div class="ttdoc">The wrapper function for Python calls. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn__wrapper_8cpp_source.html#l00069">CSMOn_wrapper.cpp:69</a></div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/CSMOn_8py_source.html b/doc/html/CSMOn_8py_source.html new file mode 100644 index 0000000..1c36e65 --- /dev/null +++ b/doc/html/CSMOn_8py_source.html @@ -0,0 +1,214 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: python/CSMOn.py Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn +  <span id="projectnumber">1</span> + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_7837fde3ab9c1fb2fc5be7b717af8d79.html">python</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">CSMOn.py</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment"># Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com)</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">#</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"># Permission is hereby granted, free of charge, to any person obtaining a copy</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"># of this software and associated documentation files (the "Software"), to deal</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"># in the Software without restriction, including without limitation the rights</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"># to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"># copies of the Software, and to permit persons to whom the Software is</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"># furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">#</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"># The above copyright notice and this permission notice shall be included in</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"># all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">#</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"># Additionally, if used for any scientific purpose, the following reference</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"># must be cited:</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"># </span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"># Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado.</span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"># 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"># Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017,</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"># pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">#</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"># THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"># OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"># THE SOFTWARE.</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"># CSMOn.cpp</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">#</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"># Created on: 02/Jul/2017</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"># Author: Peter Frank Perroni (pfperroni@gmail.com)</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">#</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"># This module contains all configuration required to call CSMOn C++ API.</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">import</span> ctypes</div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">from</span> ctypes <span class="keyword">import</span> *</div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment"># Send and receive parameters through this object.</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classCSMOn_1_1Param.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="classCSMOn_1_1Param.html">Param</a>(ctypes.Structure):</div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  _fields_ = [(<span class="stringliteral">'name'</span>, ctypes.c_char_p),</div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  (<span class="stringliteral">'c'</span>, ctypes.c_char),</div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  (<span class="stringliteral">'i'</span>, ctypes.c_int),</div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  (<span class="stringliteral">'l'</span>, ctypes.c_long),</div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  (<span class="stringliteral">'f'</span>, ctypes.c_float),</div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  (<span class="stringliteral">'d'</span>, ctypes.c_double)]</div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment"># List of parameters.</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classCSMOn_1_1ParamArrayType.html"> 49</a></span> <span class="keyword">class </span><a class="code" href="classCSMOn_1_1ParamArrayType.html">ParamArrayType</a>:</div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">def </span>from_param(self, param):</div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  typename = type(param).__name__</div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span> hasattr(self, <span class="stringliteral">'from_'</span> + typename):</div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> getattr(self, <span class="stringliteral">'from_'</span> + typename)(param)</div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">elif</span> isinstance(param, ctypes.Array):</div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> param</div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">else</span>:</div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">raise</span> TypeError(<span class="stringliteral">"Can't convert %s"</span> % typename)</div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment"># Cast from array.array objects</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">def </span>from_array(self, param):</div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span> param.typecode != <span class="stringliteral">'d'</span>:</div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">raise</span> TypeError(<span class="stringliteral">'must be an array of param'</span>)</div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  ptr, _ = param.buffer_info()</div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> ctypes.cast(ptr, ctypes.POINTER(Param))</div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment"># Cast from lists/tuples</span></div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">def </span>from_list(self, param):</div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  val = ((Param)*len(param))(*param)</div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> val</div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  from_tuple = from_list</div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment"># Cast from a numpy array</span></div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">def </span>from_ndarray(self, param):</div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> param.ctypes.data_as(ctypes.POINTER(Param))</div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> ParamArray = <a class="code" href="classCSMOn_1_1ParamArrayType.html">ParamArrayType</a>()</div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keywordflow">try</span>:</div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">from</span> fitnessFunction <span class="keyword">import</span> f</div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  callback_t = CFUNCTYPE(c_double, POINTER(c_double), c_int)</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  fitFunc = callback_t(f)</div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment"># Wrapper module must be called CSMOn_wrapper.so and must be present on current folder.</span></div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  _search = ctypes.CDLL(<span class="stringliteral">"./CSMOn_wrapper.so"</span>).search</div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">def </span>search(method, inParam, outParam):</div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  n = -1</div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">for</span> it <span class="keywordflow">in</span> inParam:</div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  if(it.name == <span class="stringliteral">"n"</span>):</div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  n = it.i</div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">break</span></div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  if(n == -1):</div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">print</span> <span class="stringliteral">"Dimension not provided!"</span></div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> NULL</div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment"># Prepare the input parameters.</span></div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  pos = (c_double * n)()</div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  _outParam = (Param * len(outParam))(*outParam)</div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  _search.argtypes = (c_char_p, ParamArray, Param*len(_outParam), c_double * n, callback_t)</div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment"># Call the C++ wrapper function.</span></div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  _search(method, inParam, _outParam, pos, fitFunc)</div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment"># Read the output parameters.</span></div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">for</span> i <span class="keywordflow">in</span> range(_outParam._length_):</div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  outParam[i] = _outParam[i]</div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment"># Return the optimized results.</span></div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> list(pos)</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">except</span> NameError:</div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">print</span> <span class="stringliteral">"Please define the function below:"</span></div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">print</span> <span class="stringliteral">" def f(x, n)"</span></div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">print</span> <span class="stringliteral">"In a file called fitnessFunction.py, then reload this module."</span></div> +<div class="ttc" id="classCSMOn_1_1ParamArrayType_html"><div class="ttname"><a href="classCSMOn_1_1ParamArrayType.html">CSMOn.ParamArrayType</a></div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8py_source.html#l00049">CSMOn.py:49</a></div></div> +<div class="ttc" id="classCSMOn_1_1Param_html"><div class="ttname"><a href="classCSMOn_1_1Param.html">CSMOn.Param</a></div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8py_source.html#l00040">CSMOn.py:40</a></div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 11:11:46 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/CSMOn__wrapper_8cpp.html b/doc/html/CSMOn__wrapper_8cpp.html new file mode 100644 index 0000000..621d453 --- /dev/null +++ b/doc/html/CSMOn__wrapper_8cpp.html @@ -0,0 +1,203 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: python/CSMOn_wrapper.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_7837fde3ab9c1fb2fc5be7b717af8d79.html">python</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Data Structures</a> | +<a href="#typedef-members">Typedefs</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">CSMOn_wrapper.cpp File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include <stdio.h></code><br /> +<code>#include <string.h></code><br /> +<code>#include <iostream></code><br /> +<code>#include "PSO.hpp"</code><br /> +<code>#include "CSMOn.hpp"</code><br /> +</div><div class="textblock"><div class="dynheader"> +Include dependency graph for CSMOn_wrapper.cpp:</div> +<div class="dyncontent"> +<div class="center"><img src="CSMOn__wrapper_8cpp__incl.png" border="0" usemap="#python_2CSMOn__wrapper_8cpp" alt=""/></div> +<map name="python_2CSMOn__wrapper_8cpp" id="python_2CSMOn__wrapper_8cpp"> +<area shape="rect" id="node5" href="PSO_8hpp_source.html" title="PSO.hpp" alt="" coords="277,80,351,107"/><area shape="rect" id="node10" href="CSMOn_8hpp_source.html" title="CSMOn.hpp" alt="" coords="423,80,517,107"/><area shape="rect" id="node9" href="ISearch_8hpp_source.html" title="ISearch.hpp" alt="" coords="371,155,463,181"/></map> +</div> +</div> +<p><a href="CSMOn__wrapper_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Data Structures</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Param.html">_Param</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Contains a parameter received from / sent to the Python caller. <a href="struct__Param.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> +Typedefs</h2></td></tr> +<tr class="memitem:a376fcabfd8429288efa3398dc2f3e8e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a376fcabfd8429288efa3398dc2f3e8e1"></a> +typedef struct <a class="el" href="struct__Param.html">_Param</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="CSMOn__wrapper_8cpp.html#a376fcabfd8429288efa3398dc2f3e8e1">Param</a></td></tr> +<tr class="memdesc:a376fcabfd8429288efa3398dc2f3e8e1"><td class="mdescLeft"> </td><td class="mdescRight">Contains a parameter received from / sent to the Python caller. <br /></td></tr> +<tr class="separator:a376fcabfd8429288efa3398dc2f3e8e1"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:a918c532a1803542131c64811335fe6d7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="CSMOn__wrapper_8cpp.html#a918c532a1803542131c64811335fe6d7">search</a> (char *method, <a class="el" href="CSMOn__wrapper_8cpp.html#a376fcabfd8429288efa3398dc2f3e8e1">Param</a> *inParam, <a class="el" href="CSMOn__wrapper_8cpp.html#a376fcabfd8429288efa3398dc2f3e8e1">Param</a> *outParam, double *outPos, callback_t fitnessFunction)</td></tr> +<tr class="memdesc:a918c532a1803542131c64811335fe6d7"><td class="mdescLeft"> </td><td class="mdescRight">The wrapper function for Python calls. <a href="#a918c532a1803542131c64811335fe6d7">More...</a><br /></td></tr> +<tr class="separator:a918c532a1803542131c64811335fe6d7"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><p>This file contains the wrapper code for Python calls.</p> +<dl class="section date"><dt>Date</dt><dd>02/Jul/2017 </dd></dl> +<dl class="section author"><dt>Author</dt><dd>Peter Frank Perroni (<a href="#" onclick="location.href='mai'+'lto:'+'pfp'+'er'+'ron'+'i@'+'gma'+'il'+'.co'+'m'; return false;">pfper<span style="display: none;">.nosp@m.</span>roni<span style="display: none;">.nosp@m.</span>@gmai<span style="display: none;">.nosp@m.</span>l.co<span style="display: none;">.nosp@m.</span>m</a>) </dd></dl> + +<p>Definition in file <a class="el" href="CSMOn__wrapper_8cpp_source.html">CSMOn_wrapper.cpp</a>.</p> +</div><h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="a918c532a1803542131c64811335fe6d7"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void search </td> + <td>(</td> + <td class="paramtype">char * </td> + <td class="paramname"><em>method</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="CSMOn__wrapper_8cpp.html#a376fcabfd8429288efa3398dc2f3e8e1">Param</a> * </td> + <td class="paramname"><em>inParam</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="CSMOn__wrapper_8cpp.html#a376fcabfd8429288efa3398dc2f3e8e1">Param</a> * </td> + <td class="paramname"><em>outParam</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">double * </td> + <td class="paramname"><em>outPos</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">callback_t </td> + <td class="paramname"><em>fitnessFunction</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>The wrapper function for Python calls. </p> +<p>Call this method from Python using ctypes interface.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">method</td><td>A string speficying the search method to be used. </td></tr> + <tr><td class="paramname">inParam</td><td>The parameters required to call the search method specified. </td></tr> + <tr><td class="paramname">outParam</td><td>The parameters returned by the search method called. This will be returned back to the Python caller. </td></tr> + <tr><td class="paramname">outPos</td><td>The final result containing the optimized position. This will be returned back to the Python caller. </td></tr> + <tr><td class="paramname">fitnessFunction</td><td>The callback Python function containing the code for the fitness function evaluation. </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="CSMOn__wrapper_8cpp_source.html#l00069">69</a> of file <a class="el" href="CSMOn__wrapper_8cpp_source.html">CSMOn_wrapper.cpp</a>.</p> + +</div> +</div> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/CSMOn__wrapper_8cpp__incl.map b/doc/html/CSMOn__wrapper_8cpp__incl.map new file mode 100644 index 0000000..77ecb7e --- /dev/null +++ b/doc/html/CSMOn__wrapper_8cpp__incl.map @@ -0,0 +1,5 @@ +<map id="python/CSMOn_wrapper.cpp" name="python/CSMOn_wrapper.cpp"> +<area shape="rect" id="node5" href="$PSO_8hpp_source.html" title="PSO.hpp" alt="" coords="277,80,351,107"/> +<area shape="rect" id="node10" href="$CSMOn_8hpp_source.html" title="CSMOn.hpp" alt="" coords="423,80,517,107"/> +<area shape="rect" id="node9" href="$ISearch_8hpp_source.html" title="ISearch.hpp" alt="" coords="371,155,463,181"/> +</map> diff --git a/doc/html/CSMOn__wrapper_8cpp__incl.md5 b/doc/html/CSMOn__wrapper_8cpp__incl.md5 new file mode 100644 index 0000000..99e7c25 --- /dev/null +++ b/doc/html/CSMOn__wrapper_8cpp__incl.md5 @@ -0,0 +1 @@ +86e49e61e2ac0d432867564786079fbd \ No newline at end of file diff --git a/doc/html/CSMOn__wrapper_8cpp__incl.png b/doc/html/CSMOn__wrapper_8cpp__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..8280658618e5a094e9dca26b98289bf3aa210064 GIT binary patch literal 23948 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 literal 0 HcmV?d00001 diff --git a/doc/html/CSMOn__wrapper_8cpp_source.html b/doc/html/CSMOn__wrapper_8cpp_source.html new file mode 100644 index 0000000..8311f21 --- /dev/null +++ b/doc/html/CSMOn__wrapper_8cpp_source.html @@ -0,0 +1,207 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: python/CSMOn_wrapper.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_7837fde3ab9c1fb2fc5be7b717af8d79.html">python</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">CSMOn_wrapper.cpp</div> </div> +</div><!--header--> +<div class="contents"> +<a href="CSMOn__wrapper_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com)</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * of this software and associated documentation files (the "Software"), to deal</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * in the Software without restriction, including without limitation the rights</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * The above copyright notice and this permission notice shall be included in</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * </span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * Additionally, if used for any scientific purpose, the following reference</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * must be cited:</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado.</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017,</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * THE SOFTWARE.</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <stdio.h></span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <string.h></span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <iostream></span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "PSO.hpp"</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "CSMOn.hpp"</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div> +<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="struct__Param.html"> 49</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__Param.html">_Param</a> {</div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">char</span> *name;</div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">char</span> c;</div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">int</span> i;</div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">long</span> l;</div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">float</span> f;</div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> d;</div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> } <a class="code" href="CSMOn__wrapper_8cpp.html#a376fcabfd8429288efa3398dc2f3e8e1">Param</a>;</div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div> +<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="CSMOn__wrapper_8cpp.html#a918c532a1803542131c64811335fe6d7"> 69</a></span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> <span class="keywordtype">void</span> <a class="code" href="CSMOn__wrapper_8cpp.html#a918c532a1803542131c64811335fe6d7">search</a>(<span class="keywordtype">char</span>* method, <a class="code" href="struct__Param.html">Param</a> *inParam, <a class="code" href="struct__Param.html">Param</a> *outParam, <span class="keywordtype">double</span> *outPos, callback_t fitnessFunction){</div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Replicate (and adapt) this block of code for each different search method you want to develop.</span></div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// Begin template.</span></div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(strcmp(method, <span class="stringliteral">"pso"</span>) == 0){</div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">double</span> w, c1, c2, s1, s2, R;</div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">int</span> i, n, p, M;</div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// Receive from Python caller any parameter you want.</span></div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">for</span>(i=0; i < 9; i++){</div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span>(strcmp(inParam[i].name, <span class="stringliteral">"w"</span>) == 0) w = inParam[i].d;</div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(inParam[i].name, <span class="stringliteral">"c1"</span>) == 0) c1 = inParam[i].d;</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(inParam[i].name, <span class="stringliteral">"c2"</span>) == 0) c2 = inParam[i].d;</div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(inParam[i].name, <span class="stringliteral">"n"</span>) == 0) n = inParam[i].i;</div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(inParam[i].name, <span class="stringliteral">"p"</span>) == 0) p = inParam[i].i;</div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(inParam[i].name, <span class="stringliteral">"s1"</span>) == 0) s1 = inParam[i].d;</div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(inParam[i].name, <span class="stringliteral">"s2"</span>) == 0) s2 = inParam[i].d;</div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(inParam[i].name, <span class="stringliteral">"M"</span>) == 0) M = inParam[i].i;</div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(inParam[i].name, <span class="stringliteral">"R"</span>) == 0) R = inParam[i].d;</div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  printf(<span class="stringliteral">"[CSMOn] Called search method %s with parameters: s1=%f, s2=%f, w=%f, c1=%f, c2=%f, n=%i, p=%i, M=%i, R=%f\n"</span>, method, s1, s2, w, c1, c2, n, p, M, R);</div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// Search method instantiation.</span></div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classPSO.html">PSO</a> *pso = <span class="keyword">new</span> <a class="code" href="classPSO.html">PSO</a>(fitnessFunction, s1, s2, p, n, w, c1, c2);</div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// CSMOn instantiation and execution.</span></div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="classCSMOn.html">CSMOn</a> *csmon = <span class="keyword">new</span> <a class="code" href="classCSMOn.html">CSMOn</a>(pso, M, R, 0);</div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  csmon-><a class="code" href="classCSMOn.html#a287ef04ef03f758a2a121057e9798c22">run</a>();</div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  </div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// Read the final results.</span></div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">double</span> *bestPos = <span class="keyword">new</span> <span class="keywordtype">double</span>[n];</div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  csmon-><a class="code" href="classCSMOn.html#ac5665384c5c4af241bbead4f98fdb3c6">getBestPos</a>(bestPos);</div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">for</span>(i=0; i < n; i++){ <span class="comment">// Send the final result back to Python caller.</span></div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  outPos[i] = bestPos[i];</div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// Send any parameter you want back to Python caller.</span></div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">int</span> evals = csmon-><a class="code" href="classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593">getNEvals</a>();</div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">double</span> fit = csmon-><a class="code" href="classCSMOn.html#a4b1a2a4e99746adec24b3cdf683f31c5">getFitness</a>();</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">for</span>(i=0; i < 2; i++){</div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span>(strcmp(outParam[i].name, <span class="stringliteral">"nEvals"</span>) == 0) outParam[i].i = evals;</div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(strcmp(outParam[i].name, <span class="stringliteral">"fit"</span>) == 0) outParam[i].d = fit;</div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// Remind to clear any object that is not owned by Python caller.</span></div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">delete</span> bestPos;</div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">delete</span> pso;</div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">delete</span> csmon;</div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// End template.</span></div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">else</span> printf(<span class="stringliteral">"Search method %s not supported yet."</span>, method);</div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> }</div> +<div class="ttc" id="CSMOn__wrapper_8cpp_html_a376fcabfd8429288efa3398dc2f3e8e1"><div class="ttname"><a href="CSMOn__wrapper_8cpp.html#a376fcabfd8429288efa3398dc2f3e8e1">Param</a></div><div class="ttdeci">struct _Param Param</div><div class="ttdoc">Contains a parameter received from / sent to the Python caller. </div></div> +<div class="ttc" id="classCSMOn_html"><div class="ttname"><a href="classCSMOn.html">CSMOn</a></div><div class="ttdoc">Convergence Stabilization Modeling operating in Online Mode ( formely called of C'MOn! )...</div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8hpp_source.html#l00074">CSMOn.hpp:74</a></div></div> +<div class="ttc" id="classCSMOn_html_ac5665384c5c4af241bbead4f98fdb3c6"><div class="ttname"><a href="classCSMOn.html#ac5665384c5c4af241bbead4f98fdb3c6">CSMOn::getBestPos</a></div><div class="ttdeci">int getBestPos(double *x)</div><div class="ttdoc">Get the final optimized result (position). </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8cpp_source.html#l00198">CSMOn.cpp:198</a></div></div> +<div class="ttc" id="classPSO_html"><div class="ttname"><a href="classPSO.html">PSO</a></div><div class="ttdoc">Particle Swarm Optimization. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8hpp_source.html#l00053">PSO.hpp:53</a></div></div> +<div class="ttc" id="classCSMOn_html_a287ef04ef03f758a2a121057e9798c22"><div class="ttname"><a href="classCSMOn.html#a287ef04ef03f758a2a121057e9798c22">CSMOn::run</a></div><div class="ttdeci">void run()</div><div class="ttdoc">Call this method to execute the search. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8cpp_source.html#l00068">CSMOn.cpp:68</a></div></div> +<div class="ttc" id="struct__Param_html"><div class="ttname"><a href="struct__Param.html">_Param</a></div><div class="ttdoc">Contains a parameter received from / sent to the Python caller. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn__wrapper_8cpp_source.html#l00049">CSMOn_wrapper.cpp:49</a></div></div> +<div class="ttc" id="classCSMOn_html_a4b1a2a4e99746adec24b3cdf683f31c5"><div class="ttname"><a href="classCSMOn.html#a4b1a2a4e99746adec24b3cdf683f31c5">CSMOn::getFitness</a></div><div class="ttdeci">double getFitness()</div><div class="ttdoc">Get the final fitness value. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8cpp_source.html#l00178">CSMOn.cpp:178</a></div></div> +<div class="ttc" id="CSMOn__wrapper_8cpp_html_a918c532a1803542131c64811335fe6d7"><div class="ttname"><a href="CSMOn__wrapper_8cpp.html#a918c532a1803542131c64811335fe6d7">search</a></div><div class="ttdeci">void search(char *method, Param *inParam, Param *outParam, double *outPos, callback_t fitnessFunction)</div><div class="ttdoc">The wrapper function for Python calls. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn__wrapper_8cpp_source.html#l00069">CSMOn_wrapper.cpp:69</a></div></div> +<div class="ttc" id="classCSMOn_html_af423cda7d5f129d768ec5d4ef6f80593"><div class="ttname"><a href="classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593">CSMOn::getNEvals</a></div><div class="ttdeci">int getNEvals()</div><div class="ttdoc">Get the actual number of evaluations executed. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn_8cpp_source.html#l00188">CSMOn.cpp:188</a></div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/ISearch_8hpp_source.html b/doc/html/ISearch_8hpp_source.html new file mode 100644 index 0000000..6bf4428 --- /dev/null +++ b/doc/html/ISearch_8hpp_source.html @@ -0,0 +1,150 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: cpp/ISearch.hpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_df511e5bd85cec96854b39d5e1c27aa8.html">cpp</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">ISearch.hpp</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com)</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * of this software and associated documentation files (the "Software"), to deal</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * in the Software without restriction, including without limitation the rights</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * The above copyright notice and this permission notice shall be included in</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * </span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * Additionally, if used for any scientific purpose, the following reference</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * must be cited:</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado.</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017,</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * THE SOFTWARE.</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#ifndef ISEARCH_HPP_</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define ISEARCH_HPP_</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div> +<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classISearch.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="classISearch.html">ISearch</a>{</div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="classISearch.html">ISearch</a>(){}</div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> ~<a class="code" href="classISearch.html">ISearch</a>()=0;</div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classISearch.html#a8eabe4ae3ed69ede2646a536f558f2fe">startup</a>()=0;</div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classISearch.html#ae3cc643bf0fbe9d9bac1d43642bbb129">next</a>(<span class="keywordtype">int</span> M)=0;</div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classISearch.html#a9cee257ee19c02341da60440c5cddbd8">getBestPos</a>(<span class="keywordtype">double</span> *_x)=0;</div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classISearch.html#a56f6b069cc3dd7f8e3f2ff38bb681639">getNEvals</a>()=0;</div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classISearch.html#a3504ed6684ca6c82aa79c40b965d5237">getFitness</a>()=0;</div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> };</div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#endif </span><span class="comment">/* ISEARCH_HPP_ */</span><span class="preprocessor"></span></div> +<div class="ttc" id="classISearch_html_a8eabe4ae3ed69ede2646a536f558f2fe"><div class="ttname"><a href="classISearch.html#a8eabe4ae3ed69ede2646a536f558f2fe">ISearch::startup</a></div><div class="ttdeci">virtual void startup()=0</div><div class="ttdoc">Startup the search method. </div></div> +<div class="ttc" id="classISearch_html"><div class="ttname"><a href="classISearch.html">ISearch</a></div><div class="ttdoc">The interface that the search methods must to implement. </div><div class="ttdef"><b>Definition:</b> <a href="ISearch_8hpp_source.html#l00040">ISearch.hpp:40</a></div></div> +<div class="ttc" id="classISearch_html_a3504ed6684ca6c82aa79c40b965d5237"><div class="ttname"><a href="classISearch.html#a3504ed6684ca6c82aa79c40b965d5237">ISearch::getFitness</a></div><div class="ttdeci">virtual double getFitness()=0</div><div class="ttdoc">Get the best fitness value found up to the moment. </div></div> +<div class="ttc" id="classISearch_html_ae3cc643bf0fbe9d9bac1d43642bbb129"><div class="ttname"><a href="classISearch.html#ae3cc643bf0fbe9d9bac1d43642bbb129">ISearch::next</a></div><div class="ttdeci">virtual void next(int M)=0</div><div class="ttdoc">Obtain the next improvement. </div></div> +<div class="ttc" id="classISearch_html_a56f6b069cc3dd7f8e3f2ff38bb681639"><div class="ttname"><a href="classISearch.html#a56f6b069cc3dd7f8e3f2ff38bb681639">ISearch::getNEvals</a></div><div class="ttdeci">virtual int getNEvals()=0</div><div class="ttdoc">Get the number of fitness function evaluations performed up to the moment. </div></div> +<div class="ttc" id="classISearch_html_a9cee257ee19c02341da60440c5cddbd8"><div class="ttname"><a href="classISearch.html#a9cee257ee19c02341da60440c5cddbd8">ISearch::getBestPos</a></div><div class="ttdeci">virtual int getBestPos(double *_x)=0</div><div class="ttdoc">Get the best result obtained up to the moment. </div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/PSO_8cpp_source.html b/doc/html/PSO_8cpp_source.html new file mode 100644 index 0000000..54c994a --- /dev/null +++ b/doc/html/PSO_8cpp_source.html @@ -0,0 +1,257 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: cpp/PSO.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_df511e5bd85cec96854b39d5e1c27aa8.html">cpp</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">PSO.cpp</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com)</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * of this software and associated documentation files (the "Software"), to deal</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * in the Software without restriction, including without limitation the rights</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * The above copyright notice and this permission notice shall be included in</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * </span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * Additionally, if used for any scientific purpose, the following reference</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * must be cited:</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado.</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017,</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * THE SOFTWARE.</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "PSO.hpp"</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div> +<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classPSO.html#a810105b87e4f6fc026edd6b4ef484953"> 45</a></span> <a class="code" href="classPSO.html#a810105b87e4f6fc026edd6b4ef484953">PSO::PSO</a>(callback_t fitnessFunction, <span class="keywordtype">double</span> s1, <span class="keywordtype">double</span> s2, <span class="keywordtype">int</span> p, <span class="keywordtype">int</span> n, <span class="keywordtype">double</span> w, <span class="keywordtype">double</span> c1, <span class="keywordtype">double</span> c2){</div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  this->fitnessFunction = fitnessFunction;</div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  this->s1 = s1;</div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  this->s2 = s2;</div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  this->p = p;</div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  this->n = n;</div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  this->c1 = c1;</div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  this->c2 = c2;</div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span>(w < 0){</div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  decreasingW = <span class="keyword">true</span>;</div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  this->w = abs(w);</div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">else</span>{</div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  decreasingW = <span class="keyword">false</span>;</div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  this->w = w;</div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  Gb = <span class="keyword">new</span> <span class="keywordtype">double</span>[n];</div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  pb = <span class="keyword">new</span> <span class="keywordtype">double</span>*[p];</div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  pb_Fit = <span class="keyword">new</span> <span class="keywordtype">double</span>[p];</div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  x = <span class="keyword">new</span> <span class="keywordtype">double</span>*[p];</div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  fit = <span class="keyword">new</span> <span class="keywordtype">double</span>[p];</div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  v = <span class="keyword">new</span> <span class="keywordtype">double</span>*[p];</div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i < p; i++){</div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  pb[i] = <span class="keyword">new</span> <span class="keywordtype">double</span>[n];</div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  x[i] = <span class="keyword">new</span> <span class="keywordtype">double</span>[n];</div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  v[i] = <span class="keyword">new</span> <span class="keywordtype">double</span>[n];</div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  seed = 1;</div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  nEvals = 0;</div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Gb_Fit = DBL_MAX;</div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  gb = -1;</div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> }</div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> PSO::~PSO() {</div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i < p; i++){</div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">delete</span> pb[i];</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">delete</span> x[i];</div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">delete</span> v[i];</div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">delete</span> Gb;</div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">delete</span> pb;</div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">delete</span> pb_Fit;</div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">delete</span> x;</div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">delete</span> fit;</div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">delete</span> v;</div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div> +<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classPSO.html#a4866695395fb314ea732bccde6691ef3"> 96</a></span> <span class="keywordtype">void</span> <a class="code" href="classPSO.html#a4866695395fb314ea732bccde6691ef3">PSO::startup</a>(){</div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  seed = <a class="code" href="classPSO.html#a0e3ed1fa7e0bb64ca9e6afcdca8d1813">getRandomSeed</a>();</div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  nEvals = 0;</div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  Gb_Fit = DBL_MAX;</div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  gb = -1;</div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j, i=0; i < p; i++){</div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">for</span>(j=0; j < n; j++) v[i][j] = RAND_DOUBLE(seed, s1, s2)/10;</div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">for</span>(j=0; j < n; j++) x[i][j] = RAND_DOUBLE(seed, s1, s2);</div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  COPY_ARR(x[i], pb[i], n);</div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  pb_Fit[i] = fit[i] = fitnessFunction(x[i], n);</div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span>(pb_Fit[i] < Gb_Fit){</div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  COPY_ARR(pb[i], Gb, n);</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  Gb_Fit = pb_Fit[i];</div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  gb = i;</div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> }</div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div> +<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classPSO.html#a465d956bdb86e93bc06b6fb016feb70c"> 120</a></span> <span class="keywordtype">void</span> <a class="code" href="classPSO.html#a465d956bdb86e93bc06b6fb016feb70c">PSO::next</a>(<span class="keywordtype">int</span> M) {</div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">int</span> i, j;</div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">double</span> currW = w - (w / M) * nEvals;</div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">while</span>(!found && nEvals < M){</div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">for</span>(i=0; i < p; i++){</div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">for</span>(j=0; j < n; j++){</div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  v[i][j] = currW * v[i][j] + c1 * RAND_DOUBLE(seed, 0, 1) * (pb[i][j] - x[i][j])</div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  + c2 * RAND_DOUBLE(seed, 0, 1) * (Gb[j] - x[i][j]);</div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  x[i][j] += v[i][j];</div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>(x[i][j] < s1)</div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  x[i][j] = s1;</div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(x[i][j] > s2)</div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  x[i][j] = s2;</div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  fit[i] = fitnessFunction(x[i], n);</div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  nEvals++;</div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">for</span>(i=0; i < p; i++){</div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(fit[i] < pb_Fit[i]){</div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  COPY_ARR(x[i], pb[i], n);</div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  pb_Fit[i] = fit[i];</div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span>(pb_Fit[i] < Gb_Fit){</div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  found = <span class="keyword">true</span>;</div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  COPY_ARR(pb[i], Gb, n);</div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  Gb_Fit = pb_Fit[i];</div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  gb = i;</div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span>(decreasingW) currW -= w / M;</div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> }</div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div> +<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classPSO.html#a649d2a7b444ac91bfb05d7e9f3c2e20e"> 160</a></span> <span class="keywordtype">int</span> <a class="code" href="classPSO.html#a649d2a7b444ac91bfb05d7e9f3c2e20e">PSO::getBestPos</a>(<span class="keywordtype">double</span> *_x){</div> +<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  COPY_ARR(pb[gb], _x, n);</div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">return</span> gb;</div> +<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> }</div> +<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div> +<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classPSO.html#aa5c58e658a718b2f75b58b51c312f2ba"> 170</a></span> <span class="keywordtype">int</span> <a class="code" href="classPSO.html#aa5c58e658a718b2f75b58b51c312f2ba">PSO::getNEvals</a>() {</div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> nEvals;</div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> }</div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div> +<div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classPSO.html#a9859c4126970209c8c8f534d4458dbd7"> 180</a></span> <span class="keywordtype">double</span> <a class="code" href="classPSO.html#a9859c4126970209c8c8f534d4458dbd7">PSO::getFitness</a>() {</div> +<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> Gb_Fit;</div> +<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> }</div> +<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div> +<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classPSO.html#a0e3ed1fa7e0bb64ca9e6afcdca8d1813"> 191</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classPSO.html#a0e3ed1fa7e0bb64ca9e6afcdca8d1813">PSO::getRandomSeed</a>(){</div> +<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keyword">struct </span>timeval tv;</div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  gettimeofday(&tv,NULL);</div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">return</span> tv.tv_usec;</div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> }</div> +<div class="ttc" id="classPSO_html_aa5c58e658a718b2f75b58b51c312f2ba"><div class="ttname"><a href="classPSO.html#aa5c58e658a718b2f75b58b51c312f2ba">PSO::getNEvals</a></div><div class="ttdeci">int getNEvals()</div><div class="ttdoc">Get the number of fitness function evaluations performed up to the moment. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00170">PSO.cpp:170</a></div></div> +<div class="ttc" id="classPSO_html_a465d956bdb86e93bc06b6fb016feb70c"><div class="ttname"><a href="classPSO.html#a465d956bdb86e93bc06b6fb016feb70c">PSO::next</a></div><div class="ttdeci">void next(int M)</div><div class="ttdoc">Obtain the next improvement. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00120">PSO.cpp:120</a></div></div> +<div class="ttc" id="classPSO_html_a0e3ed1fa7e0bb64ca9e6afcdca8d1813"><div class="ttname"><a href="classPSO.html#a0e3ed1fa7e0bb64ca9e6afcdca8d1813">PSO::getRandomSeed</a></div><div class="ttdeci">unsigned int getRandomSeed()</div><div class="ttdoc">Get a random number to be used as seed for the random number generator. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00191">PSO.cpp:191</a></div></div> +<div class="ttc" id="classPSO_html_a4866695395fb314ea732bccde6691ef3"><div class="ttname"><a href="classPSO.html#a4866695395fb314ea732bccde6691ef3">PSO::startup</a></div><div class="ttdeci">void startup()</div><div class="ttdoc">Startup the PSO. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00096">PSO.cpp:96</a></div></div> +<div class="ttc" id="classPSO_html_a9859c4126970209c8c8f534d4458dbd7"><div class="ttname"><a href="classPSO.html#a9859c4126970209c8c8f534d4458dbd7">PSO::getFitness</a></div><div class="ttdeci">double getFitness()</div><div class="ttdoc">Get the best fitness value found up to the moment. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00180">PSO.cpp:180</a></div></div> +<div class="ttc" id="classPSO_html_a649d2a7b444ac91bfb05d7e9f3c2e20e"><div class="ttname"><a href="classPSO.html#a649d2a7b444ac91bfb05d7e9f3c2e20e">PSO::getBestPos</a></div><div class="ttdeci">int getBestPos(double *_x)</div><div class="ttdoc">Get the best result obtained up to the moment (global best). </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00160">PSO.cpp:160</a></div></div> +<div class="ttc" id="classPSO_html_a810105b87e4f6fc026edd6b4ef484953"><div class="ttname"><a href="classPSO.html#a810105b87e4f6fc026edd6b4ef484953">PSO::PSO</a></div><div class="ttdeci">PSO(callback_t fitnessFunction, double s1, double s2, int p, int n, double w, double c1, double c2)</div><div class="ttdoc">A standard implementation of PSO. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00045">PSO.cpp:45</a></div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/PSO_8hpp_source.html b/doc/html/PSO_8hpp_source.html new file mode 100644 index 0000000..79c7cb2 --- /dev/null +++ b/doc/html/PSO_8hpp_source.html @@ -0,0 +1,174 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: cpp/PSO.hpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_df511e5bd85cec96854b39d5e1c27aa8.html">cpp</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">PSO.hpp</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com)</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * of this software and associated documentation files (the "Software"), to deal</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * in the Software without restriction, including without limitation the rights</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * The above copyright notice and this permission notice shall be included in</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * </span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * Additionally, if used for any scientific purpose, the following reference</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * must be cited:</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado.</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017,</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * THE SOFTWARE.</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#ifndef PSO_HPP_</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define PSO_HPP_</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <sys/time.h></span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <float.h></span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <stdlib.h></span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "ISearch.hpp"</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#define PI (3.141592653589793238462643383279)</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#define COPY_ARR(orig, dest, sz) for(int _i_=0; _i_ < sz; dest[_i_] = orig[_i_], _i_++);</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#define RAND_DOUBLE(seed, a, b) ((a==b)?a:(a+(((double)rand_r(&seed))/RAND_MAX)*(b-a)))</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">typedef</span> double (*callback_t)(<span class="keywordtype">double</span> *buf, <span class="keywordtype">int</span> n);</div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div> +<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classPSO.html"> 53</a></span> <span class="keyword">class </span><a class="code" href="classPSO.html">PSO</a> : <span class="keyword">public</span> <a class="code" href="classISearch.html">ISearch</a>{</div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> seed;</div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">bool</span> decreasingW;</div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">int</span> p, n, nEvals, gb;</div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">double</span> **x, *fit, s1, s2, w, c1, c2, *Gb, Gb_Fit, **pb, *pb_Fit, **v;</div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  callback_t fitnessFunction;</div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="classPSO.html#a810105b87e4f6fc026edd6b4ef484953">PSO</a>(callback_t fitnessFunction, <span class="keywordtype">double</span> s1, <span class="keywordtype">double</span> s2, <span class="keywordtype">int</span> p, <span class="keywordtype">int</span> n, <span class="keywordtype">double</span> w, <span class="keywordtype">double</span> c1, <span class="keywordtype">double</span> c2) ;</div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  ~<a class="code" href="classPSO.html">PSO</a>();</div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">void</span> <a class="code" href="classPSO.html#a4866695395fb314ea732bccde6691ef3">startup</a>();</div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">void</span> <a class="code" href="classPSO.html#a465d956bdb86e93bc06b6fb016feb70c">next</a>(<span class="keywordtype">int</span> M);</div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">int</span> <a class="code" href="classPSO.html#a649d2a7b444ac91bfb05d7e9f3c2e20e">getBestPos</a>(<span class="keywordtype">double</span> *_x);</div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">int</span> <a class="code" href="classPSO.html#aa5c58e658a718b2f75b58b51c312f2ba">getNEvals</a>();</div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">double</span> <a class="code" href="classPSO.html#a9859c4126970209c8c8f534d4458dbd7">getFitness</a>();</div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classPSO.html#a0e3ed1fa7e0bb64ca9e6afcdca8d1813">getRandomSeed</a>();</div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> };</div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#endif </span><span class="comment">/* PSO_HPP_ */</span><span class="preprocessor"></span></div> +<div class="ttc" id="classPSO_html_aa5c58e658a718b2f75b58b51c312f2ba"><div class="ttname"><a href="classPSO.html#aa5c58e658a718b2f75b58b51c312f2ba">PSO::getNEvals</a></div><div class="ttdeci">int getNEvals()</div><div class="ttdoc">Get the number of fitness function evaluations performed up to the moment. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00170">PSO.cpp:170</a></div></div> +<div class="ttc" id="classPSO_html_a465d956bdb86e93bc06b6fb016feb70c"><div class="ttname"><a href="classPSO.html#a465d956bdb86e93bc06b6fb016feb70c">PSO::next</a></div><div class="ttdeci">void next(int M)</div><div class="ttdoc">Obtain the next improvement. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00120">PSO.cpp:120</a></div></div> +<div class="ttc" id="classISearch_html"><div class="ttname"><a href="classISearch.html">ISearch</a></div><div class="ttdoc">The interface that the search methods must to implement. </div><div class="ttdef"><b>Definition:</b> <a href="ISearch_8hpp_source.html#l00040">ISearch.hpp:40</a></div></div> +<div class="ttc" id="classPSO_html"><div class="ttname"><a href="classPSO.html">PSO</a></div><div class="ttdoc">Particle Swarm Optimization. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8hpp_source.html#l00053">PSO.hpp:53</a></div></div> +<div class="ttc" id="classPSO_html_a0e3ed1fa7e0bb64ca9e6afcdca8d1813"><div class="ttname"><a href="classPSO.html#a0e3ed1fa7e0bb64ca9e6afcdca8d1813">PSO::getRandomSeed</a></div><div class="ttdeci">unsigned int getRandomSeed()</div><div class="ttdoc">Get a random number to be used as seed for the random number generator. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00191">PSO.cpp:191</a></div></div> +<div class="ttc" id="classPSO_html_a4866695395fb314ea732bccde6691ef3"><div class="ttname"><a href="classPSO.html#a4866695395fb314ea732bccde6691ef3">PSO::startup</a></div><div class="ttdeci">void startup()</div><div class="ttdoc">Startup the PSO. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00096">PSO.cpp:96</a></div></div> +<div class="ttc" id="classPSO_html_a9859c4126970209c8c8f534d4458dbd7"><div class="ttname"><a href="classPSO.html#a9859c4126970209c8c8f534d4458dbd7">PSO::getFitness</a></div><div class="ttdeci">double getFitness()</div><div class="ttdoc">Get the best fitness value found up to the moment. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00180">PSO.cpp:180</a></div></div> +<div class="ttc" id="classPSO_html_a649d2a7b444ac91bfb05d7e9f3c2e20e"><div class="ttname"><a href="classPSO.html#a649d2a7b444ac91bfb05d7e9f3c2e20e">PSO::getBestPos</a></div><div class="ttdeci">int getBestPos(double *_x)</div><div class="ttdoc">Get the best result obtained up to the moment (global best). </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00160">PSO.cpp:160</a></div></div> +<div class="ttc" id="classPSO_html_a810105b87e4f6fc026edd6b4ef484953"><div class="ttname"><a href="classPSO.html#a810105b87e4f6fc026edd6b4ef484953">PSO::PSO</a></div><div class="ttdeci">PSO(callback_t fitnessFunction, double s1, double s2, int p, int n, double w, double c1, double c2)</div><div class="ttdoc">A standard implementation of PSO. </div><div class="ttdef"><b>Definition:</b> <a href="PSO_8cpp_source.html#l00045">PSO.cpp:45</a></div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/annotated.html b/doc/html/annotated.html new file mode 100644 index 0000000..d6bdcbd --- /dev/null +++ b/doc/html/annotated.html @@ -0,0 +1,106 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Data Structures</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Data Structures</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory"> +<table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct__Param.html" target="_self">_Param</a></td><td class="desc">Contains a parameter received from / sent to the Python caller </td></tr> +<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct__point.html" target="_self">_point</a></td><td class="desc">A point representing the number of evaluations and the respective fitness value </td></tr> +<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classCSMOn.html" target="_self">CSMOn</a></td><td class="desc">Convergence Stabilization Modeling operating in Online Mode ( formely called of C'MOn! ) </td></tr> +<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classISearch.html" target="_self">ISearch</a></td><td class="desc">The interface that the search methods must to implement </td></tr> +<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classPSO.html" target="_self">PSO</a></td><td class="desc">Particle Swarm Optimization </td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/bc_s.png b/doc/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmeAS@N?(olHy`uVBq!ia0y~yVBlb2V36ZrV_;wqY>4M&U|`Djba4!+V0=6GbhdDy z$g%Ttcb+`6#8YkZGXC6IYKEp}T6srWr?B1GF(F9Dgj?HVt465w+N3F~L=2m{I{LlD z^>%5vZqF6G-~TJ)wO6ipu)6bXjiwh*F19Y=5PHv}_T<_>?)LXZ=brv~w|9<l`ZtZL z?|(0;#ajw|uAOvsK7&JN?yXXV1R<Uq83`Z1Us=z|u%P7^o7(n|GIAfU->jRwclw=A z?M&zHUgY;R*`eBLylJ`psaF}A4gY^O%Fm2B5}9e|mBi(c{`-FBy$*q2n=WRjOR}*p zfBY&&@WtM>%(GnQhCZ8Hrfu)q@J^}V*|pnFG0l-`VjpgNRw?t<el>~DC2x;r?WccM z%Omn1@irTG-CEDAzJ9+RYg5`mgEysJmY;n7W;LYAo9$3t&1meNHsy-)mEv3(1`Syq z@t=pYwN6di?6r!ub^RVD1}~=5i}Ig{wN2S0S{h%+$*`d)R#lZfS1eDaG`5P5VMCE= z^x0z@R^R$Gm60JLb?c-y&!09YUR*eu&fwsA<<`9iTVESDS?SxbGI$-AnRFpglk?-w z))MJk_rJ3+X!!n)F*APYoSvijm+7tb{~abbGah}k{T}t&$Z~D@q`Q~4Y!~SWvp(e` zVceXhX1;R!uD#zA6+PP+HDAA0(fxK@?D8*$&9kMu%}YGP_Juw8c;!!0+6oK)g(sSw zY~HWlnwgvTf6fV!_7>ip`-^|dGPU1!;hwI1lEZZJTJ>Wl_HWi~`r*qYH%WNrY>^GS z)7LcBm>zvDv~{n$U&>{X3q>_wrW{sld81^mt-e{7!GY7X-Tl!#sfouWS|6QU6KDPP n@q}r5#vGT5l>WvCZQg&#VN<^6zNab-3=9mOu6{1-oD!M<Vj?qg literal 0 HcmV?d00001 diff --git a/doc/html/bdwn.png b/doc/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0y~yU|?rpVBp|jV_;w~WqAssqC8z3Ln;{G&OOcBpdjEf zKVX{S#~kT-xd*t5HZo>y(o5xe(dH6;<K(`Z=dUpA*}ClUmV1mfFY9M6Hfso*_1bs~ z`%!j#pJH{5+BJ6CT=Tp?%Y0wDKUpv%LA;4O?z%Kf^S$0Y1_lNOPgg&ebxsLQ01LD; A>i_@% literal 0 HcmV?d00001 diff --git a/doc/html/classCSMOn-members.html b/doc/html/classCSMOn-members.html new file mode 100644 index 0000000..7954a51 --- /dev/null +++ b/doc/html/classCSMOn-members.html @@ -0,0 +1,110 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn +  <span id="projectnumber">1</span> + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">CSMOn Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="classCSMOn.html">CSMOn</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>adjustExp</b>(double r) (defined in <a class="el" href="classCSMOn.html">CSMOn</a>)</td><td class="entry"><a class="el" href="classCSMOn.html">CSMOn</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>adjustLog</b>(double r, int pT) (defined in <a class="el" href="classCSMOn.html">CSMOn</a>)</td><td class="entry"><a class="el" href="classCSMOn.html">CSMOn</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="classCSMOn.html#a9b25325acfda9b579b3a272ed474480e">CSMOn</a>(ISearch *search, int M, double R, double minEstimatedFit)</td><td class="entry"><a class="el" href="classCSMOn.html">CSMOn</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>getBest</b>(int nBest) (defined in <a class="el" href="classCSMOn.html">CSMOn</a>)</td><td class="entry"><a class="el" href="classCSMOn.html">CSMOn</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="classCSMOn.html#ac5665384c5c4af241bbead4f98fdb3c6">getBestPos</a>(double *x)</td><td class="entry"><a class="el" href="classCSMOn.html">CSMOn</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="classCSMOn.html#a4b1a2a4e99746adec24b3cdf683f31c5">getFitness</a>()</td><td class="entry"><a class="el" href="classCSMOn.html">CSMOn</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593">getNEvals</a>()</td><td class="entry"><a class="el" href="classCSMOn.html">CSMOn</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="classCSMOn.html#a287ef04ef03f758a2a121057e9798c22">run</a>()</td><td class="entry"><a class="el" href="classCSMOn.html">CSMOn</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~CSMOn</b>() (defined in <a class="el" href="classCSMOn.html">CSMOn</a>)</td><td class="entry"><a class="el" href="classCSMOn.html">CSMOn</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 11:54:05 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/classCSMOn.html b/doc/html/classCSMOn.html new file mode 100644 index 0000000..0def6ee --- /dev/null +++ b/doc/html/classCSMOn.html @@ -0,0 +1,258 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: CSMOn Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<div class="title">CSMOn Class Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p>Convergence Stabilization Modeling operating in Online Mode ( formely called of C'MOn! ). + <a href="classCSMOn.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="CSMOn_8hpp_source.html">CSMOn.hpp</a>></code></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:a9b25325acfda9b579b3a272ed474480e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classCSMOn.html#a9b25325acfda9b579b3a272ed474480e">CSMOn</a> (<a class="el" href="classISearch.html">ISearch</a> *search, int M, double R, double minEstimatedFit)</td></tr> +<tr class="memdesc:a9b25325acfda9b579b3a272ed474480e"><td class="mdescLeft"> </td><td class="mdescRight">Class for <a class="el" href="classCSMOn.html" title="Convergence Stabilization Modeling operating in Online Mode ( formely called of C'MOn! )...">CSMOn</a>. <a href="#a9b25325acfda9b579b3a272ed474480e">More...</a><br /></td></tr> +<tr class="separator:a9b25325acfda9b579b3a272ed474480e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a287ef04ef03f758a2a121057e9798c22"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a287ef04ef03f758a2a121057e9798c22"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCSMOn.html#a287ef04ef03f758a2a121057e9798c22">run</a> ()</td></tr> +<tr class="memdesc:a287ef04ef03f758a2a121057e9798c22"><td class="mdescLeft"> </td><td class="mdescRight">Call this method to execute the search. <br /></td></tr> +<tr class="separator:a287ef04ef03f758a2a121057e9798c22"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a758de932efcf1be4537984541123774b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a758de932efcf1be4537984541123774b"></a> +void </td><td class="memItemRight" valign="bottom"><b>getBest</b> (int nBest)</td></tr> +<tr class="separator:a758de932efcf1be4537984541123774b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a231fc5e5b6a478e8315f1fc867771ff2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a231fc5e5b6a478e8315f1fc867771ff2"></a> +int </td><td class="memItemRight" valign="bottom"><b>adjustExp</b> (double r)</td></tr> +<tr class="separator:a231fc5e5b6a478e8315f1fc867771ff2"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2c2ce1d69d99154585fe49908cd40fa7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c2ce1d69d99154585fe49908cd40fa7"></a> +int </td><td class="memItemRight" valign="bottom"><b>adjustLog</b> (double r, int pT)</td></tr> +<tr class="separator:a2c2ce1d69d99154585fe49908cd40fa7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af423cda7d5f129d768ec5d4ef6f80593"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593">getNEvals</a> ()</td></tr> +<tr class="memdesc:af423cda7d5f129d768ec5d4ef6f80593"><td class="mdescLeft"> </td><td class="mdescRight">Get the actual number of evaluations executed. <a href="#af423cda7d5f129d768ec5d4ef6f80593">More...</a><br /></td></tr> +<tr class="separator:af423cda7d5f129d768ec5d4ef6f80593"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4b1a2a4e99746adec24b3cdf683f31c5"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classCSMOn.html#a4b1a2a4e99746adec24b3cdf683f31c5">getFitness</a> ()</td></tr> +<tr class="memdesc:a4b1a2a4e99746adec24b3cdf683f31c5"><td class="mdescLeft"> </td><td class="mdescRight">Get the final fitness value. <a href="#a4b1a2a4e99746adec24b3cdf683f31c5">More...</a><br /></td></tr> +<tr class="separator:a4b1a2a4e99746adec24b3cdf683f31c5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac5665384c5c4af241bbead4f98fdb3c6"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classCSMOn.html#ac5665384c5c4af241bbead4f98fdb3c6">getBestPos</a> (double *x)</td></tr> +<tr class="memdesc:ac5665384c5c4af241bbead4f98fdb3c6"><td class="mdescLeft"> </td><td class="mdescRight">Get the final optimized result (position). <a href="#ac5665384c5c4af241bbead4f98fdb3c6">More...</a><br /></td></tr> +<tr class="separator:ac5665384c5c4af241bbead4f98fdb3c6"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><p>Convergence Stabilization Modeling operating in Online Mode ( formely called of C'MOn! ). </p> +<dl class="section date"><dt>Date</dt><dd>04/Mar/2017 </dd></dl> +<dl class="section author"><dt>Author</dt><dd>Peter Frank Perroni (<a href="#" onclick="location.href='mai'+'lto:'+'pfp'+'er'+'ron'+'i@'+'gma'+'il'+'.co'+'m'; return false;">pfper<span style="display: none;">.nosp@m.</span>roni<span style="display: none;">.nosp@m.</span>@gmai<span style="display: none;">.nosp@m.</span>l.co<span style="display: none;">.nosp@m.</span>m</a>) </dd></dl> + +<p>Definition at line <a class="el" href="CSMOn_8hpp_source.html#l00074">74</a> of file <a class="el" href="CSMOn_8hpp_source.html">CSMOn.hpp</a>.</p> +</div><h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="a9b25325acfda9b579b3a272ed474480e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">CSMOn::CSMOn </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classISearch.html">ISearch</a> * </td> + <td class="paramname"><em>search</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>M</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">double </td> + <td class="paramname"><em>R</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">double </td> + <td class="paramname"><em>minEstimatedFit</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Class for <a class="el" href="classCSMOn.html" title="Convergence Stabilization Modeling operating in Online Mode ( formely called of C'MOn! )...">CSMOn</a>. </p> +<p>Always call this class directly (instead of the search method).</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">search</td><td>The instance for the search method. </td></tr> + <tr><td class="paramname">M</td><td>The maximum number of fitness function evaluations allocated for this run. </td></tr> + <tr><td class="paramname">R</td><td>The relaxation to be used for the limit calculations, in the interval ]0,1[. For decreasing relaxation, provide it in negative values. </td></tr> + <tr><td class="paramname">minEstimatedFit</td><td>The lowest fitness value expected. </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="CSMOn_8cpp_source.html#l00043">43</a> of file <a class="el" href="CSMOn_8cpp_source.html">CSMOn.cpp</a>.</p> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="ac5665384c5c4af241bbead4f98fdb3c6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int CSMOn::getBestPos </td> + <td>(</td> + <td class="paramtype">double * </td> + <td class="paramname"><em>x</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Get the final optimized result (position). </p> +<dl class="section return"><dt>Returns</dt><dd>The final position. </dd></dl> + +<p>Definition at line <a class="el" href="CSMOn_8cpp_source.html#l00198">198</a> of file <a class="el" href="CSMOn_8cpp_source.html">CSMOn.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a4b1a2a4e99746adec24b3cdf683f31c5"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">double CSMOn::getFitness </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Get the final fitness value. </p> +<dl class="section return"><dt>Returns</dt><dd>The final fitness value. </dd></dl> + +<p>Definition at line <a class="el" href="CSMOn_8cpp_source.html#l00178">178</a> of file <a class="el" href="CSMOn_8cpp_source.html">CSMOn.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="af423cda7d5f129d768ec5d4ef6f80593"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int CSMOn::getNEvals </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Get the actual number of evaluations executed. </p> +<dl class="section return"><dt>Returns</dt><dd>The actual number of evaluations executed. </dd></dl> + +<p>Definition at line <a class="el" href="CSMOn_8cpp_source.html#l00188">188</a> of file <a class="el" href="CSMOn_8cpp_source.html">CSMOn.cpp</a>.</p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>cpp/<a class="el" href="CSMOn_8hpp_source.html">CSMOn.hpp</a></li> +<li>cpp/<a class="el" href="CSMOn_8cpp_source.html">CSMOn.cpp</a></li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/classCSMOn_1_1Param-members.html b/doc/html/classCSMOn_1_1Param-members.html new file mode 100644 index 0000000..93bae7b --- /dev/null +++ b/doc/html/classCSMOn_1_1Param-members.html @@ -0,0 +1,105 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn +  <span id="projectnumber">1</span> + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><b>CSMOn</b></li><li class="navelem"><a class="el" href="classCSMOn_1_1Param.html">Param</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">CSMOn.Param Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="classCSMOn_1_1Param.html">CSMOn.Param</a>, including all inherited members.</p> +<table class="directory"> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 11:11:46 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/classCSMOn_1_1Param.html b/doc/html/classCSMOn_1_1Param.html new file mode 100644 index 0000000..cba5e8d --- /dev/null +++ b/doc/html/classCSMOn_1_1Param.html @@ -0,0 +1,120 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: CSMOn.Param Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn +  <span id="projectnumber">1</span> + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><b>CSMOn</b></li><li class="navelem"><a class="el" href="classCSMOn_1_1Param.html">Param</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="classCSMOn_1_1Param-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">CSMOn.Param Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="dynheader"> +Inheritance diagram for CSMOn.Param:</div> +<div class="dyncontent"> +<div class="center"><img src="classCSMOn_1_1Param__inherit__graph.png" border="0" usemap="#CSMOn_8Param_inherit__map" alt="Inheritance graph"/></div> +<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> +<div class="dynheader"> +Collaboration diagram for CSMOn.Param:</div> +<div class="dyncontent"> +<div class="center"><img src="classCSMOn_1_1Param__coll__graph.png" border="0" usemap="#CSMOn_8Param_coll__map" alt="Collaboration graph"/></div> +<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"> +<p>Definition at line <a class="el" href="CSMOn_8py_source.html#l00040">40</a> of file <a class="el" href="CSMOn_8py_source.html">CSMOn.py</a>.</p> +</div><hr/>The documentation for this class was generated from the following file:<ul> +<li>python/<a class="el" href="CSMOn_8py_source.html">CSMOn.py</a></li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 11:11:46 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/classCSMOn_1_1ParamArrayType-members.html b/doc/html/classCSMOn_1_1ParamArrayType-members.html new file mode 100644 index 0000000..7a4df8b --- /dev/null +++ b/doc/html/classCSMOn_1_1ParamArrayType-members.html @@ -0,0 +1,110 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn +  <span id="projectnumber">1</span> + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><b>CSMOn</b></li><li class="navelem"><a class="el" href="classCSMOn_1_1ParamArrayType.html">ParamArrayType</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">CSMOn.ParamArrayType Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="classCSMOn_1_1ParamArrayType.html">CSMOn.ParamArrayType</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>from_array</b> (defined in <a class="el" href="classCSMOn_1_1ParamArrayType.html">CSMOn.ParamArrayType</a>)</td><td class="entry"><a class="el" href="classCSMOn_1_1ParamArrayType.html">CSMOn.ParamArrayType</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>from_list</b> (defined in <a class="el" href="classCSMOn_1_1ParamArrayType.html">CSMOn.ParamArrayType</a>)</td><td class="entry"><a class="el" href="classCSMOn_1_1ParamArrayType.html">CSMOn.ParamArrayType</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>from_ndarray</b> (defined in <a class="el" href="classCSMOn_1_1ParamArrayType.html">CSMOn.ParamArrayType</a>)</td><td class="entry"><a class="el" href="classCSMOn_1_1ParamArrayType.html">CSMOn.ParamArrayType</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>from_param</b> (defined in <a class="el" href="classCSMOn_1_1ParamArrayType.html">CSMOn.ParamArrayType</a>)</td><td class="entry"><a class="el" href="classCSMOn_1_1ParamArrayType.html">CSMOn.ParamArrayType</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>from_tuple</b> (defined in <a class="el" href="classCSMOn_1_1ParamArrayType.html">CSMOn.ParamArrayType</a>)</td><td class="entry"><a class="el" href="classCSMOn_1_1ParamArrayType.html">CSMOn.ParamArrayType</a></td><td class="entry"><span class="mlabel">static</span></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 11:11:46 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/classCSMOn_1_1ParamArrayType.html b/doc/html/classCSMOn_1_1ParamArrayType.html new file mode 100644 index 0000000..8354214 --- /dev/null +++ b/doc/html/classCSMOn_1_1ParamArrayType.html @@ -0,0 +1,134 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: CSMOn.ParamArrayType Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn +  <span id="projectnumber">1</span> + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><b>CSMOn</b></li><li class="navelem"><a class="el" href="classCSMOn_1_1ParamArrayType.html">ParamArrayType</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="#pub-static-attribs">Static Public Attributes</a> | +<a href="classCSMOn_1_1ParamArrayType-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">CSMOn.ParamArrayType Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:a45129224abd352dd05594d5508f28387"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a45129224abd352dd05594d5508f28387"></a> +def </td><td class="memItemRight" valign="bottom"><b>from_param</b></td></tr> +<tr class="separator:a45129224abd352dd05594d5508f28387"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a339f251b86dd4c8063011958a5402074"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a339f251b86dd4c8063011958a5402074"></a> +def </td><td class="memItemRight" valign="bottom"><b>from_array</b></td></tr> +<tr class="separator:a339f251b86dd4c8063011958a5402074"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aaf96e3b6a7aa2946f623f5190b2d1263"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf96e3b6a7aa2946f623f5190b2d1263"></a> +def </td><td class="memItemRight" valign="bottom"><b>from_list</b></td></tr> +<tr class="separator:aaf96e3b6a7aa2946f623f5190b2d1263"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4d65964e49ee613dbeabf80e27f0a510"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d65964e49ee613dbeabf80e27f0a510"></a> +def </td><td class="memItemRight" valign="bottom"><b>from_ndarray</b></td></tr> +<tr class="separator:a4d65964e49ee613dbeabf80e27f0a510"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a> +Static Public Attributes</h2></td></tr> +<tr class="memitem:af23274cf5a626b4e5873a617993e0390"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af23274cf5a626b4e5873a617993e0390"></a> + </td><td class="memItemRight" valign="bottom"><b>from_tuple</b> = from_list</td></tr> +<tr class="separator:af23274cf5a626b4e5873a617993e0390"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"> +<p>Definition at line <a class="el" href="CSMOn_8py_source.html#l00049">49</a> of file <a class="el" href="CSMOn_8py_source.html">CSMOn.py</a>.</p> +</div><hr/>The documentation for this class was generated from the following file:<ul> +<li>python/<a class="el" href="CSMOn_8py_source.html">CSMOn.py</a></li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 11:11:46 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/classCSMOn_1_1Param__coll__graph.map b/doc/html/classCSMOn_1_1Param__coll__graph.map new file mode 100644 index 0000000..25d8585 --- /dev/null +++ b/doc/html/classCSMOn_1_1Param__coll__graph.map @@ -0,0 +1,2 @@ +<map id="CSMOn.Param" name="CSMOn.Param"> +</map> diff --git a/doc/html/classCSMOn_1_1Param__coll__graph.md5 b/doc/html/classCSMOn_1_1Param__coll__graph.md5 new file mode 100644 index 0000000..0b61af1 --- /dev/null +++ b/doc/html/classCSMOn_1_1Param__coll__graph.md5 @@ -0,0 +1 @@ +1343fb12441ea65a8819af7646476432 \ No newline at end of file diff --git a/doc/html/classCSMOn_1_1Param__coll__graph.png b/doc/html/classCSMOn_1_1Param__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fd58fc7eeff0e05b0c969c4cf6672ed20a4998cf GIT binary patch literal 3590 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 literal 0 HcmV?d00001 diff --git a/doc/html/classCSMOn_1_1Param__inherit__graph.map b/doc/html/classCSMOn_1_1Param__inherit__graph.map new file mode 100644 index 0000000..25d8585 --- /dev/null +++ b/doc/html/classCSMOn_1_1Param__inherit__graph.map @@ -0,0 +1,2 @@ +<map id="CSMOn.Param" name="CSMOn.Param"> +</map> diff --git a/doc/html/classCSMOn_1_1Param__inherit__graph.md5 b/doc/html/classCSMOn_1_1Param__inherit__graph.md5 new file mode 100644 index 0000000..0b61af1 --- /dev/null +++ b/doc/html/classCSMOn_1_1Param__inherit__graph.md5 @@ -0,0 +1 @@ +1343fb12441ea65a8819af7646476432 \ No newline at end of file diff --git a/doc/html/classCSMOn_1_1Param__inherit__graph.png b/doc/html/classCSMOn_1_1Param__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fd58fc7eeff0e05b0c969c4cf6672ed20a4998cf GIT binary patch literal 3590 zcmeAS@N?(olHy`uVBq!ia0y~yU}$AvU?|{VVqjp{|6JuD0|NtFlDE4H!+#K5uy^@n z1_s{Uo-U3d6?5Lstqu^rE_d9&LS2caGDJvy3zsWf;)Z=zqEmRpR{E{&I<<PjHiaqM zF5UBM+SbRqvgB5y)u|OrY+9JSm|0J4Jr&?pImIc&q0%xgj#W#cj6=vt=+LCS^>eB( zt8y}`%;J6bod4OJ&HHVC+y1^=T()`l9My#yTpR_>jq6wi&NO{sju)tVz<r3nCb8wL z$I?sd*6HnxS*LA!UeQGA?6qrQ6X!l{573a2l|8DbR<Vks^^kkN+}W4xN3LG|D(O|V z?&XUY0a}XZ<bNO;wD5afhl`Tg?7x@1^(UT8QCDBSV~54ckX6}%{(WVCUc7y~b>qg1 zUZLGjZ){9Hd-klWt1B}z^URqumo8l@!{@F&spPVT$l((wJVHZ7cUA1#wQI_%s<eQW zA$IfEpSX7Aih%^rT8}EW-mH8OI6h5hSG@v<khu8q1cRL1+{1?s$=TQOFjRcK8qUbD zI($7F!;vFLTH4zWCrtEkSs3u{&d$qs@A@iD^z!zeJ9qBeH*b=Xl9nx7#=vm-@?{ym z=dI##8#Zr#Twrne@@0mG?Ca}x?%q9n=FGLRyUona#lu*$1AL<+B4T!xWR{eOq?Nz9 zaq<5B^(vgl!o$LhBzoSw$+=qfEO*MSwaKg3u3jB{dzx#rX}aQHWlhbKSFdi}x^?T? zwYj&q<>r`4&#l$CdgV$)bhN*}|6+|<)2Baw^-62{>BNTh>+{po)#sltFDdEi?{^RU zGCP0Y$M4_eB_uL(b8DYY4fmU4p(xbp<LkRK=G})61!-x^CQh8_q2d(y<>TYyFJHba z5WZ1TS!p@f&)n3s_V3s0lP693_3KxHWtfo9{*T9`_y7HN`|j@Ysi(v*X>85R*{U?r zW2>(J1$(i#?VC3j7Zw`&+}~Z!zieZXAWP)ls?yX{)viU=-`@QE^?JQ1<Jz@r4cd-B zwzRTZq_L~+@2`gs6C)x510Ozos3^eE)7v|F^5o;kjy);*dF05EGiQ3zJUN;^{QT3> z(!wikCLtvix3h>fbUXXQYggahtdw4Qkl%H2$n8auW~)T)&zw1P>(;F)TvOX_@!S1) zaG2lz&+qs9eSLiX{d%qM+Tfzp$f&EUo0gWg!7L|z>y|Apfm_zCdv{@>vv$~;51&5m zDtz3=W~ek#!`@!rQDDZ@(@&TC&0Tc)<%(Ul8k0{>Ic05aomh3xZDlNX^xK%+i#=lJ z<V~d3u3yi;?ESsHvuDg$Ayxe2!^26FCN(uN`TL(Y&Az5_Dv_CiVeZ_yCQ`f%3CYQq zuU=(c+SA+n@n=n^i_-Md+}zx(OpX;5KW69e(-h!%Ce*wrqoAN5I$HY7B#$L`cb6-3 zEHb-s<3_~9HpAxTX72ncucExJuG*HWcT*~2i~Pcc3)TJSwH&Maa?$<66HdWS7lVgS zpSCJ^I5|0GWN4J#?YIB8WB2ag-`?JyU;ppt?fm_`3>Fn19;DB&y>|cp{ad$QJ%3*Q z@sX=g=abj3qeDVeM7UCoW^UYQ*y_Z{(9_?ao|1B)N+h$m`16Jh8yXrKUSD7T{oA)| z*ROBB`DVcag-}nf6(L#-3hL_a8Y0V<EYaBzm~}nKX{&Dc-R%rI|7!H6dfm)1>vh|_ zWeX1%mz1=$b6`nT)ve2yFW<QnBlzv#@As2WrYsETc>7*bQj(94&&<s1c%N)@^7H_W zn(ueZ*REN!X6;&KWo31B^+1uQA1hv8TWf4+7`eZ$HZybOvy04*6Mp=tC@(KJn)&BZ zx4xWxoy@hKsY^`e%(E<R^IEztdi%O9TSTVmF9}?gtr@y{o9?VY+4UY8&;Cww@0Yu~ zyZrp^+rK?~=AJz{S^f8~U+ZFaGHt$l_pYCxpT<YM(>V|Rmc3!-Gd*uVts_KBR!VAD z&CjB`x_#HQ<G*G6|9AE5Y;*Jcdw=d#zfb%<v$fSVBxK69?OXp`sQZ6oXYuk^q7&!N zm7RY2>aT6n<g4oI%V#?NXw>Jh|G@f?eP2MaoxGG()i<ko{!4;ZUW#2GSvO<WtVtd! z75jbqC!D_MJ$)9ROu@3t;jf}jFKR4L5;^nf@TE&d&(F<0AJ#AS;B)n>*Z<$X*<+@1 zB>H;Pv{OYE^;4#p9Nf>b=zG50>%H<ul0h*w><k8Wdh6Ey?O*p)M|AJ^#k+p(i?Cs3 zFfcLE(965Db<Wa7-|Iv~O(mtI7#IXx;=-<JO*~PuHpBD9cKOMZgP%Tq%VEU4IXKwE z^{DM#uPCKoZ`rT$Ff=qWu3WJqu)S(pU)}G(kSi-Hbh#KB6h5t5_1kHoOZ%j09df@F z1$?euD?4}Q%&udufnSdGhQ)eDSyjC`e%^lj3b92RQ4uSSJ5Q7Q{qb@C_E7l~r=M!f zzi(`0v`*O5+dclTgjCg?D_8WVudZ}Fbm78-Tc)P5?)n$P?bpTbw!VH^i^C{5WXXDa zo~{4?{JE(hcKXd*U6II%8K=&ixpCq}eY^OxS>ERrbo<K}Wo)T0+_|Rqw@ry|%E}k7 zE4Icc{y8Atf>OaCMTi1TB+p&2Sy&nyJGZm5bDinA{*{`C4>T;w7X5tqVS&l}50(Gw z3knJX)FvN2del~W=jqvp4mlkS7kQTC`2YOMsgid&v$C?D^`cjbTYpNrxw{7k2j9MZ z`}pzWvNAGGPELFF?0KNn=`v~V+}P-7Z2^v)+}zrl8Yd^G2dO5LPcFIqa_7#SH!|1s z$=lbxzP5JH9viE<d<+x3mfpO1b9?@MIXSsB1Btk}xW>lDwzf9zz@sTfqM2N+kKVnL z6BbU+&tJbbEL-;N4@D6!WhJG!>bF~W?6BZ!E&BZItp5H#Muvukr>E&MG)$Q?W#Yt% zEiEk3(YG5L8>dW}(%IQLV}`_zcZb{gtE;MHWMvb}l9CoJeLDYU!jYuHl9DY`r-p`v zi1fPs{(Rov*w|QF8dR-BGdHuAzT+0xyK(#WVht-ZvuP72PMk5L;^86IwOf8=E|~jK zOIthp@v&YRzT-!a9zA&Q;faaL?EG?1K2{WD#>U>gxY&K}oH;8(v}~OI|9H%Qbk}UN z+*Rw=g{8cH{o2;%-^_1H>gw%YOXt~Em%YBWHv8I|kDoq0D%!~}Z>OWJ9lgLzYwE77 zt6JIF+3xP{X0z{Jyr?MFz4gMg<;`V(R;*q7_51hZ(>6q`xp5<6#<Bnn`@df%2WYfJ zmY0{ehB7eZ=f8jTD(k3;mZ_=f4a-g1T3Uw=9oi6k@XQ$<1A`5V7BMj#NHMDa`!!sw zdu#svee!ib665A>m^X8#B!h#q^Wlq&-T(gi^XKp1^>KT-7$jt5QjBJvJ$sgskuf(n zcNJqncWP>?j#&2pe}BW*$NhaeJ-(@_>D#-z)jvNyJ^Ie%E7$b6Ru2^+4i+9Z=4cPK z$#37hNtku`p^3S<yj4lZ;fEh8_Dq~8nDeBKS6W5L)8C(;A)%;f)6SihzrVe`F-z2W zCX>7S@y15R8S7TB-d*uADJ0}d`TbgRL&Jqy{#sMLRD?E0*qE4<yt`wWp8kBQc6is( zNBaAI96EVYQ(s@-%F4>tR<>@l7(+lnK*6IUoK|z~!X1KxgR`=-Qc_Z?s;Zowozv3N zN=i!d^42|Sh~|p=z$|xb$<F5%xAs&T_aC>e|F>uM?C8qM%7TJ|)YPZ;Ts%BwZ*DNQ zuW4&zGdDNq=I-9Ps%e6U%FaLam(||g-+%wkotp3O?lLfJtyWP|N;*H!w)*?K)Qu5N z3qM?08O*>SEIj$lnKLtHNMvVcSKRUO^E>q8#EBEV(&kYS5obgN1Oyxw2GrEnGBO-I zcu<7v==t;f3=6(xMCe3W%wHd~^U|qPtM>1g|9yAc@9*#DTbIB4^YgPt*R|`{tE;Pb z?*M_8wzjnN^x~Z{^78Vo8@6vR4+;vZsMv8SAvG^=U)I%C@7}%hoo$x5{l?w9e?Ohp zKWy^HW#`0;b9e(|mM0n-8C89F;8;|&$wjHKsOXShlWeRr!yh}<J4$A2MYk0HyRom< zy8rlLzonspfsG0sD_3g%nUs{Dudky%(Ia|WPNVV;CUbN1jS+XQUAuPU#*3FPJ7c$G zUtc$8j*M$Q1B1uXOMm|SSsT4wORI+IU~q8o$B!Qy8yhn-Gw0WQ;w%%qvr~#`p4P38 z$~HE8mM(p|di}mvFJ8QO`}Xg@-|xG-yOouc7#LEFZeG9s{maYCHFotC6+0F$RyH*i zy={5mfBTxv>F0Ot*r8F&-+VNwx3{<U*URPG^X^uCcyRFj{{M2avbo90pRYydpH+SK z>+9>Tjj4LemM<4%F*GuobTTC}GLnH|Y4^HH=6OQ5US@=7nd<85nwpyG>G>&5G?3^y za>V6_Z8?KOPEJl<US3tzuLlnnOr0t^`DD%Wx#d%`5{y6%e0DyW0IlT#8kw1yk&%%x zdgU1zC+^+5cl`MC4-XID=x5fRIA_kAhYvR<9p&O}I(zo);>C;4&#`n?o7~*oTw7C< zl$^YAzxNfkDO0BCWNo)${CwtmctC)FfIvWK=+`Z!HvDt!YHwY;wr#-z2WOtb|6H)X z4O)%C{mb@5+UEJ&`kpu5yLT^kcUflN%;WvJx3{sfv1#4SQ>rk!wl22%$qB);hNn~P k{-!b){zI;Vy8kov_lx_j;Sh0PU|?YIboFyt=akR{02c%IO8@`> literal 0 HcmV?d00001 diff --git a/doc/html/classCSMOn__coll__graph.map b/doc/html/classCSMOn__coll__graph.map new file mode 100644 index 0000000..d866e6f --- /dev/null +++ b/doc/html/classCSMOn__coll__graph.map @@ -0,0 +1,3 @@ +<map id="CSMOn" name="CSMOn"> +<area shape="rect" id="node2" href="$classISearch.html" title="ISearch" alt="" coords="7,5,73,32"/> +</map> diff --git a/doc/html/classCSMOn__coll__graph.md5 b/doc/html/classCSMOn__coll__graph.md5 new file mode 100644 index 0000000..b55b306 --- /dev/null +++ b/doc/html/classCSMOn__coll__graph.md5 @@ -0,0 +1 @@ +dcf5de90018887cef9d64ee9fcc9be70 \ No newline at end of file diff --git a/doc/html/classCSMOn__coll__graph.png b/doc/html/classCSMOn__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a921a2a035f471164515dd2e3f3314d9e09700f8 GIT binary patch literal 2963 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 literal 0 HcmV?d00001 diff --git a/doc/html/classISearch-members.html b/doc/html/classISearch-members.html new file mode 100644 index 0000000..03bf143 --- /dev/null +++ b/doc/html/classISearch-members.html @@ -0,0 +1,108 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn +  <span id="projectnumber">1</span> + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">ISearch Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="classISearch.html">ISearch</a>, including all inherited members.</p> +<table class="directory"> + <tr class="even"><td class="entry"><a class="el" href="classISearch.html#a9cee257ee19c02341da60440c5cddbd8">getBestPos</a>(double *_x)=0</td><td class="entry"><a class="el" href="classISearch.html">ISearch</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="classISearch.html#a3504ed6684ca6c82aa79c40b965d5237">getFitness</a>()=0</td><td class="entry"><a class="el" href="classISearch.html">ISearch</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="classISearch.html#a56f6b069cc3dd7f8e3f2ff38bb681639">getNEvals</a>()=0</td><td class="entry"><a class="el" href="classISearch.html">ISearch</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>ISearch</b>() (defined in <a class="el" href="classISearch.html">ISearch</a>)</td><td class="entry"><a class="el" href="classISearch.html">ISearch</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="classISearch.html#ae3cc643bf0fbe9d9bac1d43642bbb129">next</a>(int M)=0</td><td class="entry"><a class="el" href="classISearch.html">ISearch</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="classISearch.html#a8eabe4ae3ed69ede2646a536f558f2fe">startup</a>()=0</td><td class="entry"><a class="el" href="classISearch.html">ISearch</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~ISearch</b>()=0 (defined in <a class="el" href="classISearch.html">ISearch</a>)</td><td class="entry"><a class="el" href="classISearch.html">ISearch</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 11:54:05 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/classISearch.html b/doc/html/classISearch.html new file mode 100644 index 0000000..7bdb5e6 --- /dev/null +++ b/doc/html/classISearch.html @@ -0,0 +1,267 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: ISearch Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<div class="title">ISearch Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div> +</div><!--header--> +<div class="contents"> + +<p>The interface that the search methods must to implement. + <a href="classISearch.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="ISearch_8hpp_source.html">ISearch.hpp</a>></code></p> +<div class="dynheader"> +Inheritance diagram for ISearch:</div> +<div class="dyncontent"> +<div class="center"><img src="classISearch__inherit__graph.png" border="0" usemap="#ISearch_inherit__map" alt="Inheritance graph"/></div> +<map name="ISearch_inherit__map" id="ISearch_inherit__map"> +<area shape="rect" id="node2" href="classPSO.html" title="Particle Swarm Optimization. " alt="" coords="13,80,64,107"/></map> +<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:a8eabe4ae3ed69ede2646a536f558f2fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8eabe4ae3ed69ede2646a536f558f2fe"></a> +virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classISearch.html#a8eabe4ae3ed69ede2646a536f558f2fe">startup</a> ()=0</td></tr> +<tr class="memdesc:a8eabe4ae3ed69ede2646a536f558f2fe"><td class="mdescLeft"> </td><td class="mdescRight">Startup the search method. <br /></td></tr> +<tr class="separator:a8eabe4ae3ed69ede2646a536f558f2fe"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae3cc643bf0fbe9d9bac1d43642bbb129"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classISearch.html#ae3cc643bf0fbe9d9bac1d43642bbb129">next</a> (int M)=0</td></tr> +<tr class="memdesc:ae3cc643bf0fbe9d9bac1d43642bbb129"><td class="mdescLeft"> </td><td class="mdescRight">Obtain the next improvement. <a href="#ae3cc643bf0fbe9d9bac1d43642bbb129">More...</a><br /></td></tr> +<tr class="separator:ae3cc643bf0fbe9d9bac1d43642bbb129"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9cee257ee19c02341da60440c5cddbd8"><td class="memItemLeft" align="right" valign="top">virtual int </td><td class="memItemRight" valign="bottom"><a class="el" href="classISearch.html#a9cee257ee19c02341da60440c5cddbd8">getBestPos</a> (double *_x)=0</td></tr> +<tr class="memdesc:a9cee257ee19c02341da60440c5cddbd8"><td class="mdescLeft"> </td><td class="mdescRight">Get the best result obtained up to the moment. <a href="#a9cee257ee19c02341da60440c5cddbd8">More...</a><br /></td></tr> +<tr class="separator:a9cee257ee19c02341da60440c5cddbd8"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a56f6b069cc3dd7f8e3f2ff38bb681639"><td class="memItemLeft" align="right" valign="top">virtual int </td><td class="memItemRight" valign="bottom"><a class="el" href="classISearch.html#a56f6b069cc3dd7f8e3f2ff38bb681639">getNEvals</a> ()=0</td></tr> +<tr class="memdesc:a56f6b069cc3dd7f8e3f2ff38bb681639"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of fitness function evaluations performed up to the moment. <a href="#a56f6b069cc3dd7f8e3f2ff38bb681639">More...</a><br /></td></tr> +<tr class="separator:a56f6b069cc3dd7f8e3f2ff38bb681639"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3504ed6684ca6c82aa79c40b965d5237"><td class="memItemLeft" align="right" valign="top">virtual double </td><td class="memItemRight" valign="bottom"><a class="el" href="classISearch.html#a3504ed6684ca6c82aa79c40b965d5237">getFitness</a> ()=0</td></tr> +<tr class="memdesc:a3504ed6684ca6c82aa79c40b965d5237"><td class="mdescLeft"> </td><td class="mdescRight">Get the best fitness value found up to the moment. <a href="#a3504ed6684ca6c82aa79c40b965d5237">More...</a><br /></td></tr> +<tr class="separator:a3504ed6684ca6c82aa79c40b965d5237"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><p>The interface that the search methods must to implement. </p> +<dl class="section date"><dt>Date</dt><dd>04/Mar/2017 </dd></dl> +<dl class="section author"><dt>Author</dt><dd>Peter Frank Perroni (<a href="#" onclick="location.href='mai'+'lto:'+'pfp'+'er'+'ron'+'i@'+'gma'+'il'+'.co'+'m'; return false;">pfper<span style="display: none;">.nosp@m.</span>roni<span style="display: none;">.nosp@m.</span>@gmai<span style="display: none;">.nosp@m.</span>l.co<span style="display: none;">.nosp@m.</span>m</a>) </dd></dl> + +<p>Definition at line <a class="el" href="ISearch_8hpp_source.html#l00040">40</a> of file <a class="el" href="ISearch_8hpp_source.html">ISearch.hpp</a>.</p> +</div><h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="a9cee257ee19c02341da60440c5cddbd8"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">virtual int ISearch::getBestPos </td> + <td>(</td> + <td class="paramtype">double * </td> + <td class="paramname"><em>_x</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Get the best result obtained up to the moment. </p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">_x</td><td>A pointer to store the positions of the best result. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>An ID for the best result (implementation specific). </dd></dl> + +<p>Implemented in <a class="el" href="classPSO.html#a649d2a7b444ac91bfb05d7e9f3c2e20e">PSO</a>.</p> + +</div> +</div> +<a class="anchor" id="a3504ed6684ca6c82aa79c40b965d5237"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">virtual double ISearch::getFitness </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Get the best fitness value found up to the moment. </p> +<dl class="section return"><dt>Returns</dt><dd>The best fitness value found. </dd></dl> + +<p>Implemented in <a class="el" href="classPSO.html#a9859c4126970209c8c8f534d4458dbd7">PSO</a>.</p> + +</div> +</div> +<a class="anchor" id="a56f6b069cc3dd7f8e3f2ff38bb681639"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">virtual int ISearch::getNEvals </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Get the number of fitness function evaluations performed up to the moment. </p> +<dl class="section return"><dt>Returns</dt><dd>The number of evaluations performed. </dd></dl> + +<p>Implemented in <a class="el" href="classPSO.html#aa5c58e658a718b2f75b58b51c312f2ba">PSO</a>.</p> + +</div> +</div> +<a class="anchor" id="ae3cc643bf0fbe9d9bac1d43642bbb129"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">virtual void ISearch::next </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>M</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Obtain the next improvement. </p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">M</td><td>The maximum number of evaluations allowed. </td></tr> + </table> + </dd> +</dl> + +<p>Implemented in <a class="el" href="classPSO.html#a465d956bdb86e93bc06b6fb016feb70c">PSO</a>.</p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>cpp/<a class="el" href="ISearch_8hpp_source.html">ISearch.hpp</a></li> +<li>cpp/<a class="el" href="CSMOn_8cpp_source.html">CSMOn.cpp</a></li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/classISearch__inherit__graph.map b/doc/html/classISearch__inherit__graph.map new file mode 100644 index 0000000..4908846 --- /dev/null +++ b/doc/html/classISearch__inherit__graph.map @@ -0,0 +1,3 @@ +<map id="ISearch" name="ISearch"> +<area shape="rect" id="node2" href="$classPSO.html" title="Particle Swarm Optimization. " alt="" coords="13,80,64,107"/> +</map> diff --git a/doc/html/classISearch__inherit__graph.md5 b/doc/html/classISearch__inherit__graph.md5 new file mode 100644 index 0000000..7e9dc87 --- /dev/null +++ b/doc/html/classISearch__inherit__graph.md5 @@ -0,0 +1 @@ +d50fbcec178e02faa2475516a2b287db \ No newline at end of file diff --git a/doc/html/classISearch__inherit__graph.png b/doc/html/classISearch__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..cd63ecc4848a433a9860adc666d0b56271b628ee GIT binary patch literal 2145 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 Q3=9kmp00i_>zopr0NbJzfB*mh literal 0 HcmV?d00001 diff --git a/doc/html/classPSO-members.html b/doc/html/classPSO-members.html new file mode 100644 index 0000000..7036122 --- /dev/null +++ b/doc/html/classPSO-members.html @@ -0,0 +1,111 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn +  <span id="projectnumber">1</span> + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">PSO Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="classPSO.html">PSO</a>, including all inherited members.</p> +<table class="directory"> + <tr class="even"><td class="entry"><a class="el" href="classPSO.html#a649d2a7b444ac91bfb05d7e9f3c2e20e">getBestPos</a>(double *_x)</td><td class="entry"><a class="el" href="classPSO.html">PSO</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="classPSO.html#a9859c4126970209c8c8f534d4458dbd7">getFitness</a>()</td><td class="entry"><a class="el" href="classPSO.html">PSO</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="classPSO.html#aa5c58e658a718b2f75b58b51c312f2ba">getNEvals</a>()</td><td class="entry"><a class="el" href="classPSO.html">PSO</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="classPSO.html#a0e3ed1fa7e0bb64ca9e6afcdca8d1813">getRandomSeed</a>()</td><td class="entry"><a class="el" href="classPSO.html">PSO</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ISearch</b>() (defined in <a class="el" href="classISearch.html">ISearch</a>)</td><td class="entry"><a class="el" href="classISearch.html">ISearch</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> + <tr><td class="entry"><a class="el" href="classPSO.html#a465d956bdb86e93bc06b6fb016feb70c">next</a>(int M)</td><td class="entry"><a class="el" href="classPSO.html">PSO</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="classPSO.html#a810105b87e4f6fc026edd6b4ef484953">PSO</a>(callback_t fitnessFunction, double s1, double s2, int p, int n, double w, double c1, double c2)</td><td class="entry"><a class="el" href="classPSO.html">PSO</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="classPSO.html#a4866695395fb314ea732bccde6691ef3">startup</a>()</td><td class="entry"><a class="el" href="classPSO.html">PSO</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~ISearch</b>()=0 (defined in <a class="el" href="classISearch.html">ISearch</a>)</td><td class="entry"><a class="el" href="classISearch.html">ISearch</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>~PSO</b>() (defined in <a class="el" href="classPSO.html">PSO</a>)</td><td class="entry"><a class="el" href="classPSO.html">PSO</a></td><td class="entry"></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 11:54:05 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/classPSO.html b/doc/html/classPSO.html new file mode 100644 index 0000000..e394c0c --- /dev/null +++ b/doc/html/classPSO.html @@ -0,0 +1,389 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: PSO Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<div class="title">PSO Class Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p>Particle Swarm Optimization. + <a href="classPSO.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="PSO_8hpp_source.html">PSO.hpp</a>></code></p> +<div class="dynheader"> +Inheritance diagram for PSO:</div> +<div class="dyncontent"> +<div class="center"><img src="classPSO__inherit__graph.png" border="0" usemap="#PSO_inherit__map" alt="Inheritance graph"/></div> +<map name="PSO_inherit__map" id="PSO_inherit__map"> +<area shape="rect" id="node2" href="classISearch.html" title="The interface that the search methods must to implement. " alt="" coords="5,5,72,32"/></map> +<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> +<div class="dynheader"> +Collaboration diagram for PSO:</div> +<div class="dyncontent"> +<div class="center"><img src="classPSO__coll__graph.png" border="0" usemap="#PSO_coll__map" alt="Collaboration graph"/></div> +<map name="PSO_coll__map" id="PSO_coll__map"> +<area shape="rect" id="node2" href="classISearch.html" title="The interface that the search methods must to implement. " alt="" coords="5,5,72,32"/></map> +<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:a810105b87e4f6fc026edd6b4ef484953"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classPSO.html#a810105b87e4f6fc026edd6b4ef484953">PSO</a> (callback_t fitnessFunction, double s1, double s2, int p, int n, double w, double c1, double c2)</td></tr> +<tr class="memdesc:a810105b87e4f6fc026edd6b4ef484953"><td class="mdescLeft"> </td><td class="mdescRight">A standard implementation of <a class="el" href="classPSO.html" title="Particle Swarm Optimization. ">PSO</a>. <a href="#a810105b87e4f6fc026edd6b4ef484953">More...</a><br /></td></tr> +<tr class="separator:a810105b87e4f6fc026edd6b4ef484953"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4866695395fb314ea732bccde6691ef3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4866695395fb314ea732bccde6691ef3"></a> +void </td><td class="memItemRight" valign="bottom"><a class="el" href="classPSO.html#a4866695395fb314ea732bccde6691ef3">startup</a> ()</td></tr> +<tr class="memdesc:a4866695395fb314ea732bccde6691ef3"><td class="mdescLeft"> </td><td class="mdescRight">Startup the <a class="el" href="classPSO.html" title="Particle Swarm Optimization. ">PSO</a>. <br /></td></tr> +<tr class="separator:a4866695395fb314ea732bccde6691ef3"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a465d956bdb86e93bc06b6fb016feb70c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classPSO.html#a465d956bdb86e93bc06b6fb016feb70c">next</a> (int M)</td></tr> +<tr class="memdesc:a465d956bdb86e93bc06b6fb016feb70c"><td class="mdescLeft"> </td><td class="mdescRight">Obtain the next improvement. <a href="#a465d956bdb86e93bc06b6fb016feb70c">More...</a><br /></td></tr> +<tr class="separator:a465d956bdb86e93bc06b6fb016feb70c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a649d2a7b444ac91bfb05d7e9f3c2e20e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classPSO.html#a649d2a7b444ac91bfb05d7e9f3c2e20e">getBestPos</a> (double *_x)</td></tr> +<tr class="memdesc:a649d2a7b444ac91bfb05d7e9f3c2e20e"><td class="mdescLeft"> </td><td class="mdescRight">Get the best result obtained up to the moment (global best). <a href="#a649d2a7b444ac91bfb05d7e9f3c2e20e">More...</a><br /></td></tr> +<tr class="separator:a649d2a7b444ac91bfb05d7e9f3c2e20e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa5c58e658a718b2f75b58b51c312f2ba"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classPSO.html#aa5c58e658a718b2f75b58b51c312f2ba">getNEvals</a> ()</td></tr> +<tr class="memdesc:aa5c58e658a718b2f75b58b51c312f2ba"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of fitness function evaluations performed up to the moment. <a href="#aa5c58e658a718b2f75b58b51c312f2ba">More...</a><br /></td></tr> +<tr class="separator:aa5c58e658a718b2f75b58b51c312f2ba"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9859c4126970209c8c8f534d4458dbd7"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classPSO.html#a9859c4126970209c8c8f534d4458dbd7">getFitness</a> ()</td></tr> +<tr class="memdesc:a9859c4126970209c8c8f534d4458dbd7"><td class="mdescLeft"> </td><td class="mdescRight">Get the best fitness value found up to the moment. <a href="#a9859c4126970209c8c8f534d4458dbd7">More...</a><br /></td></tr> +<tr class="separator:a9859c4126970209c8c8f534d4458dbd7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0e3ed1fa7e0bb64ca9e6afcdca8d1813"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classPSO.html#a0e3ed1fa7e0bb64ca9e6afcdca8d1813">getRandomSeed</a> ()</td></tr> +<tr class="memdesc:a0e3ed1fa7e0bb64ca9e6afcdca8d1813"><td class="mdescLeft"> </td><td class="mdescRight">Get a random number to be used as seed for the random number generator. <a href="#a0e3ed1fa7e0bb64ca9e6afcdca8d1813">More...</a><br /></td></tr> +<tr class="separator:a0e3ed1fa7e0bb64ca9e6afcdca8d1813"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><p>Particle Swarm Optimization. </p> +<dl class="section date"><dt>Date</dt><dd>04/Mar/2017 </dd></dl> +<dl class="section author"><dt>Author</dt><dd>Peter Frank Perroni (<a href="#" onclick="location.href='mai'+'lto:'+'pfp'+'er'+'ron'+'i@'+'gma'+'il'+'.co'+'m'; return false;">pfper<span style="display: none;">.nosp@m.</span>roni<span style="display: none;">.nosp@m.</span>@gmai<span style="display: none;">.nosp@m.</span>l.co<span style="display: none;">.nosp@m.</span>m</a>) </dd></dl> + +<p>Definition at line <a class="el" href="PSO_8hpp_source.html#l00053">53</a> of file <a class="el" href="PSO_8hpp_source.html">PSO.hpp</a>.</p> +</div><h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="a810105b87e4f6fc026edd6b4ef484953"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">PSO::PSO </td> + <td>(</td> + <td class="paramtype">callback_t </td> + <td class="paramname"><em>fitnessFunction</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">double </td> + <td class="paramname"><em>s1</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">double </td> + <td class="paramname"><em>s2</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>p</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>n</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">double </td> + <td class="paramname"><em>w</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">double </td> + <td class="paramname"><em>c1</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">double </td> + <td class="paramname"><em>c2</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>A standard implementation of <a class="el" href="classPSO.html" title="Particle Swarm Optimization. ">PSO</a>. </p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">fitnessFunction</td><td>The callback reference to the fitness function. </td></tr> + <tr><td class="paramname">s1</td><td>The lower bound of the search space. </td></tr> + <tr><td class="paramname">s2</td><td>The upper bound of the search space. </td></tr> + <tr><td class="paramname">p</td><td>The number of particles. </td></tr> + <tr><td class="paramname">n</td><td>The number of dimensions of the problem. </td></tr> + <tr><td class="paramname">w</td><td>The acceleration coefficient. For linear decreasing weight, provide it in negative values </td></tr> + <tr><td class="paramname">c1</td><td>The cognitive knowledge rate. </td></tr> + <tr><td class="paramname">c2</td><td>The social knowledge rate. </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="PSO_8cpp_source.html#l00045">45</a> of file <a class="el" href="PSO_8cpp_source.html">PSO.cpp</a>.</p> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="a649d2a7b444ac91bfb05d7e9f3c2e20e"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">int PSO::getBestPos </td> + <td>(</td> + <td class="paramtype">double * </td> + <td class="paramname"><em>_x</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Get the best result obtained up to the moment (global best). </p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">_x</td><td>A pointer to store the positions of the global best. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>The index of the particle that found the global best position. </dd></dl> + +<p>Implements <a class="el" href="classISearch.html#a9cee257ee19c02341da60440c5cddbd8">ISearch</a>.</p> + +<p>Definition at line <a class="el" href="PSO_8cpp_source.html#l00160">160</a> of file <a class="el" href="PSO_8cpp_source.html">PSO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a9859c4126970209c8c8f534d4458dbd7"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">double PSO::getFitness </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Get the best fitness value found up to the moment. </p> +<dl class="section return"><dt>Returns</dt><dd>The best fitness value found. </dd></dl> + +<p>Implements <a class="el" href="classISearch.html#a3504ed6684ca6c82aa79c40b965d5237">ISearch</a>.</p> + +<p>Definition at line <a class="el" href="PSO_8cpp_source.html#l00180">180</a> of file <a class="el" href="PSO_8cpp_source.html">PSO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="aa5c58e658a718b2f75b58b51c312f2ba"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">int PSO::getNEvals </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Get the number of fitness function evaluations performed up to the moment. </p> +<dl class="section return"><dt>Returns</dt><dd>The number of evaluations performed. </dd></dl> + +<p>Implements <a class="el" href="classISearch.html#a56f6b069cc3dd7f8e3f2ff38bb681639">ISearch</a>.</p> + +<p>Definition at line <a class="el" href="PSO_8cpp_source.html#l00170">170</a> of file <a class="el" href="PSO_8cpp_source.html">PSO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a0e3ed1fa7e0bb64ca9e6afcdca8d1813"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">unsigned int PSO::getRandomSeed </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Get a random number to be used as seed for the random number generator. </p> +<p>This implementation can be adapted/changed as necessary.</p> +<dl class="section return"><dt>Returns</dt><dd>A random seed. </dd></dl> + +<p>Definition at line <a class="el" href="PSO_8cpp_source.html#l00191">191</a> of file <a class="el" href="PSO_8cpp_source.html">PSO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a465d956bdb86e93bc06b6fb016feb70c"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void PSO::next </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>M</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Obtain the next improvement. </p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">M</td><td>The maximum number of evaluations allowed. </td></tr> + </table> + </dd> +</dl> + +<p>Implements <a class="el" href="classISearch.html#ae3cc643bf0fbe9d9bac1d43642bbb129">ISearch</a>.</p> + +<p>Definition at line <a class="el" href="PSO_8cpp_source.html#l00120">120</a> of file <a class="el" href="PSO_8cpp_source.html">PSO.cpp</a>.</p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>cpp/<a class="el" href="PSO_8hpp_source.html">PSO.hpp</a></li> +<li>cpp/<a class="el" href="PSO_8cpp_source.html">PSO.cpp</a></li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/classPSO__coll__graph.map b/doc/html/classPSO__coll__graph.map new file mode 100644 index 0000000..2388f63 --- /dev/null +++ b/doc/html/classPSO__coll__graph.map @@ -0,0 +1,3 @@ +<map id="PSO" name="PSO"> +<area shape="rect" id="node2" href="$classISearch.html" title="The interface that the search methods must to implement. " alt="" coords="5,5,72,32"/> +</map> diff --git a/doc/html/classPSO__coll__graph.md5 b/doc/html/classPSO__coll__graph.md5 new file mode 100644 index 0000000..cd926d1 --- /dev/null +++ b/doc/html/classPSO__coll__graph.md5 @@ -0,0 +1 @@ +85e9ae14524a131ba043fef49841dcdd \ No newline at end of file diff --git a/doc/html/classPSO__coll__graph.png b/doc/html/classPSO__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7711b45581b74ee57876fea9173df2c6f165ebc0 GIT binary patch literal 2167 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 A`2YX_ literal 0 HcmV?d00001 diff --git a/doc/html/classPSO__inherit__graph.map b/doc/html/classPSO__inherit__graph.map new file mode 100644 index 0000000..2388f63 --- /dev/null +++ b/doc/html/classPSO__inherit__graph.map @@ -0,0 +1,3 @@ +<map id="PSO" name="PSO"> +<area shape="rect" id="node2" href="$classISearch.html" title="The interface that the search methods must to implement. " alt="" coords="5,5,72,32"/> +</map> diff --git a/doc/html/classPSO__inherit__graph.md5 b/doc/html/classPSO__inherit__graph.md5 new file mode 100644 index 0000000..cd926d1 --- /dev/null +++ b/doc/html/classPSO__inherit__graph.md5 @@ -0,0 +1 @@ +85e9ae14524a131ba043fef49841dcdd \ No newline at end of file diff --git a/doc/html/classPSO__inherit__graph.png b/doc/html/classPSO__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7711b45581b74ee57876fea9173df2c6f165ebc0 GIT binary patch literal 2167 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 A`2YX_ literal 0 HcmV?d00001 diff --git a/doc/html/classes.html b/doc/html/classes.html new file mode 100644 index 0000000..84db34e --- /dev/null +++ b/doc/html/classes.html @@ -0,0 +1,109 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Data Structure Index</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Data Structure Index</div> </div> +</div><!--header--> +<div class="contents"> +<div class="qindex"><a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_P">P</a> | <a class="qindex" href="#letter__">_</a></div> +<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0"> +<tr><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  C  </div></td></tr></table> +</td><td rowspan="2" valign="bottom"><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  I  </div></td></tr></table> +</td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  P  </div></td></tr></table> +</td><td rowspan="2" valign="bottom"><a name="letter__"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  _  </div></td></tr></table> +</td><td valign="top"><a class="el" href="struct__point.html">_point</a>   </td></tr> +<tr><td></td></tr> +<tr><td valign="top"><a class="el" href="classCSMOn.html">CSMOn</a>   </td><td valign="top"><a class="el" href="classISearch.html">ISearch</a>   </td><td valign="top"><a class="el" href="classPSO.html">PSO</a>   </td><td valign="top"><a class="el" href="struct__Param.html">_Param</a>   </td><td></td></tr> +<tr><td></td><td></td><td></td><td></td><td></td></tr> +</table> +<div class="qindex"><a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_P">P</a> | <a class="qindex" href="#letter__">_</a></div> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/closed.png b/doc/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0y~yVBiE{4mJh`h6fYb1Q-|?yggkULn;{G-p%E8P~>R4 z=$<|EB$N38-2}DbmnFr_%O)K7`0vvPK}LtC*|iL-j2e1dIRjJ=#-IMT-)|GIo|S=1 k_R{V{v-v8NIIqptTqq(?amn;60|Nttr>mdKI;Vst0N5uiMgRZ+ literal 0 HcmV?d00001 diff --git a/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79.html b/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79.html new file mode 100644 index 0000000..81bdf95 --- /dev/null +++ b/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79.html @@ -0,0 +1,106 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: python Directory Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_7837fde3ab9c1fb2fc5be7b717af8d79.html">python</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">python Directory Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="dynheader"> +Directory dependency graph for python:</div> +<div class="dyncontent"> +<div class="center"><img src="dir_7837fde3ab9c1fb2fc5be7b717af8d79_dep.png" border="0" usemap="#dir__7837fde3ab9c1fb2fc5be7b717af8d79__dep" alt="python"/></div> +<map name="dir__7837fde3ab9c1fb2fc5be7b717af8d79__dep" id="dir__7837fde3ab9c1fb2fc5be7b717af8d79__dep"> +<area shape="rect" id="node1" href="dir_7837fde3ab9c1fb2fc5be7b717af8d79.html" title="python" alt="" coords="5,5,77,53"/></map> +</div> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a> +Files</h2></td></tr> +<tr class="memitem:CSMOn__wrapper_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="CSMOn__wrapper_8cpp.html">CSMOn_wrapper.cpp</a> <a href="CSMOn__wrapper_8cpp_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79_dep.map b/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79_dep.map new file mode 100644 index 0000000..672d4a3 --- /dev/null +++ b/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79_dep.map @@ -0,0 +1,3 @@ +<map id="python" name="python"> +<area shape="rect" id="node1" href="dir_7837fde3ab9c1fb2fc5be7b717af8d79.html" title="python" alt="" coords="5,5,77,53"/> +</map> diff --git a/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79_dep.md5 b/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79_dep.md5 new file mode 100644 index 0000000..99f66f3 --- /dev/null +++ b/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79_dep.md5 @@ -0,0 +1 @@ +b1eb1efbc66dfb4c203863d5f3de367d \ No newline at end of file diff --git a/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79_dep.png b/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..cc9b4962bd24220944c78d98e266d3903a8d9ae3 GIT binary patch literal 1199 zcmeAS@N?(olHy`uVBq!ia0y~yU<hVlV6f(3V_;xl7u{ygz`($k<n8Xl@E-&h>|H*Y zfq^B()5S5QV$Rz+^&ZmUG6(E4C)K;f_(oZu?aDB@x|M@jRM*Pv^@NR4)^B@Kdqe*i z{=cBrdg)lAWQfazi<^wD<!))_+uj+N-hK7}=OeY)?WGZ?7L;7hShz0MdU0&Fq14%b z0zvgIx=-g`{A5>9@crK2_rLe?zkfF==3PkK`s>{;EZ=w=&poJgIwjIEMN{DHp{A23 zJ!j3DHDksM4i~%EOq*}|L`B_t#PyyjDmr>^L(H^D6RERKxpC{S-`<mvR%Ii{5TjQ) z@w<C<wXv&fW!>v1mca@^%N&;YG<wWrnrOtTl*;7-F<KLc!~|3Q%LxGwOTMvN^)65H zJt-qqBqY1n@<OJKakkg9GiP}8u6r!FT#+U+@ny-kWP=q27J3tANF3gl8@=JCR^jfu zH*%)RScSZ~U0(A?(CsmI%>H}sZf-^lhK372KPoLR7m}CvO<6K8c=@Z^r~Gm~fpKvj zC129Y-rP9#@v(cs?)3Moq<FO6d|U77RmD2_<bju$dA)c_<+}4$bUwMW(?2uoRYJ}g z*T|Wod+UTFBi|Q&NZ^w@|2)G)N~Vw7#briEclFeB=d@K+X6&r|{BDm$Z0!BZmoK}Q zf9Dqwd9!%IgIb<8Um4q|gL|vXU%vV^^?3hrP2F1lxq2PR$L&}iTv}RYWnKU5(NVEg ztGrI0*LPfRu3;AE%K!P+t^STKBVqaZF2269W!1`_o|+jZQF`(J1RJJJ%Rh1YwENN^ zUCHH(9&uR33hXZ5&wSv<4UOR7;4NEC1LOZ23JR)i%kN*j>laH|_2Tuho}QM{=4_km z>lqmqFV<sqU%lbX3XRSAcXRquD}I<|ZJlLXUG(BbMsmuN_^PU1C(hb#$eD8?;Bn3- z>3K`4|Npc1@%I;&lzggfJadtx+`hNB`M782F29=9+LNv-GS$-H!}U2|?Q5HF?>3*_ z*Y`dnKVQw#Qgm_Q>rI7!&fc0ZVS2#ot314xwW-a`%o4r&=QFqOx*qOYy?WicLoeSf zU;o}bE8G4+(nh8Y#m}>S{HrrEEE<na+P~uNj~|Ogle4!*ZQA^K!%eN7rP&jt&HpV} zw=V5y<T{nEQ)kZFI+T5z9ifvydEP&<cK&eY1!1dCo;maI;o<)$PThKb+up{e>B*Cj zq~yc%wCbD>tGBdCdHVaSsH-<`*}@Yq-{^30_0FqNJy)aNZ1-DlK4Ip}UO(|KDw4fy z?T?pN{?`37``n$k4-#zC&(%CN|5x;Oic{dse+9eMcN9O*my+K9<ju|e@ZHs}flmzh zxvC}}I%KrJG<^NPL+fHWBi6buS+;MX%XdcSi8CdIHnmPxxBnbHebOf@zvY|ee`h*6 z>sQ{sdqm|80Z68q_Q&?~pP%|+#{H#-w`T9xkKOrU;mdpX;?_s4<@;fLH@lLPpa1*s xJv+Vj*}6%5dTXczHJted^V}oFho=5#?7PN%#h88h69xtb22WQ%mvv4FO#oRSGUfmP literal 0 HcmV?d00001 diff --git a/doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8.html b/doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8.html new file mode 100644 index 0000000..3ce54b9 --- /dev/null +++ b/doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8.html @@ -0,0 +1,114 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: cpp Directory Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_df511e5bd85cec96854b39d5e1c27aa8.html">cpp</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">cpp Directory Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="dynheader"> +Directory dependency graph for cpp:</div> +<div class="dyncontent"> +<div class="center"><img src="dir_df511e5bd85cec96854b39d5e1c27aa8_dep.png" border="0" usemap="#dir__df511e5bd85cec96854b39d5e1c27aa8__dep" alt="cpp"/></div> +<map name="dir__df511e5bd85cec96854b39d5e1c27aa8__dep" id="dir__df511e5bd85cec96854b39d5e1c27aa8__dep"> +<area shape="rect" id="node1" href="dir_df511e5bd85cec96854b39d5e1c27aa8.html" title="cpp" alt="" coords="5,5,77,53"/></map> +</div> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a> +Files</h2></td></tr> +<tr class="memitem:CSMOn_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>CSMOn.cpp</b> <a href="CSMOn_8cpp_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:CSMOn_8hpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>CSMOn.hpp</b> <a href="CSMOn_8hpp_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ISearch_8hpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>ISearch.hpp</b> <a href="ISearch_8hpp_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:PSO_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>PSO.cpp</b> <a href="PSO_8cpp_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:PSO_8hpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>PSO.hpp</b> <a href="PSO_8hpp_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8_dep.map b/doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8_dep.map new file mode 100644 index 0000000..19d0c85 --- /dev/null +++ b/doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8_dep.map @@ -0,0 +1,3 @@ +<map id="cpp" name="cpp"> +<area shape="rect" id="node1" href="dir_df511e5bd85cec96854b39d5e1c27aa8.html" title="cpp" alt="" coords="5,5,77,53"/> +</map> diff --git a/doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8_dep.md5 b/doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8_dep.md5 new file mode 100644 index 0000000..d7bea35 --- /dev/null +++ b/doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8_dep.md5 @@ -0,0 +1 @@ +1abb9bb70849c88a46921d6545cf4913 \ No newline at end of file diff --git a/doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8_dep.png b/doc/html/dir_df511e5bd85cec96854b39d5e1c27aa8_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..f570176739c35fab7a756cf4e568f7b04eb7a4dc GIT binary patch literal 759 zcmeAS@N?(olHy`uVBq!ia0y~yU<hVlV6f(3V_;xl7u{ygz`($k<n8Xl@E-&h>|H*Y zfq`j_r;B4q#hkad?LDLuC60fLpS7k;K<S90_l|7kvrpzbZFg9D!M90nX}!R7r72<J zhARV9xExodY-|bA^g1|0U_)lM_(JbCCrvgHCNsIKS3+M+m~i6Y?Ue^r(mS56%vU<k z&ewC^dQZ*Cmj&-5TLhSToc?sZk&RK4nJjQzC1v%$qbE;tF1o1Eb#zhB-z_Yzfe*e` zWwS5xQkp2h@MBf+&75toa-28>SN}|tYGY)uuzFPgDec<zWC_WOKIwnVL1r8=<Sg`Y z0vksR)3Y~Ig3W26_=k!)0V39J?(z?R{4i&5xV||fe|tjmW813g^^T#|29`fXmIkeS z=cBgLP<f)kq?0VyuGuNh{L_?ECjR;JX3^|v)8Z7R{&rlw%75d|pPmAXD;Ip&RvLzf z-BS?YShV^y^Y-6tV&eA~t$!bObXLL#)fhe2yLZhEO-;Ki{=_;POJ>P^jaw3vC$Bd> z=---Ec`H`!PCEN?=c1V74<D{?OEdELn`R|5*TUjQ<i9<8=dRm%_WQTGIln5!`P|c; zjU|^HyRxNy#>~n-pEUNFXZY0A<|$0Sy*}dccl+jb=^M9x<vp0d;OxvVHS46pS2KC( z&&u=9AAY{O*-5eg-@n~6=FM9jVQf($&&<3%P~*wN&vy_1*s;IHdiL3rO(F7Sy+@NS znE3wsC=q*p(Q<dgyY72${{Qy9qUWS!qTL&>m6^%gw#FX)@ZoXs`IM|%Gs>#j#l)1J z&pUZ#i($0jaTQ`BVD3+zjLM&1UEeKEU2^&UdAYFtCUd=(wp`7c`p>W2INoph<uA3L wXR&9!ng5a5)C(N1Da-=X_jY<edM$r4;^gYH=YCr<FfcH9y85}Sb4q9e09Q*`E&u=k literal 0 HcmV?d00001 diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css new file mode 100644 index 0000000..0a8f962 --- /dev/null +++ b/doc/html/doxygen.css @@ -0,0 +1,1440 @@ +/* The standard CSS for doxygen 1.8.7 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px 6px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('ftv2folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('ftv2folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('ftv2doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/doc/html/dynsections.js b/doc/html/dynsections.js new file mode 100644 index 0000000..1e6bf07 --- /dev/null +++ b/doc/html/dynsections.js @@ -0,0 +1,104 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l<level+1) { + i.removeClass('iconfopen iconfclosed').addClass('iconfopen'); + a.html('▼'); + $(this).show(); + } else if (l==level+1) { + i.removeClass('iconfclosed iconfopen').addClass('iconfclosed'); + a.html('►'); + $(this).show(); + } else { + $(this).hide(); + } + }); + updateStripes(); +} + +function toggleFolder(id) +{ + // the clicked row + var currentRow = $('#row_'+id); + + // all rows after the clicked row + var rows = currentRow.nextAll("tr"); + + var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub + + // only match elements AFTER this one (can't hide elements before) + var childRows = rows.filter(function() { return this.id.match(re); }); + + // first row is visible we are HIDING + if (childRows.filter(':first').is(':visible')===true) { + // replace down arrow by right arrow for current row + var currentRowSpans = currentRow.find("span"); + currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); + currentRowSpans.filter(".arrow").html('►'); + rows.filter("[id^=row_"+id+"]").hide(); // hide all children + } else { // we are SHOWING + // replace right arrow by down arrow for current row + var currentRowSpans = currentRow.find("span"); + currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen"); + currentRowSpans.filter(".arrow").html('▼'); + // replace down arrows by right arrows for child rows + var childRowsSpans = childRows.find("span"); + childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); + childRowsSpans.filter(".arrow").html('►'); + childRows.show(); //show all children + } + updateStripes(); +} + + +function toggleInherit(id) +{ + var rows = $('tr.inherit.'+id); + var img = $('tr.inherit_header.'+id+' img'); + var src = $(img).attr('src'); + if (rows.filter(':first').is(':visible')===true) { + rows.css('display','none'); + $(img).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + rows.css('display','table-row'); // using show() causes jump in firefox + $(img).attr('src',src.substring(0,src.length-10)+'open.png'); + } +} + + +$(document).ready(function() { + $('.code,.codeRef').each(function() { + $(this).data('powertip',$('#'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html()); + $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true }); + }); +}); diff --git a/doc/html/files.html b/doc/html/files.html new file mode 100644 index 0000000..cb57622 --- /dev/null +++ b/doc/html/files.html @@ -0,0 +1,107 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: File List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">File List</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory"> +<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">▼</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')"> </span><a class="el" href="dir_df511e5bd85cec96854b39d5e1c27aa8.html" target="_self">cpp</a></td><td class="desc"></td></tr> +<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="CSMOn_8cpp_source.html"><span class="icondoc"></span></a><b>CSMOn.cpp</b></td><td class="desc"></td></tr> +<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="CSMOn_8hpp_source.html"><span class="icondoc"></span></a><b>CSMOn.hpp</b></td><td class="desc"></td></tr> +<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="ISearch_8hpp_source.html"><span class="icondoc"></span></a><b>ISearch.hpp</b></td><td class="desc"></td></tr> +<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="PSO_8cpp_source.html"><span class="icondoc"></span></a><b>PSO.cpp</b></td><td class="desc"></td></tr> +<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="PSO_8hpp_source.html"><span class="icondoc"></span></a><b>PSO.hpp</b></td><td class="desc"></td></tr> +<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">▼</span><span id="img_1_" class="iconfopen" onclick="toggleFolder('1_')"> </span><a class="el" href="dir_7837fde3ab9c1fb2fc5be7b717af8d79.html" target="_self">python</a></td><td class="desc"></td></tr> +<tr id="row_1_0_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="CSMOn__wrapper_8cpp_source.html"><span class="icondoc"></span></a><a class="el" href="CSMOn__wrapper_8cpp.html" target="_self">CSMOn_wrapper.cpp</a></td><td class="desc"></td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/fitnessFunction_8py_source.html b/doc/html/fitnessFunction_8py_source.html new file mode 100644 index 0000000..82a3687 --- /dev/null +++ b/doc/html/fitnessFunction_8py_source.html @@ -0,0 +1,144 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: python/fitnessFunction.py Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn +  <span id="projectnumber">1</span> + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_7837fde3ab9c1fb2fc5be7b717af8d79.html">python</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">fitnessFunction.py</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment"># Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com)</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">#</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"># Permission is hereby granted, free of charge, to any person obtaining a copy</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"># of this software and associated documentation files (the "Software"), to deal</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"># in the Software without restriction, including without limitation the rights</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"># to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"># copies of the Software, and to permit persons to whom the Software is</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"># furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">#</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"># The above copyright notice and this permission notice shall be included in</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"># all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">#</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"># Additionally, if used for any scientific purpose, the following reference</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"># must be cited:</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"># </span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"># Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado.</span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"># 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"># Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017,</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"># pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">#</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"># THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"># OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"># THE SOFTWARE.</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"># fitnessFunction.cpp</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">#</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"># Created on: 02/Jul/2017</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"># Author: Peter Frank Perroni (pfperroni@gmail.com)</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">#</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"># This module defines the fitness function that will be called from CSMOn C++ API.</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">import</span> math</div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"># Fitness Function.</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">def </span>f(x, n):</div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment"># Put your fitness function here.</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  PI = 3.141592653589793238462643383279</div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  s = 0</div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">for</span> i <span class="keywordflow">in</span> range(0, n):</div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  s += x[i]*x[i] - 10 * math.cos(2 * PI * x[i])</div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> 10 * n + s</div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 11:11:46 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/ftv2blank.png b/doc/html/ftv2blank.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq_BR)5S5Qg7NL$jSLJ7 o42L)T2<A`r@2_xB5a3{uV`H7hz__APvKA!g>FVdQ&MBb@0Ppk@y8r+H literal 0 HcmV?d00001 diff --git a/doc/html/ftv2doc.png b/doc/html/ftv2doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=ZVAV_;yoRU6a6z`(T8)5S5Qg7NKKU;p4} ziPrh^ihm{A>qbOr1c<r_nKa2OII@K&l_n(daGIN!Kk;xoCh2_oN@M+@{}1#N%JN$n z1v?xAm_HSE2P|;lUi<qltMCg;3j>~a50+@}UVgXodffY{_m;uoJ7d@^j3pS-JB`&h zF!((>ygX;;j`*bY1q<Fk{e3K~@y<25g$?ZUuPd#&))vu_5_^I50gLhElMFJ4kDRHW zS<yRx!F}HcbE3s<o(BhHmnBcnIHBG;b4J|JT*;XkH_W*b*l&x?T*iHP#et_q4-03r zh)$fdPf;u-G1YtizhhTtSe?<@9DiMQ@}n1xnNs$iEYng20<@eM&FAlb`bAE0=Uu_{ zBD2#)X8GPpuN(h8{_v&9bIR$Ejz6n<R#bfcW;^@mBDGG9RPFnpk7WO4IG*tO;GHDB z$vXrtu!dhRH(0tM>tdDP%r!MD!(AV5Wn7fF-YoiCM4Myw<)2#mb3|8&bvB&rk6gRp zf7qn@<<m+xWgW6J4Cm4kW!+o9eFJ|0t2=*R)&CXxuIbf0^N&AD%<nqb81~Cb`o;d4 zOAG~7guVnV7Yf&z#<1$a3Wu)Kre^yNT)88q+bg(FC->EkbNbI-?3|_`^r^^HbZLlI zutr!Ko5eTF(n-8m7qgeo{`omkn%VZOP4%UPp*?)xi`HwOe465N-c98N<A&D7OfUB* zRQ=n1?$<ZJiCgcilQRf3UR)O+clz_A^?tS;3}po&4>tPDoflHu@h-ct?NY9d{GM}{ z?V~dGM=X9H|L^Y7Xw7EM1ore-hZCix<F9Bvxnh){Zad-Y7PtRKu8$4|{Nnn)dv=cP z1dHx)hO!N+6GA)+Pwux-TJqkVf8VhRk80&(*H$N9@w$4Cxm|pEZg<Oq=N~z|i~m3P z7}mvbW8sGFzK<@+#`W?rha8-yaCdgm())Yae&qi7A3xKcVO98%4d0bZ`571(7(8A5 KT-G@yGywoozFao| literal 0 HcmV?d00001 diff --git a/doc/html/ftv2folderclosed.png b/doc/html/ftv2folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=ZVAV_;yoRU6a6z`&&M>Eakt!T2`T*Z+!x zMBS}lr8g$z6vTdG-mg6SXly{_1Xt&d7|Wl`dnzy9Pq=pE|AWT=2ToRee#E%QSwT&} zw(!CcfnN5-jMK}ap3g1YW}MqN;YM?N**u@$e$Q*~eXqSYcW;!V0E0u`21W({Cw>K7 z43jE8|MTAP@uPG@#ht7v8!U=1GBr$AnA|X@KVDjHPxPU;&z8S;VPH^inkrIRnX3I` z&u?yXWu_v(`8n_ZaAa%o>@&EqCO&0#yvBo%ho^0P@TJO@;bX<uvgO}1R(4kHY?yT; zKv(q1=O?|B&a5i^yGKQScZ|zpFTv#LPA2R59^bvDCuX(ye829+^Y?2dw|4oszTNdt zL3#S`hr8qt2%k^)vu2p!)YV}2{_n>pYv#0mbC`7D>Bj;!>6saJ1(pm;Cd_1Xbv?Ic z#ko@xl@^pPotwwrpc15HU%gYzW`<nr>sHkOzmi8Pog(+QZT$66JI>~%l+tpe1-+|W z3a1oqiCMGy(oB}bX$(CRS33T0;8(h`b-~P6^Irrku4R-^c70GKQ~g`dB2(dA!RA*Q zjxOac%h+96Y+kKNc3mc>!t0T8>WCQ6lwLinn>_A)y37m-Jw8o;_o*-HJYuuNS;lkK zUhA93L!wePX4YEUz4&s!sp`75_x0r#C1MObOZvD9Wu}N(m6rW4n|gQlnoT#$Tp#6C zxA<;%i%8#dCM`<z+T0Zzc6Msb7QTPx{>qI%S6a=^nig63;?8SjV}a-AgBgB=|M>s^ eVv+g}?khiKem3!}T*$z{z~JfX=d#Wzp$P!>ZX#j; literal 0 HcmV?d00001 diff --git a/doc/html/ftv2folderopen.png b/doc/html/ftv2folderopen.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c7f676a3b3ef8c2c307d319dff3c6a604eb227 GIT binary patch literal 597 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=ZVAV_;yoRU6a6z`!Kq>Eakt!T2`TKL2un zz<<lkStgkqWUYGzGBYP{>x}AR=$zQt$$#L0c|y{QD>v87z44Pz$Ky??`WF?k30jRI zTVtC-7P`m<+&W@be!jL-)_S3{wL;?l%X9C~|9$uUyLo%E90eE-to3AL$P4~g+hEDy zG5K<zbdCMngWs8XY~xQI>uOxvwv_QeX{r{3_4-KHC&iIZo;fX=zyIHn>5GeRiZbq% z+IzF7jpyWQ@!2a6L>@0>P*8L~zF(&7O#9A@H`dMK-q6!@#cd};ZK2%KB)-`1O#J3= zw=)=M-b$Ih@Batg7rSZ$(w;277FlgF^Wq_g+F#GUd^EcK=gM@kkH4P!^>{WNJl>rA z{NOIt#cM*lHh6B%l}_IHg>}Z$Jy(v+{d2<Z<&KJfC6>ojwzB=@_J0=Us`WK=%bBL< zBFgiwcT9c%yGYg{M}^@>!2co-hQvh4<I+nxH_c9oT37U9;^RUF&lVPj{5>*1LSp)K zN>*hF7;(tDIabKCm+7+k%$F><-XmMU6>`K=pDSi*ahmwsz1BQgVVNP#FMch_k4r8% z`e)B?>EFB0C&f-V)UarY4S!qWzpHaLO}>Abc}C^r#eB;x`>lH3{nS3tzge!~;{zR6 z?s;jO&0hL3bo3r^UF;oNdnZoFT6)`!yr@N`_eIu*2AfRhy}0Ie(%X4{+w^W_FT0Ty za^%}CRk^LJ9&ygiTpxDi)ZI_ZXY!o*Db27$^XGqe=7yP{*mrqxID{;yn8Luoz~JfX K=d#Wzp$PzT5g5Y& literal 0 HcmV?d00001 diff --git a/doc/html/ftv2lastnode.png b/doc/html/ftv2lastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq_BR)5S5Qg7NL$jSLJ7 o42L)T2<A`r@2_xB5a3{uV`H7hz__APvKA!g>FVdQ&MBb@0Ppk@y8r+H literal 0 HcmV?d00001 diff --git a/doc/html/ftv2link.png b/doc/html/ftv2link.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=ZVAV_;yoRU6a6z`(T8)5S5Qg7NKKU;p4} ziPrh^ihm{A>qbOr1c<r_nKa2OII@K&l_n(daGIN!Kk;xoCh2_oN@M+@{}1#N%JN$n z1v?xAm_HSE2P|;lUi<qltMCg;3j>~a50+@}UVgXodffY{_m;uoJ7d@^j3pS-JB`&h zF!((>ygX;;j`*bY1q<Fk{e3K~@y<25g$?ZUuPd#&))vu_5_^I50gLhElMFJ4kDRHW zS<yRx!F}HcbE3s<o(BhHmnBcnIHBG;b4J|JT*;XkH_W*b*l&x?T*iHP#et_q4-03r zh)$fdPf;u-G1YtizhhTtSe?<@9DiMQ@}n1xnNs$iEYng20<@eM&FAlb`bAE0=Uu_{ zBD2#)X8GPpuN(h8{_v&9bIR$Ejz6n<R#bfcW;^@mBDGG9RPFnpk7WO4IG*tO;GHDB z$vXrtu!dhRH(0tM>tdDP%r!MD!(AV5Wn7fF-YoiCM4Myw<)2#mb3|8&bvB&rk6gRp zf7qn@<<m+xWgW6J4Cm4kW!+o9eFJ|0t2=*R)&CXxuIbf0^N&AD%<nqb81~Cb`o;d4 zOAG~7guVnV7Yf&z#<1$a3Wu)Kre^yNT)88q+bg(FC->EkbNbI-?3|_`^r^^HbZLlI zutr!Ko5eTF(n-8m7qgeo{`omkn%VZOP4%UPp*?)xi`HwOe465N-c98N<A&D7OfUB* zRQ=n1?$<ZJiCgcilQRf3UR)O+clz_A^?tS;3}po&4>tPDoflHu@h-ct?NY9d{GM}{ z?V~dGM=X9H|L^Y7Xw7EM1ore-hZCix<F9Bvxnh){Zad-Y7PtRKu8$4|{Nnn)dv=cP z1dHx)hO!N+6GA)+Pwux-TJqkVf8VhRk80&(*H$N9@w$4Cxm|pEZg<Oq=N~z|i~m3P z7}mvbW8sGFzK<@+#`W?rha8-yaCdgm())Yae&qi7A3xKcVO98%4d0bZ`571(7(8A5 KT-G@yGywoozFao| literal 0 HcmV?d00001 diff --git a/doc/html/ftv2mlastnode.png b/doc/html/ftv2mlastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..0b63f6d38c4b9ec907b820192ebe9724ed6eca22 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq`MKr;B4q1>@Vhihj(F z5=TGEFKK_k5wqa?1D?=ahXjEurkR(76J85s@NhOUGq5u>9t}5-mE%lWepi;Uqf71m z{OS2=-_EA&i>$w5!uw}d@(=FzhI$T(E!{^y{WLCPvfUHg-?n_KaEwzcCzmLr=l*V6 zC-&_#>zx*^v);jxy=5y`_=dB74rP`7XD?ned3^snGwa;g6OSU_JYHVoTgx1K<yM89 zSt3vE7q*n^?KdL-u>M+Mx1^?q-;~e(vK>ne<2)xN=7sOn7cwv~FnGH9xvX<aXaWET CgkQ4& literal 0 HcmV?d00001 diff --git a/doc/html/ftv2mnode.png b/doc/html/ftv2mnode.png new file mode 100644 index 0000000000000000000000000000000000000000..0b63f6d38c4b9ec907b820192ebe9724ed6eca22 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq`MKr;B4q1>@Vhihj(F z5=TGEFKK_k5wqa?1D?=ahXjEurkR(76J85s@NhOUGq5u>9t}5-mE%lWepi;Uqf71m z{OS2=-_EA&i>$w5!uw}d@(=FzhI$T(E!{^y{WLCPvfUHg-?n_KaEwzcCzmLr=l*V6 zC-&_#>zx*^v);jxy=5y`_=dB74rP`7XD?ned3^snGwa;g6OSU_JYHVoTgx1K<yM89 zSt3vE7q*n^?KdL-u>M+Mx1^?q-;~e(vK>ne<2)xN=7sOn7cwv~FnGH9xvX<aXaWET CgkQ4& literal 0 HcmV?d00001 diff --git a/doc/html/ftv2node.png b/doc/html/ftv2node.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq_BR)5S5Qg7NL$jSLJ7 o42L)T2<A`r@2_xB5a3{uV`H7hz__APvKA!g>FVdQ&MBb@0Ppk@y8r+H literal 0 HcmV?d00001 diff --git a/doc/html/ftv2plastnode.png b/doc/html/ftv2plastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ee22f937a07d1dbfc27c669d11f8ed13e2f152 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq`L-r;B4q1>@VfwtS3% zB5wQ>Z?G+OS$!q@2%m^mr`yT^?;Fjw9AOU2uWshOY7y*F@$rm7Z&F@S(dVw}PkZ<8 zo20^d;Cu*UR{+<7Z+jxv_>138F?;of@zV#T4N{wew`}wmUFy`JvG744^GnTH+L4S$ zIyf(_IvsTKf?Ze%3&+Xgj$BKPSIjL>1m`TxZqju)v0V3#%4eP=&P&l5sl5BW3v|Em k$>cEAIRBLX?^wVd<gVUdbarhb0|Nttr>mdKI;Vst0IVihlK=n! literal 0 HcmV?d00001 diff --git a/doc/html/ftv2pnode.png b/doc/html/ftv2pnode.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ee22f937a07d1dbfc27c669d11f8ed13e2f152 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq`L-r;B4q1>@VfwtS3% zB5wQ>Z?G+OS$!q@2%m^mr`yT^?;Fjw9AOU2uWshOY7y*F@$rm7Z&F@S(dVw}PkZ<8 zo20^d;Cu*UR{+<7Z+jxv_>138F?;of@zV#T4N{wew`}wmUFy`JvG744^GnTH+L4S$ zIyf(_IvsTKf?Ze%3&+Xgj$BKPSIjL>1m`TxZqju)v0V3#%4eP=&P&l5sl5BW3v|Em k$>cEAIRBLX?^wVd<gVUdbarhb0|Nttr>mdKI;Vst0IVihlK=n! literal 0 HcmV?d00001 diff --git a/doc/html/ftv2splitbar.png b/doc/html/ftv2splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flU}4~3VqjqK-LYSgfq{|H)5S5Qg7NL$g<j5y z673(KYs}zz-K@Ith6y)!(#8`r&TeZoo>3+rcW~p3*2k<8ET5<Kx%xDJZCyHbGq2A7 zB<r`0&#Mpj>+kt+??7VY)%8z5|0uNDQ@?BH>==GIK88=8LINZs-Am7NcFtb?^;v({ zq8ITc`sa7geZ2VM+sMGMuOD7LdHeYLmg_$w*WCKQb@{T)vd`K3;@>{~dwa2`g9;hw cuXA+R8{0q8EosLX7#J8lUHx3vIVCg!02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/html/ftv2vertline.png b/doc/html/ftv2vertline.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq_BR)5S5Qg7NL$jSLJ7 o42L)T2<A`r@2_xB5a3{uV`H7hz__APvKA!g>FVdQ&MBb@0Ppk@y8r+H literal 0 HcmV?d00001 diff --git a/doc/html/functions.html b/doc/html/functions.html new file mode 100644 index 0000000..40516e7 --- /dev/null +++ b/doc/html/functions.html @@ -0,0 +1,136 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Data Fields</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li class="current"><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="functions.html"><span>All</span></a></li> + <li><a href="functions_func.html"><span>Functions</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> +<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div><ul> +<li>CSMOn() +: <a class="el" href="classCSMOn.html#a9b25325acfda9b579b3a272ed474480e">CSMOn</a> +</li> +<li>getBestPos() +: <a class="el" href="classCSMOn.html#ac5665384c5c4af241bbead4f98fdb3c6">CSMOn</a> +, <a class="el" href="classISearch.html#a9cee257ee19c02341da60440c5cddbd8">ISearch</a> +, <a class="el" href="classPSO.html#a649d2a7b444ac91bfb05d7e9f3c2e20e">PSO</a> +</li> +<li>getFitness() +: <a class="el" href="classCSMOn.html#a4b1a2a4e99746adec24b3cdf683f31c5">CSMOn</a> +, <a class="el" href="classISearch.html#a3504ed6684ca6c82aa79c40b965d5237">ISearch</a> +, <a class="el" href="classPSO.html#a9859c4126970209c8c8f534d4458dbd7">PSO</a> +</li> +<li>getNEvals() +: <a class="el" href="classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593">CSMOn</a> +, <a class="el" href="classISearch.html#a56f6b069cc3dd7f8e3f2ff38bb681639">ISearch</a> +, <a class="el" href="classPSO.html#aa5c58e658a718b2f75b58b51c312f2ba">PSO</a> +</li> +<li>getRandomSeed() +: <a class="el" href="classPSO.html#a0e3ed1fa7e0bb64ca9e6afcdca8d1813">PSO</a> +</li> +<li>next() +: <a class="el" href="classISearch.html#ae3cc643bf0fbe9d9bac1d43642bbb129">ISearch</a> +, <a class="el" href="classPSO.html#a465d956bdb86e93bc06b6fb016feb70c">PSO</a> +</li> +<li>PSO() +: <a class="el" href="classPSO.html#a810105b87e4f6fc026edd6b4ef484953">PSO</a> +</li> +<li>run() +: <a class="el" href="classCSMOn.html#a287ef04ef03f758a2a121057e9798c22">CSMOn</a> +</li> +<li>startup() +: <a class="el" href="classISearch.html#a8eabe4ae3ed69ede2646a536f558f2fe">ISearch</a> +, <a class="el" href="classPSO.html#a4866695395fb314ea732bccde6691ef3">PSO</a> +</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html new file mode 100644 index 0000000..8c37628 --- /dev/null +++ b/doc/html/functions_func.html @@ -0,0 +1,136 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Data Fields - Functions</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li class="current"><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="functions.html"><span>All</span></a></li> + <li class="current"><a href="functions_func.html"><span>Functions</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> + <ul> +<li>CSMOn() +: <a class="el" href="classCSMOn.html#a9b25325acfda9b579b3a272ed474480e">CSMOn</a> +</li> +<li>getBestPos() +: <a class="el" href="classCSMOn.html#ac5665384c5c4af241bbead4f98fdb3c6">CSMOn</a> +, <a class="el" href="classISearch.html#a9cee257ee19c02341da60440c5cddbd8">ISearch</a> +, <a class="el" href="classPSO.html#a649d2a7b444ac91bfb05d7e9f3c2e20e">PSO</a> +</li> +<li>getFitness() +: <a class="el" href="classCSMOn.html#a4b1a2a4e99746adec24b3cdf683f31c5">CSMOn</a> +, <a class="el" href="classISearch.html#a3504ed6684ca6c82aa79c40b965d5237">ISearch</a> +, <a class="el" href="classPSO.html#a9859c4126970209c8c8f534d4458dbd7">PSO</a> +</li> +<li>getNEvals() +: <a class="el" href="classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593">CSMOn</a> +, <a class="el" href="classISearch.html#a56f6b069cc3dd7f8e3f2ff38bb681639">ISearch</a> +, <a class="el" href="classPSO.html#aa5c58e658a718b2f75b58b51c312f2ba">PSO</a> +</li> +<li>getRandomSeed() +: <a class="el" href="classPSO.html#a0e3ed1fa7e0bb64ca9e6afcdca8d1813">PSO</a> +</li> +<li>next() +: <a class="el" href="classISearch.html#ae3cc643bf0fbe9d9bac1d43642bbb129">ISearch</a> +, <a class="el" href="classPSO.html#a465d956bdb86e93bc06b6fb016feb70c">PSO</a> +</li> +<li>PSO() +: <a class="el" href="classPSO.html#a810105b87e4f6fc026edd6b4ef484953">PSO</a> +</li> +<li>run() +: <a class="el" href="classCSMOn.html#a287ef04ef03f758a2a121057e9798c22">CSMOn</a> +</li> +<li>startup() +: <a class="el" href="classISearch.html#a8eabe4ae3ed69ede2646a536f558f2fe">ISearch</a> +, <a class="el" href="classPSO.html#a4866695395fb314ea732bccde6691ef3">PSO</a> +</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/globals.html b/doc/html/globals.html new file mode 100644 index 0000000..c9a911e --- /dev/null +++ b/doc/html/globals.html @@ -0,0 +1,106 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_type.html"><span>Typedefs</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> +<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div><ul> +<li>Param +: <a class="el" href="CSMOn__wrapper_8cpp.html#a376fcabfd8429288efa3398dc2f3e8e1">CSMOn_wrapper.cpp</a> +</li> +<li>search() +: <a class="el" href="CSMOn__wrapper_8cpp.html#a918c532a1803542131c64811335fe6d7">CSMOn_wrapper.cpp</a> +</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html new file mode 100644 index 0000000..5881129 --- /dev/null +++ b/doc/html/globals_func.html @@ -0,0 +1,103 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li class="current"><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_type.html"><span>Typedefs</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> + <ul> +<li>search() +: <a class="el" href="CSMOn__wrapper_8cpp.html#a918c532a1803542131c64811335fe6d7">CSMOn_wrapper.cpp</a> +</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/globals_type.html b/doc/html/globals_type.html new file mode 100644 index 0000000..91d98d4 --- /dev/null +++ b/doc/html/globals_type.html @@ -0,0 +1,103 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> + <ul> +<li>Param +: <a class="el" href="CSMOn__wrapper_8cpp.html#a376fcabfd8429288efa3398dc2f3e8e1">CSMOn_wrapper.cpp</a> +</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/graph_legend.html b/doc/html/graph_legend.html new file mode 100644 index 0000000..33ac78c --- /dev/null +++ b/doc/html/graph_legend.html @@ -0,0 +1,152 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Graph Legend</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Graph Legend</div> </div> +</div><!--header--> +<div class="contents"> +<p>This page explains how to interpret the graphs that are generated by doxygen.</p> +<p>Consider the following example: </p><div class="fragment"><div class="line"><span class="comment">/*! Invisible class because of truncation */</span></div> +<div class="line"><span class="keyword">class </span>Invisible { };</div> +<div class="line"><span class="comment"></span></div> +<div class="line"><span class="comment">/*! Truncated class, inheritance relation is hidden */</span></div> +<div class="line"><span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };</div> +<div class="line"></div> +<div class="line"><span class="comment">/* Class not documented with doxygen comments */</span></div> +<div class="line"><span class="keyword">class </span>Undocumented { };</div> +<div class="line"><span class="comment"></span></div> +<div class="line"><span class="comment">/*! Class that is inherited using public inheritance */</span></div> +<div class="line"><span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };</div> +<div class="line"><span class="comment"></span></div> +<div class="line"><span class="comment">/*! A template class */</span></div> +<div class="line"><span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">class </span>Templ { };</div> +<div class="line"><span class="comment"></span></div> +<div class="line"><span class="comment">/*! Class that is inherited using protected inheritance */</span></div> +<div class="line"><span class="keyword">class </span>ProtectedBase { };</div> +<div class="line"><span class="comment"></span></div> +<div class="line"><span class="comment">/*! Class that is inherited using private inheritance */</span></div> +<div class="line"><span class="keyword">class </span>PrivateBase { };</div> +<div class="line"><span class="comment"></span></div> +<div class="line"><span class="comment">/*! Class that is used by the Inherited class */</span></div> +<div class="line"><span class="keyword">class </span>Used { };</div> +<div class="line"><span class="comment"></span></div> +<div class="line"><span class="comment">/*! Super class that inherits a number of other classes */</span></div> +<div class="line"><span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,</div> +<div class="line"> <span class="keyword">protected</span> ProtectedBase,</div> +<div class="line"> <span class="keyword">private</span> PrivateBase,</div> +<div class="line"> <span class="keyword">public</span> Undocumented,</div> +<div class="line"> <span class="keyword">public</span> Templ<int></div> +<div class="line">{</div> +<div class="line"> <span class="keyword">private</span>:</div> +<div class="line"> Used *m_usedClass;</div> +<div class="line">};</div> +</div><!-- fragment --><p> This will result in the following graph:</p> +<center><div class="image"> +<img src="graph_legend.png" /> +</div> +</center><p>The boxes in the above graph have the following meaning: </p> +<ul> +<li> +A filled gray box represents the struct or class for which the graph is generated. </li> +<li> +A box with a black border denotes a documented struct or class. </li> +<li> +A box with a grey border denotes an undocumented struct or class. </li> +<li> +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li> +</ul> +<p>The arrows have the following meaning: </p> +<ul> +<li> +A dark blue arrow is used to visualize a public inheritance relation between two classes. </li> +<li> +A dark green arrow is used for protected inheritance. </li> +<li> +A dark red arrow is used for private inheritance. </li> +<li> +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li> +<li> +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/graph_legend.md5 b/doc/html/graph_legend.md5 new file mode 100644 index 0000000..a06ed05 --- /dev/null +++ b/doc/html/graph_legend.md5 @@ -0,0 +1 @@ +387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/doc/html/graph_legend.png b/doc/html/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..6c1d0c239cee3d6ab988e201fd3eac718f39467c GIT binary patch literal 19871 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 literal 0 HcmV?d00001 diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html new file mode 100644 index 0000000..886d87a --- /dev/null +++ b/doc/html/hierarchy.html @@ -0,0 +1,108 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Class Hierarchy</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li class="current"><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Class Hierarchy</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"> +<p><a href="inherits.html">Go to the graphical class hierarchy</a></p> +This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory"> +<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct__Param.html" target="_self">_Param</a></td><td class="desc">Contains a parameter received from / sent to the Python caller </td></tr> +<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct__point.html" target="_self">_point</a></td><td class="desc">A point representing the number of evaluations and the respective fitness value </td></tr> +<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classCSMOn.html" target="_self">CSMOn</a></td><td class="desc">Convergence Stabilization Modeling operating in Online Mode ( formely called of C'MOn! ) </td></tr> +<tr id="row_3_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_3_" class="arrow" onclick="toggleFolder('3_')">▼</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classISearch.html" target="_self">ISearch</a></td><td class="desc">The interface that the search methods must to implement </td></tr> +<tr id="row_3_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classPSO.html" target="_self">PSO</a></td><td class="desc">Particle Swarm Optimization </td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 0000000..70afad0 --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,92 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Convergence Stabilization Modeling operating in Online Mode</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li class="current"><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Convergence Stabilization Modeling operating in Online Mode </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>This is an automated method to estimate the best moment to stop swarm iterations based on the analysis of the convergence behavior presented during optimization, aiming to provide an effective balance between saving fitness evaluations and keeping the optimization quality. The convergence analysis is performed through a sequence of linear regressions using exponential and log-like curves.</p> +<dl class="section date"><dt>Date</dt><dd>04/Mar/2017 </dd></dl> +<dl class="section author"><dt>Author</dt><dd>Peter Frank Perroni (<a href="#" onclick="location.href='mai'+'lto:'+'pfp'+'er'+'ron'+'i@'+'gma'+'il'+'.co'+'m'; return false;">pfper<span style="display: none;">.nosp@m.</span>roni<span style="display: none;">.nosp@m.</span>@gmai<span style="display: none;">.nosp@m.</span>l.co<span style="display: none;">.nosp@m.</span>m</a>) </dd></dl> +</div></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/inherit_graph_0.map b/doc/html/inherit_graph_0.map new file mode 100644 index 0000000..e5a597c --- /dev/null +++ b/doc/html/inherit_graph_0.map @@ -0,0 +1,3 @@ +<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy"> +<area shape="rect" id="node1" href="$struct__Param.html" title="Contains a parameter received from / sent to the Python caller. " alt="" coords="5,5,72,32"/> +</map> diff --git a/doc/html/inherit_graph_0.md5 b/doc/html/inherit_graph_0.md5 new file mode 100644 index 0000000..f218d59 --- /dev/null +++ b/doc/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +08d082a6a5f869ea7abc3337bf6242b7 \ No newline at end of file diff --git a/doc/html/inherit_graph_0.png b/doc/html/inherit_graph_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ac7e4195e7f0f53fe475b154423fc08933c20b02 GIT binary patch literal 714 zcmeAS@N?(olHy`uVBq!ia0y~yVDM#NU{K{?VqjqCIP>`e0|NtFlDE4H!+#K5uy^@n z1_q{jPZ!6KjK;S!_GZ5dkZ8XjvtE*`PREH=a4Me_*SmFMx0aePUi1`TcYl8A>QVaz zT4fiGo>|A$6tY}NuW2He64#>=o+BOKN;o>cc1u@piF<6UnjhD<U%l#F=R$*H3z+`> zDQi$J{Ai<p<<ZabpG$7Pbz6M#WXh-LOb($=7dd%(@#XhzvbRPp3`mf8_F^SR@Y*oT zzT2-f4;S7MRF-9#mKv^=HFLiB`Ol9YtrW=OY(7{}UVi;$i3jh$VvoA{`T6<H2N&Fb zKmGL6^XJbe7<d$Xkl&OTe^Yw$$&%VyUWT;ImQ%eVb;MdG#I0BVAy{3!;^)eX84L+# zvl$&01{CbR8y+5>w%JmypV?ve-DMi9B6OnGUh`VI=^g`vh-<2m<n+_2Ml&CMtT3Cs z_4Zq~=7%p|X3lr0=&Z5ZAM~@FVL{yb{^Q9l0lV+kRaAVau#re^5%9gdFkr>?*H4Qq z86^1HZO$_vc>6YYWr!3H+iTuW4R!nF6{q+uXKYA~Y`JjyG&e(!+v2;45^aeR&!TOb z=5cR{T6_KV(@MEy9nYZ6H$_+y?dDHEoyzc_GVWWBiPUYWCye*+-#0vV`DMw|h`fL& zo<((^Z0d`PHwP`r+;ugp^>Cu2z@5DBpH!D$-nrXx`Q?-4xlb$jJ*x6tL|mt(TK4VU zzkj;Q%dcNc3qASvE^bs{ulJjvl4&*fl8J8DqtBm>8G4Q<yYjkN>{xy=!$(D^(c!?$ zl3O`u`|rR1{8PkqLgN*ylAtx~owF+Uh3?@C6xq75&;PgWhNSbt-*2`>)om9)|Jg}* zp7gbaDMpolWKw?q_)%aXbKmRq?98P>6aSmfW84^#6WROA|2yZ>6{&S`Hs`swR@5;T Y7_kbe9iE=Sz`(%Z>FVdQ&MBb@0I}pt$N&HU literal 0 HcmV?d00001 diff --git a/doc/html/inherit_graph_1.map b/doc/html/inherit_graph_1.map new file mode 100644 index 0000000..37e518a --- /dev/null +++ b/doc/html/inherit_graph_1.map @@ -0,0 +1,3 @@ +<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy"> +<area shape="rect" id="node1" href="$struct__point.html" title="A point representing the number of evaluations and the respective fitness value. " alt="" coords="6,5,63,32"/> +</map> diff --git a/doc/html/inherit_graph_1.md5 b/doc/html/inherit_graph_1.md5 new file mode 100644 index 0000000..e1c1285 --- /dev/null +++ b/doc/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +d6c559db45538fd8d980bba8a0ddce13 \ No newline at end of file diff --git a/doc/html/inherit_graph_1.png b/doc/html/inherit_graph_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3ebbfe1c21802a6e68dfa6bbd028994d7ed1009a GIT binary patch literal 722 zcmeAS@N?(olHy`uVBq!ia0y~yU~pw%U{K{?VqjpHExlQVfq{W7$=lt9;Xep2*t>i( z0|QgLr;B4qMC;ob`?FsKh#dESRV=ckZB<}b!jiB20wPvj9_73%nw^ij1_><OA`){n z(CgqkzBUD}ce27F;wP7w$-WX`KYGwfJLBGjqtnB=_dZ*x|6^v+`M(Fh&%RTfw_}FR z=>^JtWx5W@e0ATX_x}93G;6a?wBGb`C054u*Q2$jhAGcjwa;~NVBce=#sg)o3qO4O zcI@*Wul>J%GdL&+BuJ!1uey*Z(Y8n<G$8+H@rTX#W&Y%xNiaBI@J3#DAG3Yh=AX}= zrNyq-=(6Zj*5Ai$Z_y{t)mpmu^wT06Ic5EIGv!moO{ID_Z{9q4vhb{B_V)IS308B} zCVR>ppX-;dH~sgI9}#!+CE7x@MAu)huBnO95o0{?{yTHS*)-?LACFe<;_UD5Kbux; zG*d;0v-{|z^UsZE_NaKS4SW6fudP`3OrK>HHv6oW#;q@wIld`JYwE6DyB<~Ed;HO3 zQp*a5f0I2_ggRZG%)k8pJL7`eZ?(>5ZS|V;q{hx%f~QGA<6zWUw@FKkf;t%veEz&y z=k({FG7P`|{>ys*J!JLO{q9+F?B)91D=qBp<@wqdU(DDTvEy!@s>h@!1r{N`iX2P~ zJ#LHDm`uJc-V@94;%gO)W5n99=7S1di-c+_D+?`TvRK`tvM$^>|MlzF1cQw2x68}R zJ6#TCm;{NqUjFj>^=bu<@87?#dJ=g&$IMxH!N&O&HgY^{`uh5ZAAWfIR+quX#zuhU z;pd-D3j;Jnf|~9>DB7u~r}w7JdJ$9ZYsNz^Dcb`1%lJ<H-2Cpn_FTVwH8<vfKPRed zSXXZUTlQh|{TFA?i+^<xIl6rL^0(eUHRt+0?_TlB=2Y6|Xz{jlFJG?o+W)KWOT9ZJ ePG6iopP!v?C&lA%Cy{}Hfx*+&&t;ucLK6VtQBn2) literal 0 HcmV?d00001 diff --git a/doc/html/inherit_graph_2.map b/doc/html/inherit_graph_2.map new file mode 100644 index 0000000..8482f07 --- /dev/null +++ b/doc/html/inherit_graph_2.map @@ -0,0 +1,3 @@ +<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy"> +<area shape="rect" id="node1" href="$classCSMOn.html" title="Convergence Stabilization Modeling operating in Online Mode ( formely called of C'MOn! )..." alt="" coords="5,5,75,32"/> +</map> diff --git a/doc/html/inherit_graph_2.md5 b/doc/html/inherit_graph_2.md5 new file mode 100644 index 0000000..5a2e2df --- /dev/null +++ b/doc/html/inherit_graph_2.md5 @@ -0,0 +1 @@ +a97c8263277af2285d7c2fef56e480e0 \ No newline at end of file diff --git a/doc/html/inherit_graph_2.png b/doc/html/inherit_graph_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3705b3d6aa696a51c384486ba91d0e6cb81cad6a GIT binary patch literal 1146 zcmeAS@N?(olHy`uVBq!ia0y~yU<hDfU{K{?Vqjp1n)9=Rfq{W7$=lt9;Xep2*t>i( z0|Se`r;B4qM&sL=-X2-e634HfJ2Ztw)x%I=vCioejuDNWoVFrLO;a2+o6~M8oZxEl zP-0ry<|nk!L1{C4OTa@FN9T?cU5nH+n%UB#etMj^mA*lLcI}$t^Cxc`uKOv!_HXU$ zkN;O@*LLf&95(pjcj{Lb^U5$bi@RUnHf-L=fBpJ(t*KgK-L+F^`-kV{t&3ZqZXl8I zL_J~p>C~-JsYa2fdjIN1>P%a=Ze2W+a#U25*TSXywK<xEl<w#8r#D=Vm3&}-`Rv)= z7`=3(nU$55Hgfs7xxBuuhZDC(#fF5qC<sL8T)S~YBI>yUN7BX!&h6!$E=-OWo<3Fm zB+=>8*4DNoMz7Q5(Z`C(lP7<yu(6!{p8ME|95Z#7dsFYf*VoW^@%C-$&Y0uJk6*rg zxx%KdxLEk)w=Z8hTo&!!YdimZ`u5v9WAf_j?I$rYq@<_6fB$}QFe?+I(nJo19Xob3 zB>wpLapKuD?$$%Sy}g?^Z=O1JYFAfRTU%R&&A;gI_goAKX0z+NR2bI;t+cYX-YB>= z>h6sj9a~POY&!kaDY$I++=B@VPIn(o>UC>Qd;aX1iV!E)ny}TZOpIdsGJM7}eVPw` zXm8>CC6gf4yKVF4=H3=3#r4;_w@C81m6vb7|GvJwa`DB8prB8`es#G-MMw9#DRcQO zzL;YceMn<(oW2Ox#D{8=JI|&CYlzJC`yM_2!*T}pW=94G1%V%-?Q7SrJ#@&)M(+NV zD<-C<Pd`>{I6Z&fyh|A-Pr_^K>-|-P{?^$u^_;1xuAXhM@bb$gK`T!btPGLjVdG_E zW_a-KogU`{e)*^qI{EnqD`w4}y*F<C-8^v)md~F*A3b`Mo0~gBto?9lNr}RA%hgv; zJ^%dq^XLDyN7t-bGkv=FlC?oAPo!)LTIpi<rGFN?=bTF-T&-S9=gpau(7b#1ZW}p$ zsa`jwiARsRGC1VszJ2lH#lwdS-4;vA$sH@3b}~h*o3-uX)2FE`L%NQgOfl+pE8cyV zQ+wClcduS$E%9A`nUTTL(o%kFuhz^>SFT+%Gd5;UUe$dvrK+w@O{mj==k(K0ix(@a z@Hqx}dwV;@u3W#KztxGa{czgmt=qRJ2XnP1)zrxRwPR$M=;5;ba_7-U^>5PtKJPy4 z{@sA*u-$xpd;9o>0Ty%5H8(S_4dZ6m5Vh7LY-Px_Y15+CUR%9dd->(a@NjbjgNAn+ zPYPbWeyy#qFW%|G`LVsdebXkRB|3BG&tJc8U6F;1-F*4(qZ{rD-IBj`_$0$&gEt>5 zmIP_e^;4hdVQOmn`t|D!ExG>et+!UK(qd{nkYeQS<~DEMJfWDp{CsAHFI9h|zdtOf zC@9#lY11SRl_HBdot>Q-Ccm~tuWJ0SU&TFVr}y&RMh9N5<0;tn`ZnYK&$G(P%FMpn z1*zu*mRZPH$h=!ETf3~lV$R`*2aKEwp8bFL1)6E=8Jg#?WgI;cJBNXRfx*+&&t;uc GLK6TJ{u`SB literal 0 HcmV?d00001 diff --git a/doc/html/inherit_graph_3.map b/doc/html/inherit_graph_3.map new file mode 100644 index 0000000..39c2cfb --- /dev/null +++ b/doc/html/inherit_graph_3.map @@ -0,0 +1,4 @@ +<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy"> +<area shape="rect" id="node1" href="$classISearch.html" title="The interface that the search methods must to implement. " alt="" coords="5,5,72,32"/> +<area shape="rect" id="node2" href="$classPSO.html" title="Particle Swarm Optimization. " alt="" coords="120,5,171,32"/> +</map> diff --git a/doc/html/inherit_graph_3.md5 b/doc/html/inherit_graph_3.md5 new file mode 100644 index 0000000..d264ef2 --- /dev/null +++ b/doc/html/inherit_graph_3.md5 @@ -0,0 +1 @@ +28d32a0c0c34884e91329c7ce2b3f9ba \ No newline at end of file diff --git a/doc/html/inherit_graph_3.png b/doc/html/inherit_graph_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e9e2908c644985d3f4a001707f7054fca1514260 GIT binary patch literal 1962 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 HB{Ts5ziid~ literal 0 HcmV?d00001 diff --git a/doc/html/inherit_graph_4.map b/doc/html/inherit_graph_4.map new file mode 100644 index 0000000..32e1a13 --- /dev/null +++ b/doc/html/inherit_graph_4.map @@ -0,0 +1,3 @@ +<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy"> +<area shape="rect" id="node1" href="$classCSMOn_1_1ParamArrayType.html" title="CSMOn.ParamArrayType" alt="" coords="5,5,176,32"/> +</map> diff --git a/doc/html/inherit_graph_4.md5 b/doc/html/inherit_graph_4.md5 new file mode 100644 index 0000000..0506c15 --- /dev/null +++ b/doc/html/inherit_graph_4.md5 @@ -0,0 +1 @@ +2b073973e1b02f8c32a00f423afbf89a \ No newline at end of file diff --git a/doc/html/inherit_graph_4.png b/doc/html/inherit_graph_4.png new file mode 100644 index 0000000000000000000000000000000000000000..22b957b64750ba27d663f9bffaf91d6be120407c GIT binary patch literal 2279 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 literal 0 HcmV?d00001 diff --git a/doc/html/inherit_graph_5.map b/doc/html/inherit_graph_5.map new file mode 100644 index 0000000..a9568bc --- /dev/null +++ b/doc/html/inherit_graph_5.map @@ -0,0 +1,3 @@ +<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy"> +<area shape="rect" id="node1" href="$classISearch.html" title="ISearch" alt="" coords="5,5,72,32"/> +</map> diff --git a/doc/html/inherit_graph_5.md5 b/doc/html/inherit_graph_5.md5 new file mode 100644 index 0000000..a3a3565 --- /dev/null +++ b/doc/html/inherit_graph_5.md5 @@ -0,0 +1 @@ +800d65b905e3abe4eea93ef73f1d8914 \ No newline at end of file diff --git a/doc/html/inherit_graph_5.png b/doc/html/inherit_graph_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3df10139acf1bb588eea69e741d2da47c47b89b7 GIT binary patch literal 1014 zcmeAS@N?(olHy`uVBq!ia0y~yVDM#NU{K{?VqjqCIP>`e0|NtFlDE4H!+#K5uy^@n z1_tKUo-U3d8I5me`g&-^N*q7GXJ4e7N|=<Umup}^%g#*UcZ-_BrnWgY>1JI#zD!a} zX^MhQlbEYsl=#GikQ<8@8FUnh8hSZ(SqQNNN~ZP5CqLKY>nMGFXz#hL-%aaRKd($X zSNX5rLY}ADk>jBGgZb;lCa7()Gwy!>==1$2N8W$u=jClZ{BV8HVWsBg=DT<Ac7Eyg z-+ec4YgDLK=&jI=XMX<Nc{AtV74<_oX3GOF#XGJI+rPSI`rnyfXGW&f*73C^%Js7! zT^PV|{9{)amt22%Z0y?Wum2z0I_1vC^FJQ!`K#;Z=BClLDMBY`<&~#Jy?uRlc6NID z`pYeJUoY8}w|)EeUbn?g3kA4Zy_ObbW@eU`PZv#nGilZNLx-FupZxOSLqpKgAkRRN zuH=mpjsi=UE>)V?q0kYb!^W^7YHe?C@6Vq<Q&Urmi;Ec;`j0m!-ne*iqL13<n>kf` z<J2Z|wmPj1`~Bt1l#G&sf`HIaRRNA3x5x82T0L{}^7gH+;b1uMwrp`leSN&r#3#?5 zZQHU%M@Q#J&AubqpFe+&jg76_KVQYO)ydG%P>_dhXG~sw{r|IP&)&Kv#qi+WyK`^L zm>F)}zTMy7&&%c<8!PKMiLZU}%9WhQKe`<6>+4G}$k-Uc!0`S1_x)ijf>wrTU6nqo z`Kv|1h$ngb?ew&?SFc}N%AEW4%WBp2YuE1GySM1ahYtaI)7_N>r=J$(YJK$a$H|kN zv)F&CcnUd11P5>4y0x_}CN@?ziJ{?aTC>2h#~;h@UVdmS!j+qoW5Cn=YW@24moHxy z>SS43Sy_3KyZ!ugXO8l+vRSidKP}qnx7_=iWUt#rf%d~66OX@s{kr^a{pobC-@;Be zZr^@gU=h%j7?GW=eb_)lS5woIgNuc!Z1>z{nOmcL1&$m&+Ilj@Yo3<6Iy-}cSa+?R z{HmC^xO3;usl^>I&=Fm!`BO(j<3iR}TU*=e>gu@l-`~99IbPW7);zDQtjy2PFG$37 zQc866?Ng_`RD?R+7RTsKUzWKyj-R2TuFh}XhV|?7v$9UTEU}t<?%~6SM<yO)TDc~g zL-DWyTl2z&3mcC=o;rPce}DgFlU_O2X2-dH>H-{H-QDbLY;kdM3N78;-L9^#K`XDM z7-gDBP4sBFrYj}H*Ip<i-hH&jE`ISv7N*Ae)=gX9p8s#B^ZxvQ!N~bDU9Y95P5e4D zvgX6wy}NeJs*`>5=xdd>w)Xuglk_iNz8uWg{@L|bL|RUc&P^${&HwF<JJ*~)^Jw>v bKa6Gz@-F_<FkZ&Mz`)??>gTe~DWM4f1AgK4 literal 0 HcmV?d00001 diff --git a/doc/html/inherits.html b/doc/html/inherits.html new file mode 100644 index 0000000..72239eb --- /dev/null +++ b/doc/html/inherits.html @@ -0,0 +1,117 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Class Hierarchy</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li class="current"><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Class Hierarchy</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"> +<p><a href="hierarchy.html">Go to the textual class hierarchy</a></p> +</div><table border="0" cellspacing="10" cellpadding="0"> +<tr><td><img src="inherit_graph_0.png" border="0" alt="" usemap="#__Param"/> +<map name="__Param" id="__Param"> +<area shape="rect" id="node1" href="struct__Param.html" title="Contains a parameter received from / sent to the Python caller. " alt="" coords="5,5,72,32"/></map> +</td></tr> +<tr><td><img src="inherit_graph_1.png" border="0" alt="" usemap="#__point"/> +<map name="__point" id="__point"> +<area shape="rect" id="node1" href="struct__point.html" title="A point representing the number of evaluations and the respective fitness value. " alt="" coords="6,5,63,32"/></map> +</td></tr> +<tr><td><img src="inherit_graph_2.png" border="0" alt="" usemap="#CSMOn"/> +<map name="CSMOn" id="CSMOn"> +<area shape="rect" id="node1" href="classCSMOn.html" title="Convergence Stabilization Modeling operating in Online Mode ( formely called of C'MOn! )..." alt="" coords="5,5,75,32"/></map> +</td></tr> +<tr><td><img src="inherit_graph_3.png" border="0" alt="" usemap="#ISearch"/> +<map name="ISearch" id="ISearch"> +<area shape="rect" id="node1" href="classISearch.html" title="The interface that the search methods must to implement. " alt="" coords="5,5,72,32"/><area shape="rect" id="node2" href="classPSO.html" title="Particle Swarm Optimization. " alt="" coords="120,5,171,32"/></map> +</td></tr> +</table> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/jquery.js b/doc/html/jquery.js new file mode 100644 index 0000000..227e579 --- /dev/null +++ b/doc/html/jquery.js @@ -0,0 +1,39 @@ +/* + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv)) +}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType; +if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false +}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/* + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1 +},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av); +ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length; +if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1) +}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b +})}})(window); +/* + PowerTip - v1.2.0 - 2013-04-03 + http://stevenbenner.github.com/jquery-powertip/ + Copyright (c) 2013 Steven Benner (http://stevenbenner.com/). + Released under MIT license. + https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt +*/ +(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(k){var A=k(document),s=k(window),w=k("body");var n="displayController",e="hasActiveHover",d="forcedOpen",u="hasMouseMove",f="mouseOnToPopup",g="originalTitle",y="powertip",o="powertipjq",l="powertiptarget",E=180/Math.PI;var c={isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var p={none:0,top:1,bottom:2,left:4,right:8};k.fn.powerTip=function(F,N){if(!this.length){return this}if(k.type(F)==="string"&&k.powerTip[F]){return k.powerTip[F].call(this,this,N)}var O=k.extend({},k.fn.powerTip.defaults,F),G=new x(O);h();this.each(function M(){var R=k(this),Q=R.data(y),P=R.data(o),T=R.data(l),S;if(R.data(n)){k.powerTip.destroy(R)}S=R.attr("title");if(!Q&&!T&&!P&&S){R.data(y,S);R.data(g,S);R.removeAttr("title")}R.data(n,new t(R,O,G))});if(!O.manual){this.on({"mouseenter.powertip":function J(P){k.powerTip.show(this,P)},"mouseleave.powertip":function L(){k.powerTip.hide(this)},"focus.powertip":function K(){k.powerTip.show(this)},"blur.powertip":function H(){k.powerTip.hide(this,true)},"keydown.powertip":function I(P){if(P.keyCode===27){k.powerTip.hide(this,true)}}})}return this};k.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false};k.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};k.powerTip={show:function z(F,G){if(G){i(G);c.previousX=G.pageX;c.previousY=G.pageY;k(F).data(n).show()}else{k(F).first().data(n).show(true,true)}return F},reposition:function r(F){k(F).first().data(n).resetPosition();return F},hide:function D(G,F){if(G){k(G).first().data(n).hide(F)}else{if(c.activeHover){c.activeHover.data(n).hide(true)}}return G},destroy:function C(G){k(G).off(".powertip").each(function F(){var I=k(this),H=[g,n,e,d];if(I.data(g)){I.attr("title",I.data(g));H.push(y)}I.removeData(H)});return G}};k.powerTip.showTip=k.powerTip.show;k.powerTip.closeTip=k.powerTip.hide;function b(){var F=this;F.top="auto";F.left="auto";F.right="auto";F.bottom="auto";F.set=function(H,G){if(k.isNumeric(G)){F[H]=Math.round(G)}}}function t(K,N,F){var J=null;function L(P,Q){M();if(!K.data(e)){if(!P){c.tipOpenImminent=true;J=setTimeout(function O(){J=null;I()},N.intentPollInterval)}else{if(Q){K.data(d,true)}F.showTip(K)}}}function G(P){M();c.tipOpenImminent=false;if(K.data(e)){K.data(d,false);if(!P){c.delayInProgress=true;J=setTimeout(function O(){J=null;F.hideTip(K);c.delayInProgress=false},N.closeDelay)}else{F.hideTip(K)}}}function I(){var Q=Math.abs(c.previousX-c.currentX),O=Math.abs(c.previousY-c.currentY),P=Q+O;if(P<N.intentSensitivity){F.showTip(K)}else{c.previousX=c.currentX;c.previousY=c.currentY;L()}}function M(){J=clearTimeout(J);c.delayInProgress=false}function H(){F.resetPosition(K)}this.show=L;this.hide=G;this.cancel=M;this.resetPosition=H}function j(){function G(M,L,J,O,P){var K=L.split("-")[0],N=new b(),I;if(q(M)){I=H(M,K)}else{I=F(M,K)}switch(L){case"n":N.set("left",I.left-(J/2));N.set("bottom",c.windowHeight-I.top+P);break;case"e":N.set("left",I.left+P);N.set("top",I.top-(O/2));break;case"s":N.set("left",I.left-(J/2));N.set("top",I.top+P);break;case"w":N.set("top",I.top-(O/2));N.set("right",c.windowWidth-I.left+P);break;case"nw":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"nw-alt":N.set("left",I.left);N.set("bottom",c.windowHeight-I.top+P);break;case"ne":N.set("left",I.left-20);N.set("bottom",c.windowHeight-I.top+P);break;case"ne-alt":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left);break;case"sw":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"sw-alt":N.set("left",I.left);N.set("top",I.top+P);break;case"se":N.set("left",I.left-20);N.set("top",I.top+P);break;case"se-alt":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left);break}return N}function F(K,J){var O=K.offset(),N=K.outerWidth(),I=K.outerHeight(),M,L;switch(J){case"n":M=O.left+N/2;L=O.top;break;case"e":M=O.left+N;L=O.top+I/2;break;case"s":M=O.left+N/2;L=O.top+I;break;case"w":M=O.left;L=O.top+I/2;break;case"nw":M=O.left;L=O.top;break;case"ne":M=O.left+N;L=O.top;break;case"sw":M=O.left;L=O.top+I;break;case"se":M=O.left+N;L=O.top+I;break}return{top:L,left:M}}function H(O,K){var S=O.closest("svg")[0],N=O[0],W=S.createSVGPoint(),L=N.getBBox(),V=N.getScreenCTM(),M=L.width/2,Q=L.height/2,P=[],I=["nw","n","ne","e","se","s","sw","w"],U,X,R,T;function J(){P.push(W.matrixTransform(V))}W.x=L.x;W.y=L.y;J();W.x+=M;J();W.x+=M;J();W.y+=Q;J();W.y+=Q;J();W.x-=M;J();W.x-=M;J();W.y-=Q;J();if(P[0].y!==P[1].y||P[0].x!==P[7].x){X=Math.atan2(V.b,V.a)*E;R=Math.ceil(((X%360)-22.5)/45);if(R<1){R+=8}while(R--){I.push(I.shift())}}for(T=0;T<P.length;T++){if(I[T]===K){U=P[T];break}}return{top:U.y+c.scrollTop,left:U.x+c.scrollLeft}}this.compute=G}function x(Q){var P=new j(),O=k("#"+Q.popupId);if(O.length===0){O=k("<div/>",{id:Q.popupId});if(w.length===0){w=k("body")}w.append(O)}if(Q.followMouse){if(!O.data(u)){A.on("mousemove",M);s.on("scroll",M);O.data(u,true)}}if(Q.mouseOnToPopup){O.on({mouseenter:function L(){if(O.data(f)){if(c.activeHover){c.activeHover.data(n).cancel()}}},mouseleave:function N(){if(c.activeHover){c.activeHover.data(n).hide()}}})}function I(S){S.data(e,true);O.queue(function R(T){H(S);T()})}function H(S){var U;if(!S.data(e)){return}if(c.isTipOpen){if(!c.isClosing){K(c.activeHover)}O.delay(100).queue(function R(V){H(S);V()});return}S.trigger("powerTipPreRender");U=B(S);if(U){O.empty().append(U)}else{return}S.trigger("powerTipRender");c.activeHover=S;c.isTipOpen=true;O.data(f,Q.mouseOnToPopup);if(!Q.followMouse){G(S);c.isFixedTipOpen=true}else{M()}O.fadeIn(Q.fadeInTime,function T(){if(!c.desyncTimeout){c.desyncTimeout=setInterval(J,500)}S.trigger("powerTipOpen")})}function K(R){c.isClosing=true;c.activeHover=null;c.isTipOpen=false;c.desyncTimeout=clearInterval(c.desyncTimeout);R.data(e,false);R.data(d,false);O.fadeOut(Q.fadeOutTime,function S(){var T=new b();c.isClosing=false;c.isFixedTipOpen=false;O.removeClass();T.set("top",c.currentY+Q.offset);T.set("left",c.currentX+Q.offset);O.css(T);R.trigger("powerTipClose")})}function M(){if(!c.isFixedTipOpen&&(c.isTipOpen||(c.tipOpenImminent&&O.data(u)))){var R=O.outerWidth(),V=O.outerHeight(),U=new b(),S,T;U.set("top",c.currentY+Q.offset);U.set("left",c.currentX+Q.offset);S=m(U,R,V);if(S!==p.none){T=a(S);if(T===1){if(S===p.right){U.set("left",c.windowWidth-R)}else{if(S===p.bottom){U.set("top",c.scrollTop+c.windowHeight-V)}}}else{U.set("left",c.currentX-R-Q.offset);U.set("top",c.currentY-V-Q.offset)}}O.css(U)}}function G(S){var R,T;if(Q.smartPlacement){R=k.fn.powerTip.smartPlacementLists[Q.placement];k.each(R,function(U,W){var V=m(F(S,W),O.outerWidth(),O.outerHeight());T=W;if(V===p.none){return false}})}else{F(S,Q.placement);T=Q.placement}O.addClass(T)}function F(U,T){var R=0,S,W,V=new b();V.set("top",0);V.set("left",0);O.css(V);do{S=O.outerWidth();W=O.outerHeight();V=P.compute(U,T,S,W,Q.offset);O.css(V)}while(++R<=5&&(S!==O.outerWidth()||W!==O.outerHeight()));return V}function J(){var R=false;if(c.isTipOpen&&!c.isClosing&&!c.delayInProgress){if(c.activeHover.data(e)===false||c.activeHover.is(":disabled")){R=true}else{if(!v(c.activeHover)&&!c.activeHover.is(":focus")&&!c.activeHover.data(d)){if(O.data(f)){if(!v(O)){R=true}}else{R=true}}}if(R){K(c.activeHover)}}}this.showTip=I;this.hideTip=K;this.resetPosition=G}function q(F){return window.SVGElement&&F[0] instanceof SVGElement}function h(){if(!c.mouseTrackingActive){c.mouseTrackingActive=true;k(function H(){c.scrollLeft=s.scrollLeft();c.scrollTop=s.scrollTop();c.windowWidth=s.width();c.windowHeight=s.height()});A.on("mousemove",i);s.on({resize:function G(){c.windowWidth=s.width();c.windowHeight=s.height()},scroll:function F(){var I=s.scrollLeft(),J=s.scrollTop();if(I!==c.scrollLeft){c.currentX+=I-c.scrollLeft;c.scrollLeft=I}if(J!==c.scrollTop){c.currentY+=J-c.scrollTop;c.scrollTop=J}}})}}function i(F){c.currentX=F.pageX;c.currentY=F.pageY}function v(F){var H=F.offset(),J=F[0].getBoundingClientRect(),I=J.right-J.left,G=J.bottom-J.top;return c.currentX>=H.left&&c.currentX<=H.left+I&&c.currentY>=H.top&&c.currentY<=H.top+G}function B(I){var G=I.data(y),F=I.data(o),K=I.data(l),H,J;if(G){if(k.isFunction(G)){G=G.call(I[0])}J=G}else{if(F){if(k.isFunction(F)){F=F.call(I[0])}if(F.length>0){J=F.clone(true,true)}}else{if(K){H=k("#"+K);if(H.length>0){J=H.html()}}}}return J}function m(M,L,K){var G=c.scrollTop,J=c.scrollLeft,I=G+c.windowHeight,F=J+c.windowWidth,H=p.none;if(M.top<G||Math.abs(M.bottom-c.windowHeight)-K<G){H|=p.top}if(M.top+K>I||Math.abs(M.bottom-c.windowHeight)>I){H|=p.bottom}if(M.left<J||M.right+L>F){H|=p.left}if(M.left+L>F||M.right<J){H|=p.right}return H}function a(G){var F=0;while(G){G&=G-1;F++}return F}})); diff --git a/doc/html/nav_f.png b/doc/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imV6fm|Vqjp{%*48zfq@~x)5S5Qg7NKLZ@vZv z9@mT0wnwwK{b+Q$n4A6R$RQ6IiRlGJm-py3^?h!7)we`C$Sg`B%#(Gakn4md)2z)c zIU=8D&Cc|kvF6^Z=UxUq7X>fs_x+wdQ&zC_$H&k2_L~(mdq^nUWn}nT$-uzC;OXk; Jvd$@?2>{ARIP(Ai literal 0 HcmV?d00001 diff --git a/doc/html/nav_g.png b/doc/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU|{25V_;xl68K`sz`&s9>Eakt!T9#BAuj_1 z2lGLH5An2?hw;3+c6B?R`YL3e_I+`nnVp?Km|^dqCL2};1_lOCS3j3^P6<r_r(zf( literal 0 HcmV?d00001 diff --git a/doc/html/nav_h.png b/doc/html/nav_h.png new file mode 100644 index 0000000000000000000000000000000000000000..33389b101d9cd9b4c98ad286b5d9c46a6671f650 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imVBq0kVqjp<dFjBwz`&sC>Eakt!T9#BBNu}M zhg0BMX7<gqZqL53sPAF@15E|Z*MAjWCLVopXFubye3tg0oD26sx;$O|T-G@yGywpi C03PH3 literal 0 HcmV?d00001 diff --git a/doc/html/open.png b/doc/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0y~yVBiE{4mJh`h6fYb1Q-|?oIG6|Ln;{G-aW|KV8FwA z;rg1ZGh+@g?rJc$oSvj8zS6R~=7Xo5it>T`TmD+;uQ+m}s#*WMoza2lbLp9(I{Its b_As80;W@%@d2<H?0|SGntDnm{r-UW|dnqY@ literal 0 HcmV?d00001 diff --git a/doc/html/pso__example_8py_source.html b/doc/html/pso__example_8py_source.html new file mode 100644 index 0000000..3d7ef6b --- /dev/null +++ b/doc/html/pso__example_8py_source.html @@ -0,0 +1,155 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: python/pso_example.py Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn +  <span id="projectnumber">1</span> + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_7837fde3ab9c1fb2fc5be7b717af8d79.html">python</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">pso_example.py</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment"># Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com)</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">#</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"># Permission is hereby granted, free of charge, to any person obtaining a copy</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"># of this software and associated documentation files (the "Software"), to deal</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"># in the Software without restriction, including without limitation the rights</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"># to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"># copies of the Software, and to permit persons to whom the Software is</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"># furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">#</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"># The above copyright notice and this permission notice shall be included in</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"># all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">#</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"># Additionally, if used for any scientific purpose, the following reference</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"># must be cited:</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"># </span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"># Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado.</span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"># 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"># Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017,</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"># pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">#</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"># THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"># OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"># THE SOFTWARE.</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"># pso_example.cpp</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">#</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"># Created on: 02/Jul/2017</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"># Author: Peter Frank Perroni (pfperroni@gmail.com)</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">#</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"># This file contains an example of how to call the CSMOn C++ API.</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">from</span> CSMOn <span class="keyword">import</span> *</div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"># Prepare the Input parameters.</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> bestResult=[<a class="code" href="struct__Param.html">Param</a>(<span class="stringliteral">"nEvals"</span>, i=0), <a class="code" href="struct__Param.html">Param</a>(<span class="stringliteral">"fit"</span>, d=0)]</div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> s1=<a class="code" href="struct__Param.html">Param</a>(<span class="stringliteral">"s1"</span>, d=-5.12)</div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> s2=<a class="code" href="struct__Param.html">Param</a>(<span class="stringliteral">"s2"</span>, d=5.12)</div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> w=<a class="code" href="struct__Param.html">Param</a>(<span class="stringliteral">"w"</span>, d=-0.5)</div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> c1=<a class="code" href="struct__Param.html">Param</a>(<span class="stringliteral">"c1"</span>, d=0.2)</div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> c2=<a class="code" href="struct__Param.html">Param</a>(<span class="stringliteral">"c2"</span>, d=0.2)</div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> n=<a class="code" href="struct__Param.html">Param</a>(<span class="stringliteral">"n"</span>, i=100)</div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> p=<a class="code" href="struct__Param.html">Param</a>(<span class="stringliteral">"p"</span>, i=30)</div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> M=<a class="code" href="struct__Param.html">Param</a>(<span class="stringliteral">"M"</span>, i=50000)</div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> R=<a class="code" href="struct__Param.html">Param</a>(<span class="stringliteral">"</span><span class="stringliteral">R", d=-0.08)</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="stringliteral"></span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="stringliteral"></span><span class="comment"># Call CSMOn running a PSO.</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> res=search(<span class="stringliteral">"pso"</span>, [s1, s2, w, c1, c2, n, p, M, R], bestResult)</div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">#Print the results.</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">print</span> <span class="stringliteral">"\nOptimized result: "</span>,res</div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">print</span> <span class="stringliteral">"\nnEvals:"</span>, bestResult[0].i,<span class="stringliteral">", Fitness:"</span>,bestResult[1].d</div> +<div class="ttc" id="struct__Param_html"><div class="ttname"><a href="struct__Param.html">_Param</a></div><div class="ttdoc">Contains a parameter received from / sent to the Python caller. </div><div class="ttdef"><b>Definition:</b> <a href="CSMOn__wrapper_8cpp_source.html#l00047">CSMOn_wrapper.cpp:47</a></div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 11:11:46 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/search/all_0.html b/doc/html/search/all_0.html new file mode 100644 index 0000000..86e6c08 --- /dev/null +++ b/doc/html/search/all_0.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/all_0.js b/doc/html/search/all_0.js new file mode 100644 index 0000000..f58fc38 --- /dev/null +++ b/doc/html/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['_5fparam',['_Param',['../struct__Param.html',1,'']]], + ['_5fpoint',['_point',['../struct__point.html',1,'']]] +]; diff --git a/doc/html/search/all_1.html b/doc/html/search/all_1.html new file mode 100644 index 0000000..122fcbb --- /dev/null +++ b/doc/html/search/all_1.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_1.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/all_1.js b/doc/html/search/all_1.js new file mode 100644 index 0000000..02c1ee5 --- /dev/null +++ b/doc/html/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['csmon',['CSMOn',['../classCSMOn.html',1,'CSMOn'],['../classCSMOn.html#a9b25325acfda9b579b3a272ed474480e',1,'CSMOn::CSMOn()']]], + ['csmon_5fwrapper_2ecpp',['CSMOn_wrapper.cpp',['../CSMOn__wrapper_8cpp.html',1,'']]], + ['convergence_20stabilization_20modeling_20operating_20in_20online_20mode',['Convergence Stabilization Modeling operating in Online Mode',['../index.html',1,'']]] +]; diff --git a/doc/html/search/all_2.html b/doc/html/search/all_2.html new file mode 100644 index 0000000..6850d19 --- /dev/null +++ b/doc/html/search/all_2.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_2.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/all_2.js b/doc/html/search/all_2.js new file mode 100644 index 0000000..dc289c3 --- /dev/null +++ b/doc/html/search/all_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['getbestpos',['getBestPos',['../classCSMOn.html#ac5665384c5c4af241bbead4f98fdb3c6',1,'CSMOn::getBestPos()'],['../classISearch.html#a9cee257ee19c02341da60440c5cddbd8',1,'ISearch::getBestPos()'],['../classPSO.html#a649d2a7b444ac91bfb05d7e9f3c2e20e',1,'PSO::getBestPos()']]], + ['getfitness',['getFitness',['../classCSMOn.html#a4b1a2a4e99746adec24b3cdf683f31c5',1,'CSMOn::getFitness()'],['../classISearch.html#a3504ed6684ca6c82aa79c40b965d5237',1,'ISearch::getFitness()'],['../classPSO.html#a9859c4126970209c8c8f534d4458dbd7',1,'PSO::getFitness()']]], + ['getnevals',['getNEvals',['../classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593',1,'CSMOn::getNEvals()'],['../classISearch.html#a56f6b069cc3dd7f8e3f2ff38bb681639',1,'ISearch::getNEvals()'],['../classPSO.html#aa5c58e658a718b2f75b58b51c312f2ba',1,'PSO::getNEvals()']]], + ['getrandomseed',['getRandomSeed',['../classPSO.html#a0e3ed1fa7e0bb64ca9e6afcdca8d1813',1,'PSO']]] +]; diff --git a/doc/html/search/all_3.html b/doc/html/search/all_3.html new file mode 100644 index 0000000..914288c --- /dev/null +++ b/doc/html/search/all_3.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_3.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/all_3.js b/doc/html/search/all_3.js new file mode 100644 index 0000000..c6e5010 --- /dev/null +++ b/doc/html/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['isearch',['ISearch',['../classISearch.html',1,'']]] +]; diff --git a/doc/html/search/all_4.html b/doc/html/search/all_4.html new file mode 100644 index 0000000..47becb8 --- /dev/null +++ b/doc/html/search/all_4.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_4.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/all_4.js b/doc/html/search/all_4.js new file mode 100644 index 0000000..d884ca3 --- /dev/null +++ b/doc/html/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['next',['next',['../classISearch.html#ae3cc643bf0fbe9d9bac1d43642bbb129',1,'ISearch::next()'],['../classPSO.html#a465d956bdb86e93bc06b6fb016feb70c',1,'PSO::next()']]] +]; diff --git a/doc/html/search/all_5.html b/doc/html/search/all_5.html new file mode 100644 index 0000000..b11c1d1 --- /dev/null +++ b/doc/html/search/all_5.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_5.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/all_5.js b/doc/html/search/all_5.js new file mode 100644 index 0000000..d512dd9 --- /dev/null +++ b/doc/html/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['param',['Param',['../CSMOn__wrapper_8cpp.html#a376fcabfd8429288efa3398dc2f3e8e1',1,'CSMOn_wrapper.cpp']]], + ['pso',['PSO',['../classPSO.html',1,'PSO'],['../classPSO.html#a810105b87e4f6fc026edd6b4ef484953',1,'PSO::PSO()']]] +]; diff --git a/doc/html/search/all_6.html b/doc/html/search/all_6.html new file mode 100644 index 0000000..a57d74f --- /dev/null +++ b/doc/html/search/all_6.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_6.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/all_6.js b/doc/html/search/all_6.js new file mode 100644 index 0000000..2f49c8a --- /dev/null +++ b/doc/html/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['run',['run',['../classCSMOn.html#a287ef04ef03f758a2a121057e9798c22',1,'CSMOn']]] +]; diff --git a/doc/html/search/all_7.html b/doc/html/search/all_7.html new file mode 100644 index 0000000..ecca251 --- /dev/null +++ b/doc/html/search/all_7.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_7.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/all_7.js b/doc/html/search/all_7.js new file mode 100644 index 0000000..754d3fd --- /dev/null +++ b/doc/html/search/all_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['search',['search',['../CSMOn__wrapper_8cpp.html#a918c532a1803542131c64811335fe6d7',1,'CSMOn_wrapper.cpp']]], + ['startup',['startup',['../classISearch.html#a8eabe4ae3ed69ede2646a536f558f2fe',1,'ISearch::startup()'],['../classPSO.html#a4866695395fb314ea732bccde6691ef3',1,'PSO::startup()']]] +]; diff --git a/doc/html/search/all_8.html b/doc/html/search/all_8.html new file mode 100644 index 0000000..f8f8560 --- /dev/null +++ b/doc/html/search/all_8.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_8.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/all_8.js b/doc/html/search/all_8.js new file mode 100644 index 0000000..26d541f --- /dev/null +++ b/doc/html/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['teste',['Teste',['../index.html',1,'']]] +]; diff --git a/doc/html/search/classes_0.html b/doc/html/search/classes_0.html new file mode 100644 index 0000000..d2e0c9a --- /dev/null +++ b/doc/html/search/classes_0.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="classes_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/classes_0.js b/doc/html/search/classes_0.js new file mode 100644 index 0000000..f58fc38 --- /dev/null +++ b/doc/html/search/classes_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['_5fparam',['_Param',['../struct__Param.html',1,'']]], + ['_5fpoint',['_point',['../struct__point.html',1,'']]] +]; diff --git a/doc/html/search/classes_1.html b/doc/html/search/classes_1.html new file mode 100644 index 0000000..b04aca3 --- /dev/null +++ b/doc/html/search/classes_1.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="classes_1.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/classes_1.js b/doc/html/search/classes_1.js new file mode 100644 index 0000000..7de6b5f --- /dev/null +++ b/doc/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['csmon',['CSMOn',['../classCSMOn.html',1,'']]] +]; diff --git a/doc/html/search/classes_2.html b/doc/html/search/classes_2.html new file mode 100644 index 0000000..ef9c9ed --- /dev/null +++ b/doc/html/search/classes_2.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="classes_2.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/classes_2.js b/doc/html/search/classes_2.js new file mode 100644 index 0000000..c6e5010 --- /dev/null +++ b/doc/html/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['isearch',['ISearch',['../classISearch.html',1,'']]] +]; diff --git a/doc/html/search/classes_3.html b/doc/html/search/classes_3.html new file mode 100644 index 0000000..2e68df4 --- /dev/null +++ b/doc/html/search/classes_3.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="classes_3.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/classes_3.js b/doc/html/search/classes_3.js new file mode 100644 index 0000000..57534f6 --- /dev/null +++ b/doc/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pso',['PSO',['../classPSO.html',1,'']]] +]; diff --git a/doc/html/search/close.png b/doc/html/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0y~yVBiK}4mJh`hLvl|)fgBUZg{#lhDb=32JRJdbKton zA<88pBIW$rbWi<q=X5q>jSKh6tCh9xi%p+@`?Q+n!RFfgXE*8G*v9+3QmISnNMVo7 z`H9O`PI%UrIqQr?-;Q<O_xG9cI8RCKT%>Wty6>_6MEw<qoWd?ve74!mqJL|fYiMZ6 z+*BQ<9q*-I?>dy;?;}uqfAPBP=a-GbCOi*zGvsM5p1Q(t@|@$3uW)T!;1YH0m_+$m z$Gs|^Q+^9Y21Z{Jd;3e_PX6`M`PrAX90e9+N`*&ixX;u#IA8tS@w}AI>(}g>b5kXA dR_DdqvvXBW;1hH`#K6G7;OXk;vd$@?2>^;gZ`%L> literal 0 HcmV?d00001 diff --git a/doc/html/search/files_0.html b/doc/html/search/files_0.html new file mode 100644 index 0000000..867c89d --- /dev/null +++ b/doc/html/search/files_0.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/files_0.js b/doc/html/search/files_0.js new file mode 100644 index 0000000..77d62c6 --- /dev/null +++ b/doc/html/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['csmon_5fwrapper_2ecpp',['CSMOn_wrapper.cpp',['../CSMOn__wrapper_8cpp.html',1,'']]] +]; diff --git a/doc/html/search/functions_0.html b/doc/html/search/functions_0.html new file mode 100644 index 0000000..a3f28dc --- /dev/null +++ b/doc/html/search/functions_0.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/functions_0.js b/doc/html/search/functions_0.js new file mode 100644 index 0000000..7d7f00f --- /dev/null +++ b/doc/html/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['csmon',['CSMOn',['../classCSMOn.html#a9b25325acfda9b579b3a272ed474480e',1,'CSMOn']]] +]; diff --git a/doc/html/search/functions_1.html b/doc/html/search/functions_1.html new file mode 100644 index 0000000..abb1f12 --- /dev/null +++ b/doc/html/search/functions_1.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_1.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/functions_1.js b/doc/html/search/functions_1.js new file mode 100644 index 0000000..dc289c3 --- /dev/null +++ b/doc/html/search/functions_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['getbestpos',['getBestPos',['../classCSMOn.html#ac5665384c5c4af241bbead4f98fdb3c6',1,'CSMOn::getBestPos()'],['../classISearch.html#a9cee257ee19c02341da60440c5cddbd8',1,'ISearch::getBestPos()'],['../classPSO.html#a649d2a7b444ac91bfb05d7e9f3c2e20e',1,'PSO::getBestPos()']]], + ['getfitness',['getFitness',['../classCSMOn.html#a4b1a2a4e99746adec24b3cdf683f31c5',1,'CSMOn::getFitness()'],['../classISearch.html#a3504ed6684ca6c82aa79c40b965d5237',1,'ISearch::getFitness()'],['../classPSO.html#a9859c4126970209c8c8f534d4458dbd7',1,'PSO::getFitness()']]], + ['getnevals',['getNEvals',['../classCSMOn.html#af423cda7d5f129d768ec5d4ef6f80593',1,'CSMOn::getNEvals()'],['../classISearch.html#a56f6b069cc3dd7f8e3f2ff38bb681639',1,'ISearch::getNEvals()'],['../classPSO.html#aa5c58e658a718b2f75b58b51c312f2ba',1,'PSO::getNEvals()']]], + ['getrandomseed',['getRandomSeed',['../classPSO.html#a0e3ed1fa7e0bb64ca9e6afcdca8d1813',1,'PSO']]] +]; diff --git a/doc/html/search/functions_2.html b/doc/html/search/functions_2.html new file mode 100644 index 0000000..6cc194a --- /dev/null +++ b/doc/html/search/functions_2.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_2.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/functions_2.js b/doc/html/search/functions_2.js new file mode 100644 index 0000000..d884ca3 --- /dev/null +++ b/doc/html/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['next',['next',['../classISearch.html#ae3cc643bf0fbe9d9bac1d43642bbb129',1,'ISearch::next()'],['../classPSO.html#a465d956bdb86e93bc06b6fb016feb70c',1,'PSO::next()']]] +]; diff --git a/doc/html/search/functions_3.html b/doc/html/search/functions_3.html new file mode 100644 index 0000000..7a96590 --- /dev/null +++ b/doc/html/search/functions_3.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_3.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/functions_3.js b/doc/html/search/functions_3.js new file mode 100644 index 0000000..e239409 --- /dev/null +++ b/doc/html/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pso',['PSO',['../classPSO.html#a810105b87e4f6fc026edd6b4ef484953',1,'PSO']]] +]; diff --git a/doc/html/search/functions_4.html b/doc/html/search/functions_4.html new file mode 100644 index 0000000..7c0a295 --- /dev/null +++ b/doc/html/search/functions_4.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_4.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/functions_4.js b/doc/html/search/functions_4.js new file mode 100644 index 0000000..2f49c8a --- /dev/null +++ b/doc/html/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['run',['run',['../classCSMOn.html#a287ef04ef03f758a2a121057e9798c22',1,'CSMOn']]] +]; diff --git a/doc/html/search/functions_5.html b/doc/html/search/functions_5.html new file mode 100644 index 0000000..6a71f6c --- /dev/null +++ b/doc/html/search/functions_5.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_5.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/functions_5.js b/doc/html/search/functions_5.js new file mode 100644 index 0000000..754d3fd --- /dev/null +++ b/doc/html/search/functions_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['search',['search',['../CSMOn__wrapper_8cpp.html#a918c532a1803542131c64811335fe6d7',1,'CSMOn_wrapper.cpp']]], + ['startup',['startup',['../classISearch.html#a8eabe4ae3ed69ede2646a536f558f2fe',1,'ISearch::startup()'],['../classPSO.html#a4866695395fb314ea732bccde6691ef3',1,'PSO::startup()']]] +]; diff --git a/doc/html/search/mag_sel.png b/doc/html/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmeAS@N?(olHy`uVBq!ia0y~yU=U$oU=ZeDV_;yI(4)JRfq{Xuz$3Dlfq`2Xgc%uT z&5>YWU{FZ*2=ZlM$eqE!P~6AB@W6tBq3J3ELlrv%!>KI{48|@D3^HXcW?Fk07#MeY zx;TbZ+<G!)cbAf*NZbBfVpamXnDr}|0|kAqI9xF|Ff@3{{y|ivM$XXOSg`nIm`jV< zONW3Eks}9I<OXC-lD#>1W+|^)#0~pZkN$kUYB?uZb;*>P<#iv<{`%gy@B7i8HPa@a zY<XIAGHtWsOrJ^TpRWwjVqs$Zs1@L$X*t)g$Uq_?@|wEy)~KZyGX!|pj-HnETOO=) zT4}0Rpw`qADMo9;w9__APCnV<q2jbRu6}RI?QM)2(@%$JiJJHdFAVU|>N-@l_t>`F zS6{6bU-bC)`|t6@!v-s^W<3fH-gaA;;b@Ye?`4*TWtoctG(Kd@2(%^IBsBckbh^`p ziQ#x5!#(xbe|PL3$uD@+pFH{WQwE9t<1?0ZzTS1o#P`@^Lxz_nQVmgSzctvs{ZzGg z+Tn*2e%Ab3swu;F`DMw4(pZKbx5fS9fB3%G_`fT&7VBp1d%WTP`_AK!mt4-wx&5rf zO0d^0bNg-n7ngY$ZO%_#_xe$#-1ghN^Ut?0(umO$ui7hj{PDyH9k<n2tGH_Sh=hi= zu39ypr*40|*=*lkclEBnp8EQ0*SgpB=ReGhxjwc1aO3a4erB_4*FO3G{CAZ!L*$BG W8K?Y@E@xn1VDNPHb6Mw<&;$UMruU8j literal 0 HcmV?d00001 diff --git a/doc/html/search/nomatches.html b/doc/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/doc/html/search/nomatches.html @@ -0,0 +1,12 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="NoMatches">No Matches</div> +</div> +</body> +</html> diff --git a/doc/html/search/pages_0.html b/doc/html/search/pages_0.html new file mode 100644 index 0000000..8ce1299 --- /dev/null +++ b/doc/html/search/pages_0.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="pages_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/pages_0.js b/doc/html/search/pages_0.js new file mode 100644 index 0000000..48a1ace --- /dev/null +++ b/doc/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['convergence_20stabilization_20modeling_20operating_20in_20online_20mode',['Convergence Stabilization Modeling operating in Online Mode',['../index.html',1,'']]] +]; diff --git a/doc/html/search/search.css b/doc/html/search/search.css new file mode 100644 index 0000000..4d7612f --- /dev/null +++ b/doc/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:111px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/html/search/search.js b/doc/html/search/search.js new file mode 100644 index 0000000..19cfcd6 --- /dev/null +++ b/doc/html/search/search.js @@ -0,0 +1,803 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "_cginprs", + 1: "_cip", + 2: "c", + 3: "cgnprs", + 4: "p", + 5: "c" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "files", + 3: "functions", + 4: "typedefs", + 5: "pages" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i<search.length;i++) + { + var c = search.charAt(i); + var cn = c.charCodeAt(0); + if (c.match(/[a-z0-9\u0080-\uFFFF]/)) + { + result+=c; + } + else if (cn<16) + { + result+="_0"+cn.toString(16); + } + else + { + result+="_"+cn.toString(16); + } + } + return result; +} + +function getXPos(item) +{ + var x = 0; + if (item.offsetWidth) + { + while (item && item!=document.body) + { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; +} + +function getYPos(item) +{ + var y = 0; + if (item.offsetWidth) + { + while (item && item!=document.body) + { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; +} + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, inFrame, label) +{ + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.insideFrame = inFrame; + this.searchLabel = label; + + // ----------- DOM Elements + + this.DOMSearchField = function() + { return document.getElementById("MSearchField"); } + + this.DOMSearchSelect = function() + { return document.getElementById("MSearchSelect"); } + + this.DOMSearchSelectWindow = function() + { return document.getElementById("MSearchSelectWindow"); } + + this.DOMPopupSearchResults = function() + { return document.getElementById("MSearchResults"); } + + this.DOMPopupSearchResultsWindow = function() + { return document.getElementById("MSearchResultsWindow"); } + + this.DOMSearchClose = function() + { return document.getElementById("MSearchClose"); } + + this.DOMSearchBox = function() + { return document.getElementById("MSearchBox"); } + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) + { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() + { + var searchSelectWindow = this.DOMSearchSelectWindow(); + var searchField = this.DOMSearchSelect(); + + if (this.insideFrame) + { + var left = getXPos(searchField); + var top = getYPos(searchField); + left += searchField.offsetWidth + 6; + top += searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + left -= searchSelectWindow.offsetWidth; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + } + else + { + var left = getXPos(searchField); + var top = getYPos(searchField); + top += searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + } + + // stop selection hide timer + if (this.hideTimeout) + { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() + { + this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()", + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) + { + if (this.keyTimeout) // kill running timer + { + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) + { + if (e.shiftKey==1) + { + this.OnSearchSelectShow(); + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + child.focus(); + return; + } + } + return; + } + else if (window.frames.MSearchResults.searchResults) + { + var elem = window.frames.MSearchResults.searchResults.NavNext(0); + if (elem) elem.focus(); + } + } + else if (e.keyCode==27) // Escape out of the search field + { + this.DOMSearchField().blur(); + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.lastSearchValue = ''; + this.Activate(false); + return; + } + + // strip whitespaces + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != this.lastSearchValue) // search value has changed + { + if (searchValue != "") // non-empty search + { + // set timer for search update + this.keyTimeout = setTimeout(this.name + '.Search()', + this.keyTimeoutLength); + } + else // empty search field + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.lastSearchValue = ''; + } + } + } + + this.SelectItemCount = function(id) + { + var count=0; + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + count++; + } + } + return count; + } + + this.SelectItemSet = function(id) + { + var i,j=0; + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + var node = child.firstChild; + if (j==id) + { + node.innerHTML='•'; + } + else + { + node.innerHTML=' '; + } + j++; + } + } + } + + // Called when an search filter selection is made. + // set item with index id as the active item + this.OnSelectItem = function(id) + { + this.searchIndex = id; + this.SelectItemSet(id); + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + if (searchValue!="" && this.searchActive) // something was found -> do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down + { + this.searchIndex++; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==38 && this.searchIndex>0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of <Search()>. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e<searchData.length; e++) + { + var id = searchData[e][0]; + var srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + var srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + var srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+e); + setKeyActions(srLink,'return searchResults.Nav(event,'+e+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = searchData[e][1][0]; + srEntry.appendChild(srLink); + if (searchData[e][1].length==2) // single result + { + srLink.setAttribute('href',searchData[e][1][1][0]); + if (searchData[e][1][1][1]) + { + srLink.setAttribute('target','_parent'); + } + var srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = searchData[e][1][1][2]; + srEntry.appendChild(srScope); + } + else // multiple results + { + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + var srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (var c=0; c<searchData[e][1].length-1; c++) + { + var srChild = document.createElement('a'); + srChild.setAttribute('id','Item'+e+'_c'+c); + setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')'); + setClassAttr(srChild,'SRScope'); + srChild.setAttribute('href',searchData[e][1][c+1][0]); + if (searchData[e][1][c+1][1]) + { + srChild.setAttribute('target','_parent'); + } + srChild.innerHTML = searchData[e][1][c+1][2]; + srChildren.appendChild(srChild); + } + srEntry.appendChild(srChildren); + } + srResult.appendChild(srEntry); + results.appendChild(srResult); + } +} + diff --git a/doc/html/search/search_l.png b/doc/html/search/search_l.png new file mode 100644 index 0000000000000000000000000000000000000000..c872f4da4a01d0754f923e6c94fd8159c0621bd1 GIT binary patch literal 604 zcmeAS@N?(olHy`uVBq!ia0y~yU=U$oU=ZeDV_;yI(4)JRfq{Xuz$3Dlfq`2Xgc%uT z&5>YWU{FZ*2=ZlM$eqE!P~6AB@W6tBq3J3ELlrv%!>KI{48|@D3^HXcW?Fk07#JUU zx;TbZ+*%W2yZTmuMBTZQmWIB691Pq<-UPUa>(AXKdh6msy}Q;TUJL7&mF#u?-}0BW z>DJO_**jew3tXCyX{?p^yr<V&k-y#~WB%Jc1#<KHzstC}Sh%jgp1dvhdG77JUF&}5 zZN7OYXZvlI=Q2Hpf4Fs&-jwY=^Lfvi43nz2yWX|um{m_c{nW*3ZrifV01;KY#O0S0 zKmYu5vchKH)zZI}OM?WLWhzbea=dK9p?E-|+f{=hVQbV<^~oofCvE((DQd0K{PTwm zcsw)@TDr&VW>C2G)@;7t^7THKYXa9_PmB~RiEW=EG~Gc*jC*p&y=z&fcQ@%sv@t5O z=&^pcSs$r4eZK1{i|0GoY&e?S76w$5tlgx%aLT7lwaE_y)4qSd^!+cp{=C`6p`n{6 zh8~kRWUxp2ljPOs&tkkR*$QI1cf2mVW+Yhp?f2h{udXf?xVZgmm268QhtjTj0fAH2 z_dWh|=WW>!`3IdYkB%4Z{PWI&ujame)c*TrIfvX9f7Iq^y8W==g^n0Eiz9>5t{pP} z(pmRa%==zxAkmY)S<+Q?Zm_3|g$$pC?&ov)%n6z;KVDSMyZ!$A{pnsyk6#Q92^9@G zwO@o=QLd+bu3XgGX$%4Ci_BN8GUGk0p*GobVdktumi<!?zGq}GeR?(S!dsrd3=9km Mp00i_>zopr04E;^4gdfE literal 0 HcmV?d00001 diff --git a/doc/html/search/search_m.png b/doc/html/search/search_m.png new file mode 100644 index 0000000000000000000000000000000000000000..b429a16ba641960da1e52e5da85dc80fd82635c8 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ckU=Zd2k*0Cpz6=ZuEa{HEjtmUfZd~z?Fk)a} zkSuYHC<)F_D=AMbN@Z|N$xljE@XSq2PYp^<OsOn9nQFtpz+m9%;uunKD@jLRKRqEK z!KUtyMaQonAC)_P{r_)2At{N0IVwO$KsqAt?k?6P3`{%>OWFBt>K?i-XJBAp@O1Ta JS?83{1OS@7FGc_W literal 0 HcmV?d00001 diff --git a/doc/html/search/search_r.png b/doc/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmeAS@N?(olHy`uVBq!ia0y~yU=U(pU=ZeDV_;yIJ1O=P0|NtRfk$L90|U1(2s1Lw znj^u$z@U)q5#-CjkUN8cp}3EM;eiDML(^3ThAMUjhErP@7>r#Q7-Y&?%(V70FfhLI zba4!+xV7ZU{#8<rB5WV>zs=vomAy2qdLnKjHCBRvI!?(cCvqrJpudOF7vL7ku& zCzXUQ6HTW8N5uuxuZC{k{ch8_cV|2&Y8>Kywrcs@!~MlGezuib$sXzya#HzOQx~Np zW<SkqY24PRzd?G_|GF(!?E8Hq!N7tuHL^{`Q-G!MgH8VCn>lq6(@LXPU%h8C`)oY> ziSK_WPnhzlp*6ANX_4pSj}gZT{~X-*_Icmq7KQ^$rl>0_HBAu;@>-JFrO~w^LdQUc zul4n=_t{%-`L4d&WpeC>CVP*eMi-M()4JCNJj^>|_}UUz1f5#``RAYX{rBsaK4?5D z!JN!9YuUm8jRip~7sRd4W{6vJ{k1!PTc2ZSXyPn2t*Kl&x3@JZRFs)*IsR>O=;~0l zmWnkp@t=1teQl+4x@q0(-ONieZ`};m>|(lXGBZ))ba$Bbv44JL<)SVw59V+y{aO{% z?4c>x_OPvEU%ctXyzR};D{VtVYcH^>E>$^a>8m!`b^GmFCzk-dNKcN&uT^t>mR~M+ z>d0qU@RonGj`fq5@jsP+P0l@M8Mb<=1Yi67CWVT-dD|~nzf@mT%^|4h8(eTs@c71( z*z5DprrDnR>3zKL9pC!`6RC&w{{ttf+{oLWDB?Qb@_D{w^7g*RF2`&4vopk(yY(38 T+?dP2z`)??>gTe~DWM4f%J>KN literal 0 HcmV?d00001 diff --git a/doc/html/search/typedefs_0.html b/doc/html/search/typedefs_0.html new file mode 100644 index 0000000..5f65d74 --- /dev/null +++ b/doc/html/search/typedefs_0.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="typedefs_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/doc/html/search/typedefs_0.js b/doc/html/search/typedefs_0.js new file mode 100644 index 0000000..74379b3 --- /dev/null +++ b/doc/html/search/typedefs_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['param',['Param',['../CSMOn__wrapper_8cpp.html#a376fcabfd8429288efa3398dc2f3e8e1',1,'CSMOn_wrapper.cpp']]] +]; diff --git a/doc/html/struct__Param-members.html b/doc/html/struct__Param-members.html new file mode 100644 index 0000000..d4e50cd --- /dev/null +++ b/doc/html/struct__Param-members.html @@ -0,0 +1,107 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn +  <span id="projectnumber">1</span> + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">_Param Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="struct__Param.html">_Param</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>c</b> (defined in <a class="el" href="struct__Param.html">_Param</a>)</td><td class="entry"><a class="el" href="struct__Param.html">_Param</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>d</b> (defined in <a class="el" href="struct__Param.html">_Param</a>)</td><td class="entry"><a class="el" href="struct__Param.html">_Param</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>f</b> (defined in <a class="el" href="struct__Param.html">_Param</a>)</td><td class="entry"><a class="el" href="struct__Param.html">_Param</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>i</b> (defined in <a class="el" href="struct__Param.html">_Param</a>)</td><td class="entry"><a class="el" href="struct__Param.html">_Param</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>l</b> (defined in <a class="el" href="struct__Param.html">_Param</a>)</td><td class="entry"><a class="el" href="struct__Param.html">_Param</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="struct__Param.html">_Param</a>)</td><td class="entry"><a class="el" href="struct__Param.html">_Param</a></td><td class="entry"></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 11:54:05 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/struct__Param.html b/doc/html/struct__Param.html new file mode 100644 index 0000000..64ef722 --- /dev/null +++ b/doc/html/struct__Param.html @@ -0,0 +1,131 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: _Param Struct Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-attribs">Data Fields</a> </div> + <div class="headertitle"> +<div class="title">_Param Struct Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p>Contains a parameter received from / sent to the Python caller. + <a href="struct__Param.html#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> +Data Fields</h2></td></tr> +<tr class="memitem:ac547bee005d20081bcac4b2e347011f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac547bee005d20081bcac4b2e347011f1"></a> +char * </td><td class="memItemRight" valign="bottom"><b>name</b></td></tr> +<tr class="separator:ac547bee005d20081bcac4b2e347011f1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aff85041148fac4f0a6a066dcf291f301"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff85041148fac4f0a6a066dcf291f301"></a> +char </td><td class="memItemRight" valign="bottom"><b>c</b></td></tr> +<tr class="separator:aff85041148fac4f0a6a066dcf291f301"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5b019b7151eaacdeb2e5ddfd31ac96fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b019b7151eaacdeb2e5ddfd31ac96fa"></a> +int </td><td class="memItemRight" valign="bottom"><b>i</b></td></tr> +<tr class="separator:a5b019b7151eaacdeb2e5ddfd31ac96fa"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a634a0fb95ba41349d69f4b5095531ddf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a634a0fb95ba41349d69f4b5095531ddf"></a> +long </td><td class="memItemRight" valign="bottom"><b>l</b></td></tr> +<tr class="separator:a634a0fb95ba41349d69f4b5095531ddf"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a56df5e8e86e4f51c7f3031731951d1e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56df5e8e86e4f51c7f3031731951d1e9"></a> +float </td><td class="memItemRight" valign="bottom"><b>f</b></td></tr> +<tr class="separator:a56df5e8e86e4f51c7f3031731951d1e9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a8cfc8683385e1ecbd2daedd1a05eb787"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8cfc8683385e1ecbd2daedd1a05eb787"></a> +double </td><td class="memItemRight" valign="bottom"><b>d</b></td></tr> +<tr class="separator:a8cfc8683385e1ecbd2daedd1a05eb787"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><p>Contains a parameter received from / sent to the Python caller. </p> + +<p>Definition at line <a class="el" href="CSMOn__wrapper_8cpp_source.html#l00049">49</a> of file <a class="el" href="CSMOn__wrapper_8cpp_source.html">CSMOn_wrapper.cpp</a>.</p> +</div><hr/>The documentation for this struct was generated from the following file:<ul> +<li>python/<a class="el" href="CSMOn__wrapper_8cpp_source.html">CSMOn_wrapper.cpp</a></li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/struct__point-members.html b/doc/html/struct__point-members.html new file mode 100644 index 0000000..c775d93 --- /dev/null +++ b/doc/html/struct__point-members.html @@ -0,0 +1,104 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn +  <span id="projectnumber">1</span> + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">_point Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="struct__point.html">_point</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_point</b>(int _x, int _y) (defined in <a class="el" href="struct__point.html">_point</a>)</td><td class="entry"><a class="el" href="struct__point.html">_point</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>x</b> (defined in <a class="el" href="struct__point.html">_point</a>)</td><td class="entry"><a class="el" href="struct__point.html">_point</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>y</b> (defined in <a class="el" href="struct__point.html">_point</a>)</td><td class="entry"><a class="el" href="struct__point.html">_point</a></td><td class="entry"></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 11:54:05 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/struct__point.html b/doc/html/struct__point.html new file mode 100644 index 0000000..99a03d4 --- /dev/null +++ b/doc/html/struct__point.html @@ -0,0 +1,130 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.7"/> +<title>CSMOn: _point Struct Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td style="padding-left: 0.5em;"> + <div id="projectname">CSMOn + </div> + <div id="projectbrief">Convergence Stabilization Modeling operating in Online mode</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.7 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="#pub-attribs">Data Fields</a> </div> + <div class="headertitle"> +<div class="title">_point Struct Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p>A point representing the number of evaluations and the respective fitness value. + <a href="struct__point.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="CSMOn_8hpp_source.html">CSMOn.hpp</a>></code></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:a57c9fc97f1ffeabe2bea2d95439b426e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57c9fc97f1ffeabe2bea2d95439b426e"></a> + </td><td class="memItemRight" valign="bottom"><b>_point</b> (int _x, int _y)</td></tr> +<tr class="separator:a57c9fc97f1ffeabe2bea2d95439b426e"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> +Data Fields</h2></td></tr> +<tr class="memitem:aab3e88bcfd12e8f43ff8b95a9a5b62c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab3e88bcfd12e8f43ff8b95a9a5b62c4"></a> +int </td><td class="memItemRight" valign="bottom"><b>x</b></td></tr> +<tr class="separator:aab3e88bcfd12e8f43ff8b95a9a5b62c4"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad466443e70f7ff7bcb1d2f8fda2c7168"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad466443e70f7ff7bcb1d2f8fda2c7168"></a> +double </td><td class="memItemRight" valign="bottom"><b>y</b></td></tr> +<tr class="separator:ad466443e70f7ff7bcb1d2f8fda2c7168"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><p>A point representing the number of evaluations and the respective fitness value. </p> +<dl class="section date"><dt>Date</dt><dd>04/Mar/2017 </dd></dl> +<dl class="section author"><dt>Author</dt><dd>Peter Frank Perroni (<a href="#" onclick="location.href='mai'+'lto:'+'pfp'+'er'+'ron'+'i@'+'gma'+'il'+'.co'+'m'; return false;">pfper<span style="display: none;">.nosp@m.</span>roni<span style="display: none;">.nosp@m.</span>@gmai<span style="display: none;">.nosp@m.</span>l.co<span style="display: none;">.nosp@m.</span>m</a>) </dd></dl> + +<p>Definition at line <a class="el" href="CSMOn_8hpp_source.html#l00060">60</a> of file <a class="el" href="CSMOn_8hpp_source.html">CSMOn.hpp</a>.</p> +</div><hr/>The documentation for this struct was generated from the following file:<ul> +<li>cpp/<a class="el" href="CSMOn_8hpp_source.html">CSMOn.hpp</a></li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Jul 3 2017 13:53:13 for CSMOn by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.7 +</small></address> +</body> +</html> diff --git a/doc/html/sync_off.png b/doc/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuL8WjtLRLn;{G-u2E1370tV z@&6M;Pc`G27QV|oXU%N$WH-Jg(YrE9g*Ew%0-L8{nBhi2U5ya&ZyPsW(9>e&EKzLo zj$V4CcWDQI%Ze>&ixYA*e&noFikz~<>{$AlkYBaii__oT*~z&vrP{*&*_pXJzgs`Q z^M20e(zmzj<r1tEH@dA6>0RXXq|5&31_=@IBe@Lfl?;5Rj@n(Eo5L&_x_<B6KYu%4 zh{t!^H}t#`Sr98DCfE?EAtvAD_i>{|+FwKV4cFufe~HTF>83tf@uOrHL++y!JeS!F zq-&FA|5V++a_jY;b++@_4cNDAw(l}5W|`k@&@gwsh5Uhu*73qz3f<u~sxeXvq9hJ) z5Sz|z_o8EOPTmTp0+E$^iN~wCHA}47ZYd;5Ddf$cCA5BaznSTVMGK9dAH8DF&^OP{ z|H76BrQh;$mn=HNoN#?DW7L}PEay7AiPB=%_OTggKjf0Hu9jNapLSRHI)m@C?az)* zeRFfqj0A<dvsFtS&9>}4dhFYZgF3O<i;jfvnJHJgarWHU?hf<i>oY%PG%VP*ZOz>C z*Gdh!az0D)PQSFx#^<%QVwRS7(DiVA?u!z}dA?Kc$cWEfopp2T#(#}JH<>o<@#FZx z&6sxO``ysTm#u^ttmhxM&AhAi@6tjUE4wqhrb$`dI~#K(`SJOR9~nWLPQ7RkEK%8i zUw-)th5l6w(o%N)u`zM_e=~Y&n%s^Qb6dS$-<Ov9(_gMS{Q9T<e}A4ki4Q*2Ht0;u zvY-D|&-B);T>Clyd*`p~i}-J}MtMgHZ^7GV8jI`glW+fG-J`g7cB0|Zd(-<q-B>Ao zXP-G=$`x;`rk|H2gd{uPXr3}|x+6RD!I=lK4LTb=8n$X@|M>Q#RL-V`FJZe6bB43| z&MR!GXSwEIpDQtcM#&w9Zm!QBDse`t3^{tQ5>weOJo)Q7h3QPA_(|59qj%oC>%7ZQ z{Dix9$6uG<aT!%F>-av@%ZjiE&0cnR;r`ef<v$GT9mKCszt$ejFO$7<noSMUEDgTn zS`Bx1rW`NvWqfIM_v4S%H*{Vd{k<r5iaNg#?~jPf@#1-(79Oi%zVVk^KY4lDJh4aq Q3=9kmp00i_>zopr0A%8e#{d8T literal 0 HcmV?d00001 diff --git a/doc/html/sync_on.png b/doc/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuL8MLb;`Ln;{G-i`MNiIh3; z@x8_4C7+jPE;rFlH#^2Ad-|$ccA(~pD~eqPmqLTQZ?(3(T3D~YJAmI+;Go?b?|xlv z?}M8JFY1XzPT41t;u?_X*!g3F#L{iEqk=ELzcbg`xO`XFwDr^Pv#(E2d-r}$asBf- z;oiqT>NTAF;j(sxSmH$WHIL*A<G*xdFXBJY!+XG`??>R4BkviVS8RLw@%(?`^rM^~ zc??=2o2&|>SQwTa)T|Tu`l#WB&tC&(kKVA4*LmdTRp|=s?{uE5x<W90*$lIWmlmqG zzSgf1eO><QX6X6-Ofy(lZ5BVmUCUz6Y2P5Z-B|d*fq5&tI1fzmmJt@4y1*ghFauBG z#t(_dp9zGfb~ErWu@?WVdu_Do&1AJ(YED{?M{=^B?RxVjQ|t5!ozu_X?*7iemVaz< z$P}HF`sf*ZSos)?b+ryk9S~@><7a=`ewyn!v(L%-&(rF&XIxtFvRqlq(KX9Ew9@YP ztkWmIs#R}YWHCM0)H`zxca~IEvy0Y#zrJgk>E(ybT~<xXt$MkNW#=#N+xs?lZ1Yuo zw&ZN~1^fP4`G42MKfRn2@m5*pQr)y2Yb3>9T^GG{F{118#GgU+H?<mFe>Yuix;~lp zgX<kWYqQm<N`V@iZrV=U?^<<unW^`UJ=b<ji0A1y{8Z(%%Ih`v#)zIbmS$p4S7rIc znOC#_eC#EE@w?&POb1m9b#vd9@iBpOlrM+&oc>t<_kZPA&hUI*hLap36&8DnmzJ$x z^`_=}aNZqB7M{ZRT<*IsIp5jICB3*R@iy8kLT9f@bjYvjpvABEeCgQtFR`KIZWc>c zRn<}Tqi;@Z%k-Sb-}kBfe6fP$!iMR+SG|9HedHY1*TXy`a;?w`>8&SK%~ouA)v+tK z?DmI@M|(5F%ck{ad|`gi($M+()rL#LE134FKVv-8wEZJ%P4xXYzmCQ=L>9T&+Wd9- z9sA_?_u_{0U%M@4?&4!`ej{Yh&3}Mr#q<)BuMbzU_bv2#+}<B9+I?~(*MxUPdy=z! z8Bfl5Q&FQZ%XQ@szbl<{emE`?`nP&oL)4y+?OC6BC%jXZp1FL{B9po43=9kmp00i_ I>zopr0HCv!aR2}S literal 0 HcmV?d00001 diff --git a/doc/html/tab_a.png b/doc/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU{K*;Vqjo6E_OVcfq@~^)5S5Qg7NKKZ>|Od z0cZ96B^q5F(MR__P`y*}U-{<Bwa+;?f6hJl?ejAE@MWpWyv8M*o{|bO#@ZA1{BV6- y7sKx&w^!bB{p|-YCYAec-~a7@ZGGg|_*afhCXw?V*D^3LFnGH9xvX<aXaWFRgEU3} literal 0 HcmV?d00001 diff --git a/doc/html/tab_b.png b/doc/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU{K*;Vqjo6E_OVcfq|jG)5S5Qg7NKLU%qAq z5!Z*ucVD=&V+UVp!lMIQ!VE6RFF00fRl*+Ya&Xgx;{8w7HEsKQx^(G}nn@KuMc?f` zVE12A+;BI)n)HI)BNps;f^S}|xZ`sm^tX(#;H-O_1de3#xlZeP>R;TlXp&@OUd4k; bujDU#OZjc86Uky=U|{fc^>bP0l+XkKX6!_Y literal 0 HcmV?d00001 diff --git a/doc/html/tab_h.png b/doc/html/tab_h.png new file mode 100644 index 0000000000000000000000000000000000000000..fd5cb705488e60fcf30f56fcc951dee74f3b095b GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU{K*;Vqjo6E_OVcfq|jI)5S5Qg7NKLU!j8z z0&NfH)d?=WbL`wC*RqcNQc8+bH%&~@x?aTMUMOwbRlVna@ZIGTp1)pu`J~5jPLWdo zxUWB=55zOKFM1roR#tiX-=&SV+rymG(w;pNsowCdw~OQRmZ0ZzRO7!s|KGRh+x88; jeC&e9i%QeCY1pS{h{a^u)f6)@Ffe$!`njxgN@xNAc-%<D literal 0 HcmV?d00001 diff --git a/doc/html/tab_s.png b/doc/html/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU{K*;Vqjo6E_OVcfq|jk)5S5Qg7NL$M$RS& z28WA_?E{5GT9+uzTBN$nbK>-_v}tD1(px+ZKM8EMxhM7L>%R%H^HPcw&el&VwwLPg zx4roBW4ZbnxAs1Tw;#Ug))gJ@jh^$OYwa7UHMz}_*VZ&k-CciSZ`V~f&B$G<+{+X4 q#Lwth3OX&AIccTh#h#eItTsoL|GaxQRi1%?fx*+&&t;ucLK6Uo#7a&8 literal 0 HcmV?d00001 diff --git a/doc/html/tabs.css b/doc/html/tabs.css new file mode 100644 index 0000000..9cf578f --- /dev/null +++ b/doc/html/tabs.css @@ -0,0 +1,60 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/python/CSMOn.py b/python/CSMOn.py new file mode 100644 index 0000000..eac9810 --- /dev/null +++ b/python/CSMOn.py @@ -0,0 +1,113 @@ +# Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# Additionally, if used for any scientific purpose, the following reference +# must be cited: +# +# Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado. +# 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic +# Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017, +# pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326 +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +# CSMOn.cpp +# +# Created on: 02/Jul/2017 +# Author: Peter Frank Perroni (pfperroni@gmail.com) +# +# This module contains all configuration required to call CSMOn C++ API. + +import ctypes +from ctypes import * + +# Send and receive parameters through this object. +class Param(ctypes.Structure): + _fields_ = [('name', ctypes.c_char_p), + ('c', ctypes.c_char), + ('i', ctypes.c_int), + ('l', ctypes.c_long), + ('f', ctypes.c_float), + ('d', ctypes.c_double)] + +# List of parameters. +class ParamArrayType: + def from_param(self, param): + typename = type(param).__name__ + if hasattr(self, 'from_' + typename): + return getattr(self, 'from_' + typename)(param) + elif isinstance(param, ctypes.Array): + return param + else: + raise TypeError("Can't convert %s" % typename) + + # Cast from array.array objects + def from_array(self, param): + if param.typecode != 'd': + raise TypeError('must be an array of param') + ptr, _ = param.buffer_info() + return ctypes.cast(ptr, ctypes.POINTER(Param)) + + # Cast from lists/tuples + def from_list(self, param): + val = ((Param)*len(param))(*param) + return val + + from_tuple = from_list + + # Cast from a numpy array + def from_ndarray(self, param): + return param.ctypes.data_as(ctypes.POINTER(Param)) + +ParamArray = ParamArrayType() + +try: + from fitnessFunction import f + callback_t = CFUNCTYPE(c_double, POINTER(c_double), c_int) + fitFunc = callback_t(f) + + # Wrapper module must be called CSMOn_wrapper.so and must be present on current folder. + _search = ctypes.CDLL("./CSMOn_wrapper.so").search + def search(method, inParam, outParam): + n = -1 + for it in inParam: + if(it.name == "n"): + n = it.i + break + if(n == -1): + print "Dimension not provided!" + return NULL + # Prepare the input parameters. + pos = (c_double * n)() + _outParam = (Param * len(outParam))(*outParam) + _search.argtypes = (c_char_p, ParamArray, Param*len(_outParam), c_double * n, callback_t) + + # Call the C++ wrapper function. + _search(method, inParam, _outParam, pos, fitFunc) + + # Read the output parameters. + for i in range(_outParam._length_): + outParam[i] = _outParam[i] + + # Return the optimized results. + return list(pos) + +except NameError: + print "Please define the function below:" + print " def f(x, n)" + print "In a file called fitnessFunction.py, then reload this module." diff --git a/python/CSMOn_wrapper.cpp b/python/CSMOn_wrapper.cpp new file mode 100644 index 0000000..3ed826e --- /dev/null +++ b/python/CSMOn_wrapper.cpp @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * Additionally, if used for any scientific purpose, the following reference + * must be cited: + * + * Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado. + * 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic + * Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017, + * pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326 + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * @file + * + * This file contains the wrapper code for Python calls. + * + * @date 02/Jul/2017 + * @author Peter Frank Perroni (pfperroni@gmail.com) + */ + +#include <stdio.h> +#include <string.h> +#include <iostream> +#include "PSO.hpp" +#include "CSMOn.hpp" + +/** + * @brief Contains a parameter received from / sent to the Python caller. + */ +typedef struct _Param { + char *name; + char c; + int i; + long l; + float f; + double d; +} Param; + +/** + * @brief The wrapper function for Python calls. + * + * Call this method from Python using ctypes interface. + * + * @param method A string speficying the search method to be used. + * @param inParam The parameters required to call the search method specified. + * @param outParam The parameters returned by the search method called. This will be returned back to the Python caller. + * @param outPos The final result containing the optimized position. This will be returned back to the Python caller. + * @param fitnessFunction The callback Python function containing the code for the fitness function evaluation. + */ +extern "C" void search(char* method, Param *inParam, Param *outParam, double *outPos, callback_t fitnessFunction){ + + // Replicate (and adapt) this block of code for each different search method you want to develop. + // Begin template. + if(strcmp(method, "pso") == 0){ + + double w, c1, c2, s1, s2, R; + int i, n, p, M; + + // Receive from Python caller any parameter you want. + for(i=0; i < 9; i++){ + if(strcmp(inParam[i].name, "w") == 0) w = inParam[i].d; + else if(strcmp(inParam[i].name, "c1") == 0) c1 = inParam[i].d; + else if(strcmp(inParam[i].name, "c2") == 0) c2 = inParam[i].d; + else if(strcmp(inParam[i].name, "n") == 0) n = inParam[i].i; + else if(strcmp(inParam[i].name, "p") == 0) p = inParam[i].i; + else if(strcmp(inParam[i].name, "s1") == 0) s1 = inParam[i].d; + else if(strcmp(inParam[i].name, "s2") == 0) s2 = inParam[i].d; + else if(strcmp(inParam[i].name, "M") == 0) M = inParam[i].i; + else if(strcmp(inParam[i].name, "R") == 0) R = inParam[i].d; + } + printf("[CSMOn] Called search method %s with parameters: s1=%f, s2=%f, w=%f, c1=%f, c2=%f, n=%i, p=%i, M=%i, R=%f\n", method, s1, s2, w, c1, c2, n, p, M, R); + + // Search method instantiation. + PSO *pso = new PSO(fitnessFunction, s1, s2, p, n, w, c1, c2); + + // CSMOn instantiation and execution. + CSMOn *csmon = new CSMOn(pso, M, R, 0); + csmon->run(); + + // Read the final results. + double *bestPos = new double[n]; + csmon->getBestPos(bestPos); + for(i=0; i < n; i++){ // Send the final result back to Python caller. + outPos[i] = bestPos[i]; + } + + // Send any parameter you want back to Python caller. + int evals = csmon->getNEvals(); + double fit = csmon->getFitness(); + for(i=0; i < 2; i++){ + if(strcmp(outParam[i].name, "nEvals") == 0) outParam[i].i = evals; + else if(strcmp(outParam[i].name, "fit") == 0) outParam[i].d = fit; + } + + // Remind to clear any object that is not owned by Python caller. + delete bestPos; + delete pso; + delete csmon; + } + // End template. + else printf("Search method %s not supported yet.", method); + +} diff --git a/python/Makefile b/python/Makefile new file mode 100644 index 0000000..e3a36bb --- /dev/null +++ b/python/Makefile @@ -0,0 +1,16 @@ +FONTES=../cpp/PSO.cpp ../cpp/CSMOn.cpp CSMOn_wrapper.cpp +OBJECTS=$(FONTES:.cpp=.o) +FLAGS=-Wall -pedantic-errors -fPIC + +.PHONY: all clean + +all: CSMOn_wrapper + +CSMOn_wrapper: $(OBJECTS) + g++ -o $@.so $^ $(FLAGS) -shared + +%.o: %.cpp + g++ -I../cpp $< -c -o $@ $(FLAGS) + +clean: + rm $(OBJECTS) CSMOn.pyc fitnessFunction.pyc diff --git a/python/fitnessFunction.py b/python/fitnessFunction.py new file mode 100644 index 0000000..dc2f14f --- /dev/null +++ b/python/fitnessFunction.py @@ -0,0 +1,45 @@ +# Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# Additionally, if used for any scientific purpose, the following reference +# must be cited: +# +# Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado. +# 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic +# Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017, +# pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326 +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +# fitnessFunction.cpp +# +# Created on: 02/Jul/2017 +# Author: Peter Frank Perroni (pfperroni@gmail.com) +# +# This module defines the fitness function that will be called from CSMOn C++ API. + +import math + +# Fitness Function. +def f(x, n): + # Put your fitness function here. + PI = 3.141592653589793238462643383279 + s = 0 + for i in range(0, n): + s += x[i]*x[i] - 10 * math.cos(2 * PI * x[i]) + return 10 * n + s diff --git a/python/pso_example.py b/python/pso_example.py new file mode 100644 index 0000000..c613c4e --- /dev/null +++ b/python/pso_example.py @@ -0,0 +1,55 @@ +# Copyright (c) 2017, Peter Frank Perroni (pfperroni@gmail.com) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# Additionally, if used for any scientific purpose, the following reference +# must be cited: +# +# Peter Frank Perroni, Daniel Weingaertner, and Myriam Regattieri Delgado. +# 2017. Estimating Stop Conditions of Swarm Based Stochastic Metaheuristic +# Algorithms. In Proceedings of GECCO '17, Berlin, Germany, July 15-19, 2017, +# pg 43-50. DOI: http://dx.doi.org/10.1145/3071178.3071326 +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +# pso_example.cpp +# +# Created on: 02/Jul/2017 +# Author: Peter Frank Perroni (pfperroni@gmail.com) +# +# This file contains an example of how to call the CSMOn C++ API. + +from CSMOn import * + +# Prepare the Input parameters. +bestResult=[Param("nEvals", i=0), Param("fit", d=0)] +s1=Param("s1", d=-5.12) +s2=Param("s2", d=5.12) +w=Param("w", d=-0.5) +c1=Param("c1", d=0.2) +c2=Param("c2", d=0.2) +n=Param("n", i=100) +p=Param("p", i=30) +M=Param("M", i=50000) +R=Param("R", d=-0.08) + +# Call CSMOn running a PSO. +res=search("pso", [s1, s2, w, c1, c2, n, p, M, R], bestResult) + +#Print the results. +print "\nOptimized result: ",res +print "\nnEvals:", bestResult[0].i,", Fitness:",bestResult[1].d -- GitLab