/******************************************************** * ██████╗ ███████╗████████╗██╗ * ██╔════╝ ██╔════╝╚══██╔══╝██║ * ██║ ███╗███████╗ ██║ ██║ * ██║ ██║╚════██║ ██║ ██║ * ╚██████╔╝███████║ ██║ ███████╗ * ╚═════╝ ╚══════╝ ╚═╝ ╚══════╝ * Generic Scientific Template Library * * Copyright (c) 2022 Yi Zhang (yizhang-geo@zju.edu.cn) * * The GSTL is distributed under a dual licensing scheme. You can redistribute * it and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, either version 2 * of the License, or (at your option) any later version. You should have * received a copy of the GNU Lesser General Public License (LGPL) along with * this program. If not, see . * * If the terms and conditions of the LGPL v.2. would prevent you from using * the GSTL, please consider the option to obtain a commercial license for a * fee. These licenses are offered by the GSTL's original author. As a rule, * licenses are provided "as-is", unlimited in time for a one time fee. Please * send corresponding requests to: yizhang-geo@zju.edu.cn. Please do not forget * to include some description of your company and the realm of its activities. * Also add information on how to contact you by electronic and paper mail. ******************************************************/ #include "../lib/optimization.h" using namespace gctl; class ex9 : public lgd_solver { private: /* data */ public: ex9(){} virtual ~ex9(){} virtual double LGD_Evaluate(const array &x, array &g){return 0.0;} }; int main(int argc, char const *argv[]) { ex9 e; lgd_para p = e.default_lgd_para(); p.beta = 1.2; p.seed = 125; e.set_lgd_para(p); array dist; e.get_levy_distribution(dist); double m = dist.mean(); double s = dist.std(); int c = 0; for (size_t i = 0; i < dist.size(); i++) { if (dist[i] > m + 3*s) c++; } std::cout << "mean = " << dist.mean() << "\n"; std::cout << "std = " << dist.std() << "\n"; std::cout << "rms = " << dist.rms() << "\n"; std::cout << "max = " << dist.max() << "\n"; std::cout << "min = " << dist.min() << "\n"; std::cout << "ratio = " << 5000.0*c/dist.size() << "\n"; for (size_t i = 0; i < dist.size(); i++) { std::clog << dist[i] << "\n"; } return 0; }