ParaMonte MATLAB 3.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
Paradram Class Reference

This is the ParaDRAM class for generating instances of serial and parallel Delayed-Rejection Adaptive Metropolis-Hastings Markov Chain Monte Carlo sampler of the ParaMonte MATLAB library.
More...

Inheritance diagram for Paradram:
Collaboration diagram for Paradram:

Public Member Functions

function Paradram ()
 Generate and return an instance of the serial and parallel Delayed-Rejection Adaptive Metropolis-Hastings Markov Chain Monte Carlo sampler of the ParaMonte MATLAB library.
More...
 
function getppm (in self)
 Generate and return the relevant Post-Processing Message (ppm) for the current ParaMonte sampler to be displayed on the MATLAB command line after the sampling is complete.
More...
 
function readChainMarkov (in self, in pattern, in sep)
 Return a list of objects of class pm.sampling.FileContentsChainDRAM containing the content(s) of the ParaMonte simulation output chain file(s) whose path(s) match the specified input pattern or the simulation specification sampler.spec.outputFileName.
More...
 
function run (in self, in getLogFunc, in ndim)
 Run the ParaDRAM sampler and return nothing. More...
 

Detailed Description

This is the ParaDRAM class for generating instances of serial and parallel Delayed-Rejection Adaptive Metropolis-Hastings Markov Chain Monte Carlo sampler of the ParaMonte MATLAB library.

For more information, see the documentation of the class constructor pm.sampling.Paradram::Paradram.

Note
See the documentation of the class constructor for usage interface and examples.


Final Remarks


If you believe this algorithm or its documentation can be improved, we appreciate your contribution and help to edit this page's documentation and source file on GitHub.
For details on the naming abbreviations, see this page.
For details on the naming conventions, see this page.
This software is distributed under the MIT license with additional terms outlined below.

  1. If you use any parts or concepts from this library to any extent, please acknowledge the usage by citing the relevant publications of the ParaMonte library.
  2. If you regenerate any parts/ideas from this library in a programming environment other than those currently supported by this ParaMonte library (i.e., other than C, C++, Fortran, MATLAB, Python, R), please also ask the end users to cite this original ParaMonte library.

This software is available to the public under a highly permissive license.
Help us justify its continued development and maintenance by acknowledging its benefit to society, distributing it, and contributing to it.

Author:
Amir Shahmoradi, May 16 2016, 9:03 AM, Oden Institute for Computational Engineering and Sciences (ICES), UT Austin

Definition at line 17 of file Paradram.m.

Constructor & Destructor Documentation

◆ Paradram()

function Paradram::Paradram ( )

Generate and return an instance of the serial and parallel Delayed-Rejection Adaptive Metropolis-Hastings Markov Chain Monte Carlo sampler of the ParaMonte MATLAB library.

This function is the constructor of the pm.sampling.Paradram sampler class.
Once you assign the desired simulation specifications to the corresponding attributes within the component spec of an object of class pm.sampling.Paradram, call the ParaDRAM sampler via the object method pm.sampling.Paradram.run().

While the constructor of this class does not take any input arguments, all ParaDRAM simulation specifications can be set after creating the object.

Returns
sampler : The output scalar object of class pm.sampling.Paradram.


Possible calling interfaces

sampler = pm.sampling.Paradram();
Warning
When using the ParaMonte MATLAB library functionalities, particularly ParaMonte samplers in parallel, it would be best to close any such aggressive software/applications as Dropbox, ZoneAlarm, ... that interfere with your ParaMonte MATLAB library output files, potentially causing the tasks to fail and crash before successful completion.
These situations scarcely happen.
Note
On Windows systems, when restarting an old interrupted ParaDRAM simulation, ensure your MATLAB session is also restarted before the simulation restart.
This may be needed as Windows frequently locks access to some or all simulation output files.
To unset an already-set input simulation specification, simply set the simulation attribute to empty double [] or re-instantiate an object of class pm.sampling.Paradram.run().
See also
ParaDRAM simulation specifications listing
ParaDRAM simulation restart functionality
ParaDRAM simulation output files

ParaDRAM Simulation Specifications

The ParaDRAM simulation specifications have lengthy comprehensive descriptions that appear in full in the output report files of every ParaDRAM simulation.

The best way to learn about individual ParaDRAM simulation attributes is to a run a minimal serial simulation as given in the above.
You can also use the sampler.spec.doc() method:

sampler = pm.sampling.Paradram();
sampler.spec.doc()

Example Usage: Serial

First, ensure the ParaMonte +pm package (i.e., folder) is available in your MATLAB paths.

Here is a MATLAB script main.m for a serial ParaDRAM simulation.
Copy and paste the following code into your MATLAB session:

ndim = 4;
sampler = pm.sampling.Paradram();
sampler.run ( @(x) - sum(x.^2) ... getLogFunc: the natural log of the objective function.
, ndim ... ndim: the number of dimensions of the objective function.
);
samples = sampler.readSample();
sample = samples{1};
tile = pm.vis.TileLine(sample.df);
tile.make("coly", sample.slfc + 1 : sample.slfc + ndim, "colc", "sampleLogFunc");
function getLogFunc(in point)

The mathematical objective function in the above example is a is a multivariate Normal distribution centered at the origin, whose natural logarithm is returned by the lambda (Anonymous) function defined as a function handle input to the ParaDRAM sampler.

Running this code will generate a set of simulation output files (in the current working directory of MATLAB).
Among these, the file suffixed with "_report.txt" contains the full description of all input specifications of the ParaDRAM simulation as well as other information about the simulation results.

Example Usage: Thread-Parallel

First, ensure the ParaMonte +pm package (i.e., folder) is available in your MATLAB paths.

Threading parallelism is possible as of ParaMonte MATLAB version 3.0.0.
However, only singleChain ParaDRAM simulations are supported.

Here is a MATLAB script main.m for a thread-parallel ParaDRAM simulation.
Copy and paste the following code and paste into your MATLAB session:

sampler = pm.sampling.Paradram();
sampler.spec.parallelismNumThread = 0; % use all available threads.
sampler.run ( @(x) - sum(x.^2) ... getLogFunc: the natural log of the objective function.
, 4 ... ndim: the number of dimensions of the objective function.
);
samples = sampler.readSample();
sample = samples{1};
sample.vis.tile.line.make();
sample.vis.triplex.lshc2.make(); % Make a corner scatter/density-contour plot.

The statement sample.vis.tile.line.make(); in the above is equivalent to the following set of lines:

tile = pm.vis.TileLine(sample.df);
tile.make("coly", sample.slfc + 1 : sample.slfc + 4, "colc", "sampleLogFunc");

The mathematical objective function in the above example is a is a multivariate Normal distribution centered at the origin, whose natural logarithm is returned by the lambda (Anonymous) function defined as a function handle input to the ParaDRAM sampler.

Running this code will generate a set of simulation output files (in the current working directory of MATLAB).
Among these, the file suffixed with "_report.txt" contains the full description of all input specifications of the ParaDRAM simulation as well as other information about the simulation results.

Specifying 0 as the number of threads will lead to using all available CPU threads for thread-parallel ParaDRAM simulation.

Note
Benefits of thread-parallelism
Thread-parallel simulations offer a much more flexible and easier approach to benefiting from parallelism without going through the hassle of MPI-parallel simulations.
But they can still potentially offer much faster speed than serial simulations.
The actual speedup depends on a lot of factors.
Moreover, the number of threads is limited to maximum number of physical cores available on your system.
As such, thread-parallel simulations are not scalable.
If you need scalability, checkout MPI-parallelism below.

Example Usage: MPI-Parallel

First, ensure the ParaMonte +pm package (i.e., folder) is available in your MATLAB paths.

MPI-parallel simulations can be slightly more cumbersome than thread-parallel simulations described above because MPI-parallel simulations cannot be performed from within a MATLAB GUI session and require launching MATLAB via a compatible mpiexec launcher.

  1. Ensure you need and will get a speedup by running the an MPI-parallel simulation.
    Typically, your simulation may then benefit from parallelism only if a single evaluation of the objective function takes longer than a few milliseconds.

  2. Ensure the required MPI libraries are installed on your system (You can skip this step if you know that you already have a compatible MPI library installed on your system).
    On the MATLAB command line type the following,

    pm.lib.verify();

    This will verify the existence of a valid MPI library on your system and, if missing, will guide you to install the MPI library on your system.

  3. Once the MPI installation is verified, copy and paste the following code into your MATLAB session:

    fid = fopen("main_mpi.m", "w");
    sourceCode = ...
    "sampler = pm.sampling.Paradram();" + newline + ...
    "%sampler.mpiname = ''; % set this to an explicit MPI library name if needed." + newline + ...
    "sampler.run( @(x) - sum(x.^2) ... getLogFunc: the natural log of the objective function." + newline + ...
    " , 4 ... ndim: the number of dimensions of the objective function" + newline + ...
    " );";
    fprintf(fid, "%s\n", sourceCode);
    fclose(fid);

  4. This will generate a main_mpi.m MATLAB script file in the current working directory of your MATLAB session.
    Now, you can execute this MATLAB script file (main_mpi.m) in parallel.
    To do so, you need to call MATLAB on a command-line, out of MATLAB GUI.
    1. On Windows:
      From within command prompt that recognizes both MATLAB and mpiexec, ideally, the Intel dedicated command-prompt that is shipped with Intel MPI library, type the following,

      mpiexec -localonly -n 3 matlab -batch "main_mpi"
      Note
      In the above MPI launcher command for Windows OS, we assumed that you would be using the Intel MPI library, hence, the reason for the extra flag -localonly.
      This flag runs the parallel code only on one node, but in doing so, it avoids the use of Hydra service and its registration.
      If you are not on a Windows cluster, (e.g., you are using your personal device), then we recommend specifying this flag.
    2. On macOS/Linux:
      From within a Bash terminal that recognizes both MATLAB and mpiexec, type the following,

      mpiexec -n 3 matlab -batch "main_mpi"
      Note
      In both cases in the above, the script main_mpi.m will run on 3 processors.
      Feel free to change the number of processors to any number desired.
      But do not request more than the available number of physical cores on your system.
Warning
Do not add postprocessing codes (such as reading and plotting the output samples) in your MPI-parallel code.
There is no point in doing so, since MATLAB will run in -batch mode for parallel simulations, disabling all plotting capabilities.
Moreover, if you read and postprocess the output files in parallel mode, the task will be done by all parallel processes, potentially overwriting external IO activities of each other.
Only perform the sampling as described above in MPI-parallel mode.


Example usage

1cd(fileparts(mfilename('fullpath'))); % Change working directory to source code directory.
2addpath('../../../../'); % Add the ParaMonte library root directory to the search path.
3
4%%%%
5%%%% Setup the sampler.
6%%%%
7
8sampler = pm.sampling.Paradram();
9sampler.spec.outputStatus = "retry";
10sampler.spec.proposalStart = [-5, 5];
11sampler.spec.outputFileName = "himmelblau";
12sampler.spec.randomSeed = 28457353; % make sampling reproducible.
13%sampler.spec.outputChainSize = 30000; % Use a small chain size for illustration.
14sampler.spec.parallelismNumThread = []; % Set this to a positive number to request that many parallel threads for the sampling.
15sampler.spec.outputRestartFileFormat = "ascii";
16
17%%%% Set ``mpiname`` to your choice of MPI library
18%%%% ("intel", "openmpi", "mpich", ...) for MPI-parallel applications below.
19%%%% This setting is optional for most MPI-parallel simulations because the
20%%%% ParaMonte library will automatically infer the MPI library usage and type.
21%%%% If the sampler has trouble finding the right MPI-library, help the sampler
22%%%% find the invoke right MPI library build of the ParaMonte library by
23%%%% explicitly specifying its name blow.
24
25% sampler.mpiname = ''; % default
26% sampler.mpiname = "openmpi";
27% sampler.mpiname = "intel";
28% sampler.mpiname = "mpich";
29
30%%%% Developer Warning:
31%%%% Enable `silent` mode when generating
32%%%% the ParaMonte MATLAB documentation for a cleaner doc.
33
34sampler.silent = true;
35
36%%%%
37%%%% Run the sampler.
38%%%%
39
40if true % set to ``false`` to only post-process an existing simulation in the current folder.
41 sampler.run ( @(x) pm.stats.dist.himmelblau.getLogUDF(x(1), x(2)) ...
42 , 2 ...
43 );
44end
45
46%%%%
47%%%% Ensure postprocessing is done by only one parallel process if distributed (MPI) parallelism is enabled.
48%%%%
49
50if pm.lib.mpi.runtime.rankp1() == 1
51
52 %%%%
53 %%%% Postprocess the output chain file.
54 %%%%
55
56 chain = sampler.readChain();
57 chain = chain{1};
58
59 %%%%
60 %%%% Make plots of proposal adaptation.
61 %%%%
62
63 p = pm.vis.PlotScatter(chain.df, "coly", "proposalAdaptation");
64 p.make("axes", {"yscale", "log"});
65 p.savefig("Paradram.himmelblau.proposalAdaptation.png", "-m3");
66
67 chain.vis.proposalAdaptation.line.make()
68 chain.vis.proposalAdaptation.line.savefig("Paradram.himmelblau.proposalAdaptation.line.png", "-m3");
69
70 chain.vis.proposalAdaptation.scatter.make()
71 chain.vis.proposalAdaptation.scatter.savefig("Paradram.himmelblau.proposalAdaptation.scatter.png", "-m3");
72
73 %%%%
74 %%%% Make triplet (corner) plots from the chain file.
75 %%%%
76
77 chain.vis.triplex.lshc2.make();
78 chain.vis.triplex.lshc2.savefig("Paradram.himmelblau.triplex.lshc2.png", "-m3");
79
80 chain.vis.triplex.lshc3.make();
81 chain.vis.triplex.lshc3.savefig("Paradram.himmelblau.triplex.lshc3.png", "-m3");
82
83 chain.vis.triplex.lshcf.make();
84 chain.vis.triplex.lshcf.savefig("Paradram.himmelblau.triplex.lshcf.png", "-m3");
85
86 %%%%
87 %%%% The number `chain.slfc` corresponds to the data column with header "sampleLogFunc"`.
88 %%%%
89
90 p = pm.vis.PlotLineScatter(chain.df, "colx", chain.slfc + 1, "coly", chain.slfc + 2);
91 p.make("colc", "sampleLogFunc");
92 p.savefig("Paradram.himmelblau.domain.2d.png", "-m3");
93
94 p = pm.vis.PlotScatter3(chain.df, "colx", chain.slfc + 1, "coly", chain.slfc + 2, "colz", chain.slfc, "colc", chain.slfc);
95 p.make();
96 p.savefig("Paradram.himmelblau.domain.3d.png", "-m3");
97
98 p = pm.vis.TileLine(chain.df, "tileshape", [2, 1]);
99 p.make("coly", chain.slfc + [1 : 2], "colc", "sampleLogFunc");
100 p.savefig("Paradram.himmelblau.traceplot.png", "-m3");
101
102 %%%%
103 %%%% Postprocess the output restart file.
104 %%%%
105
106 restart = sampler.readRestart();
107 restart = restart{1};
108
109 p = pm.vis.PlotEllipse3(restart.proposalCov, restart.proposalMean, transpose(restart.uniqueStateVisitCount));
110 p.make("axes", {"zscale", "log"});
111 p.savefig("Paradram.himmelblau.proposalCov.png", "-m3");
112
113 %%%%
114 %%%% Postprocess the output report file.
115 %%%%
116
117 report = sampler.readReport();
118 report = report{1};
119
120 for parcond = ["sameeff", "zeroeff"]
121 report.stats.parallelism.speedup.scaling.strong.(parcond).vis.lineScatter.make();
122 report.stats.parallelism.speedup.scaling.strong.(parcond).vis.lineScatter.savefig("Paradram.himmelblau.parallelism.speedup.scaling.strong." + parcond + ".png", "-m3");
123 %p = pm.vis.PlotLineScatter(report.stats.parallelism.speedup.scaling.strong.(parcond).df, "colx", "1", "coly", "2", "colc", "2");
124 %p.make("axes", {"xscale", "log"}, "plot", {"linewidth", 2}, "scatter", {"size", 7});
125 %p.savefig("Paradram.himmelblau.parallelism.speedup.scaling.strong." + parcond + ".png", "-m3");
126 end
127
128end
function name(in vendor)
Return the MPI library name as used in naming the ParaMonte MATLAB shared library directories.
function find(in vendor)
Return a list of scalar MATLAB strings containing the paths to all detected mpiexec binaries installe...
function parallel()
Return a scalar MATLAB logical that is true if and only if the current installation of MATLAB contain...
function root()
Return a scalar MATLAB string containing the root directory of the ParaMonte library package.

Example output
1 ParaDRAM - NOTE: Setting up the MATLAB programming language environment for a ParaDRAM simulation...
2 ParaDRAM - NOTE:
3 ParaDRAM - NOTE: The user-specified internal input file for ParaDRAM specifications detected.
4 ParaDRAM - NOTE: All ParaDRAM simulation specifications will be read from the specified internal namelist file...
5
6 ParaDRAM - NOTE: Variable `outputFileName` detected among the user-supplied specifications of the ParaDRAM sampler:
7 ParaDRAM - NOTE: "himmelblau"
8 ParaDRAM - NOTE:
9 ParaDRAM - NOTE: Path to the current working directory:
10 ParaDRAM - NOTE: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/himmelblau"
11 ParaDRAM - NOTE:
12 ParaDRAM - NOTE: Generating the requested directory for the ParaDRAM simulation output files:
13 ParaDRAM - NOTE: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/himmelblau"
14 ParaDRAM - NOTE:
15 ParaDRAM - NOTE: 1 count of preexisting complete simulation runs with the same name prefix were detected.
16 ParaDRAM - NOTE:
17 ParaDRAM - NOTE: The last complete simulation run #1 will be overwritten as requested.
18 ParaDRAM - NOTE: Starting a fresh simulation run #1...
19 ParaDRAM - NOTE:
20 ParaDRAM - NOTE: Running the simulation in serial on 1 process...
21 ParaDRAM - NOTE:
22 ParaDRAM - NOTE: Generating the new output report file:
23 ParaDRAM - NOTE:
24 ParaDRAM - NOTE: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/himmelblau/himmelblau_run1_pid1_report.txt"
25 ParaDRAM - NOTE:
26 ParaDRAM - NOTE: Please see the output *_pid1_report.txt and *_pid1_progress.txt files for further realtime simulation details...
27
28 Accepted/Total Func. Call Dynamic/Overall Acc. Rate Elapsed/Remained Time [s]
29 ========================= ========================= =========================
30
31 356 / 1000 0.3560 / 0.3560 0.0103 / 2.8759
32 635 / 2000 0.2790 / 0.3175 0.0157 / 2.4633
33 899 / 3000 0.2640 / 0.2997 0.0207 / 2.2817
34 1167 / 4000 0.2680 / 0.2918 0.0259 / 2.1906
35 1469 / 5000 0.3020 / 0.2938 0.0307 / 2.0596
36 1796 / 6000 0.3270 / 0.2993 0.0356 / 1.9476
37 2060 / 7000 0.2640 / 0.2943 0.0402 / 1.9123
38 2308 / 8000 0.2480 / 0.2885 0.0452 / 1.9128
39 2586 / 9000 0.2780 / 0.2873 0.0499 / 1.8806
40 2859 / 10000 0.2730 / 0.2859 0.0547 / 1.8571
41 3051 / 11000 0.1920 / 0.2774 0.0594 / 1.8886
42 3338 / 12000 0.2870 / 0.2782 0.0645 / 1.8667
43 3654 / 13000 0.3160 / 0.2811 0.0694 / 1.8293
44 3900 / 14000 0.2460 / 0.2786 0.0740 / 1.8226
45 4157 / 15000 0.2570 / 0.2771 0.0786 / 1.8128
46 4422 / 16000 0.2650 / 0.2764 0.0833 / 1.7999
47 4608 / 17000 0.1860 / 0.2711 0.0879 / 1.8204
48 4859 / 18000 0.2510 / 0.2699 0.0929 / 1.8191
49 5118 / 19000 0.2590 / 0.2694 0.0985 / 1.8255
50 5395 / 20000 0.2770 / 0.2697 0.1032 / 1.8100
51 5621 / 21000 0.2260 / 0.2677 0.1079 / 1.8117
52 5826 / 22000 0.2050 / 0.2648 0.1124 / 1.8166
53 6104 / 23000 0.2780 / 0.2654 0.1171 / 1.8013
54 6346 / 24000 0.2420 / 0.2644 0.1217 / 1.7953
55 6600 / 25000 0.2540 / 0.2640 0.1264 / 1.7887
56 6799 / 26000 0.1990 / 0.2615 0.1309 / 1.7944
57 7059 / 27000 0.2600 / 0.2614 0.1356 / 1.7858
58 7346 / 28000 0.2870 / 0.2624 0.1402 / 1.7686
59 7571 / 29000 0.2250 / 0.2611 0.1448 / 1.7675
60 7869 / 30000 0.2980 / 0.2623 0.1495 / 1.7501
61 8168 / 31000 0.2990 / 0.2635 0.1542 / 1.7340
62 8421 / 32000 0.2530 / 0.2632 0.1588 / 1.7269
63 8751 / 33000 0.3300 / 0.2652 0.1636 / 1.7059
64 8970 / 34000 0.2190 / 0.2638 0.1687 / 1.7119
65 9225 / 35000 0.2550 / 0.2636 0.1735 / 1.7072
66 9403 / 36000 0.1780 / 0.2612 0.1780 / 1.7148
67 9604 / 37000 0.2010 / 0.2596 0.1827 / 1.7198
68 9799 / 38000 0.1950 / 0.2579 0.1874 / 1.7247
69 9993 / 39000 0.1940 / 0.2562 0.1918 / 1.7280
70 10186 / 40000 0.1930 / 0.2546 0.1964 / 1.7313
71 10454 / 41000 0.2680 / 0.2550 0.2011 / 1.7222
72 10701 / 42000 0.2470 / 0.2548 0.2056 / 1.7157
73 10965 / 43000 0.2640 / 0.2550 0.2102 / 1.7071
74 11197 / 44000 0.2320 / 0.2545 0.2152 / 1.7071
75 11390 / 45000 0.1930 / 0.2531 0.2203 / 1.7136
76 11642 / 46000 0.2520 / 0.2531 0.2252 / 1.7092
77 11838 / 47000 0.1960 / 0.2519 0.2299 / 1.7119
78 12067 / 48000 0.2290 / 0.2514 0.2346 / 1.7098
79 12340 / 49000 0.2730 / 0.2518 0.2395 / 1.7013
80 12582 / 50000 0.2420 / 0.2516 0.2443 / 1.6970
81 12855 / 51000 0.2730 / 0.2521 0.2491 / 1.6887
82 13126 / 52000 0.2710 / 0.2524 0.2538 / 1.6799
83 13245 / 53000 0.1190 / 0.2499 0.2583 / 1.6918
84 13426 / 54000 0.1810 / 0.2486 0.2628 / 1.6948
85 13655 / 55000 0.2290 / 0.2483 0.2675 / 1.6914
86 13888 / 56000 0.2330 / 0.2480 0.2721 / 1.6874
87 14100 / 57000 0.2120 / 0.2474 0.2768 / 1.6865
88 14340 / 58000 0.2400 / 0.2472 0.2815 / 1.6813
89 14515 / 59000 0.1750 / 0.2460 0.2859 / 1.6839
90 14686 / 60000 0.1710 / 0.2448 0.2905 / 1.6878
91 15024 / 61000 0.3380 / 0.2463 0.2955 / 1.6715
92 15313 / 62000 0.2890 / 0.2470 0.3003 / 1.6610
93 15602 / 63000 0.2890 / 0.2477 0.3052 / 1.6507
94 15849 / 64000 0.2470 / 0.2476 0.3099 / 1.6452
95 16136 / 65000 0.2870 / 0.2482 0.3147 / 1.6356
96 16405 / 66000 0.2690 / 0.2486 0.3196 / 1.6284
97 16644 / 67000 0.2390 / 0.2484 0.3244 / 1.6244
98 16862 / 68000 0.2180 / 0.2480 0.3290 / 1.6222
99 17155 / 69000 0.2930 / 0.2486 0.3339 / 1.6126
100 17387 / 70000 0.2320 / 0.2484 0.3386 / 1.6090
101 17657 / 71000 0.2700 / 0.2487 0.3433 / 1.6012
102 17935 / 72000 0.2780 / 0.2491 0.3481 / 1.5928
103 18230 / 73000 0.2950 / 0.2497 0.3531 / 1.5837
104 18508 / 74000 0.2780 / 0.2501 0.3579 / 1.5757
105 18703 / 75000 0.1950 / 0.2494 0.3624 / 1.5751
106 18977 / 76000 0.2740 / 0.2497 0.3673 / 1.5682
107 19277 / 77000 0.3000 / 0.2504 0.3720 / 1.5579
108 19533 / 78000 0.2560 / 0.2504 0.3769 / 1.5528
109 19640 / 79000 0.1070 / 0.2486 0.3814 / 1.5605
110 19874 / 80000 0.2340 / 0.2484 0.3861 / 1.5564
111 20150 / 81000 0.2760 / 0.2488 0.3908 / 1.5487
112 20417 / 82000 0.2670 / 0.2490 0.3957 / 1.5422
113 20670 / 83000 0.2530 / 0.2490 0.4004 / 1.5366
114 20976 / 84000 0.3060 / 0.2497 0.4052 / 1.5266
115 21213 / 85000 0.2370 / 0.2496 0.4100 / 1.5229
116 21553 / 86000 0.3400 / 0.2506 0.4150 / 1.5105
117 21785 / 87000 0.2320 / 0.2504 0.4196 / 1.5067
118 22023 / 88000 0.2380 / 0.2503 0.4244 / 1.5026
119 22326 / 89000 0.3030 / 0.2509 0.4293 / 1.4935
120 22507 / 90000 0.1810 / 0.2501 0.4338 / 1.4935
121 22769 / 91000 0.2620 / 0.2502 0.4385 / 1.4873
122 22951 / 92000 0.1820 / 0.2495 0.4430 / 1.4872
123 23283 / 93000 0.3320 / 0.2504 0.4479 / 1.4759
124 23582 / 94000 0.2990 / 0.2509 0.4527 / 1.4670
125 23763 / 95000 0.1810 / 0.2501 0.4573 / 1.4670
126 24022 / 96000 0.2590 / 0.2502 0.4622 / 1.4619
127 24271 / 97000 0.2490 / 0.2502 0.4671 / 1.4573
128 24485 / 98000 0.2140 / 0.2498 0.4717 / 1.4549
129 24679 / 99000 0.1940 / 0.2493 0.4763 / 1.4537
130 24989 / 100000 0.3100 / 0.2499 0.4811 / 1.4442
131 25203 / 101000 0.2140 / 0.2495 0.4857 / 1.4415
132 25435 / 102000 0.2320 / 0.2494 0.4903 / 1.4374
133 25665 / 103000 0.2300 / 0.2492 0.4950 / 1.4338
134 25880 / 104000 0.2150 / 0.2488 0.4995 / 1.4306
135 26120 / 105000 0.2400 / 0.2488 0.5041 / 1.4259
136 26397 / 106000 0.2770 / 0.2490 0.5089 / 1.4189
137 26720 / 107000 0.3230 / 0.2497 0.5137 / 1.4087
138 27034 / 108000 0.3140 / 0.2503 0.5185 / 1.3994
139 27269 / 109000 0.2350 / 0.2502 0.5232 / 1.3954
140 27541 / 110000 0.2720 / 0.2504 0.5278 / 1.3886
141 27819 / 111000 0.2780 / 0.2506 0.5328 / 1.3824
142 28077 / 112000 0.2580 / 0.2507 0.5376 / 1.3770
143 28297 / 113000 0.2200 / 0.2504 0.5422 / 1.3740
144 28539 / 114000 0.2420 / 0.2503 0.5469 / 1.3695
145 28800 / 115000 0.2610 / 0.2504 0.5516 / 1.3637
146 29039 / 116000 0.2390 / 0.2503 0.5563 / 1.3595
147 29196 / 117000 0.1570 / 0.2495 0.5608 / 1.3599
148 29427 / 118000 0.2310 / 0.2494 0.5654 / 1.3560
149 29683 / 119000 0.2560 / 0.2494 0.5701 / 1.3506
150 29993 / 120000 0.3100 / 0.2499 0.5750 / 1.3421
151 30213 / 121000 0.2200 / 0.2497 0.5798 / 1.3392
152 30524 / 122000 0.3110 / 0.2502 0.5846 / 1.3306
153 30825 / 123000 0.3010 / 0.2506 0.5893 / 1.3225
154 30960 / 124000 0.1350 / 0.2497 0.5937 / 1.3239
155 31267 / 125000 0.3070 / 0.2501 0.5985 / 1.3157
156 31570 / 126000 0.3030 / 0.2506 0.6033 / 1.3077
157 31818 / 127000 0.2480 / 0.2505 0.6079 / 1.3027
158 32066 / 128000 0.2480 / 0.2505 0.6125 / 1.2976
159 32393 / 129000 0.3270 / 0.2511 0.6174 / 1.2886
160 32604 / 130000 0.2110 / 0.2508 0.6220 / 1.2858
161 32809 / 131000 0.2050 / 0.2505 0.6266 / 1.2831
162 33021 / 132000 0.2120 / 0.2502 0.6313 / 1.2805
163 33332 / 133000 0.3110 / 0.2506 0.6361 / 1.2723
164 33511 / 134000 0.1790 / 0.2501 0.6406 / 1.2710
165 33802 / 135000 0.2910 / 0.2504 0.6454 / 1.2640
166 34088 / 136000 0.2860 / 0.2506 0.6502 / 1.2572
167 34336 / 137000 0.2480 / 0.2506 0.6549 / 1.2524
168 34618 / 138000 0.2820 / 0.2509 0.6596 / 1.2457
169 34876 / 139000 0.2580 / 0.2509 0.6645 / 1.2407
170 35163 / 140000 0.2870 / 0.2512 0.6692 / 1.2340
171 35389 / 141000 0.2260 / 0.2510 0.6738 / 1.2301
172 35604 / 142000 0.2150 / 0.2507 0.6785 / 1.2271
173 35829 / 143000 0.2250 / 0.2506 0.6833 / 1.2238
174 36056 / 144000 0.2270 / 0.2504 0.6880 / 1.2202
175 36295 / 145000 0.2390 / 0.2503 0.6927 / 1.2159
176 36536 / 146000 0.2410 / 0.2502 0.6976 / 1.2117
177 36779 / 147000 0.2430 / 0.2502 0.7023 / 1.2071
178 37064 / 148000 0.2850 / 0.2504 0.7070 / 1.2006
179 37320 / 149000 0.2560 / 0.2505 0.7118 / 1.1955
180 37614 / 150000 0.2940 / 0.2508 0.7167 / 1.1887
181 37884 / 151000 0.2700 / 0.2509 0.7214 / 1.1829
182 38082 / 152000 0.1980 / 0.2505 0.7261 / 1.1806
183 38302 / 153000 0.2200 / 0.2503 0.7307 / 1.1771
184 38552 / 154000 0.2500 / 0.2503 0.7354 / 1.1722
185 38815 / 155000 0.2630 / 0.2504 0.7401 / 1.1666
186 39030 / 156000 0.2150 / 0.2502 0.7449 / 1.1636
187 39266 / 157000 0.2360 / 0.2501 0.7498 / 1.1597
188 39504 / 158000 0.2380 / 0.2500 0.7548 / 1.1559
189 39804 / 159000 0.3000 / 0.2503 0.7598 / 1.1491
190 40080 / 160000 0.2760 / 0.2505 0.7652 / 1.1440
191 40325 / 161000 0.2450 / 0.2505 0.7698 / 1.1393
192 40580 / 162000 0.2550 / 0.2505 0.7745 / 1.1341
193 40815 / 163000 0.2350 / 0.2504 0.7791 / 1.1298
194 41088 / 164000 0.2730 / 0.2505 0.7838 / 1.1238
195 41307 / 165000 0.2190 / 0.2503 0.7884 / 1.1202
196 41567 / 166000 0.2600 / 0.2504 0.7931 / 1.1149
197 41877 / 167000 0.3100 / 0.2508 0.7979 / 1.1075
198 42097 / 168000 0.2200 / 0.2506 0.8026 / 1.1040
199 42336 / 169000 0.2390 / 0.2505 0.8072 / 1.0995
200 42597 / 170000 0.2610 / 0.2506 0.8119 / 1.0941
201 42823 / 171000 0.2260 / 0.2504 0.8167 / 1.0904
202 43088 / 172000 0.2650 / 0.2505 0.8214 / 1.0849
203 43337 / 173000 0.2490 / 0.2505 0.8261 / 1.0801
204 43600 / 174000 0.2630 / 0.2506 0.8307 / 1.0746
205 43877 / 175000 0.2770 / 0.2507 0.8354 / 1.0686
206 44222 / 176000 0.3450 / 0.2513 0.8404 / 1.0600
207 44474 / 177000 0.2520 / 0.2513 0.8451 / 1.0551
208 44749 / 178000 0.2750 / 0.2514 0.8499 / 1.0493
209 45003 / 179000 0.2540 / 0.2514 0.8545 / 1.0443
210 45288 / 180000 0.2850 / 0.2516 0.8592 / 1.0380
211 45573 / 181000 0.2850 / 0.2518 0.8639 / 1.0318
212 45800 / 182000 0.2270 / 0.2516 0.8686 / 1.0279
213 46022 / 183000 0.2220 / 0.2515 0.8732 / 1.0242
214 46281 / 184000 0.2590 / 0.2515 0.8779 / 1.0190
215 46527 / 185000 0.2460 / 0.2515 0.8827 / 1.0144
216 46827 / 186000 0.3000 / 0.2518 0.8874 / 1.0077
217 47101 / 187000 0.2740 / 0.2519 0.8922 / 1.0020
218 47353 / 188000 0.2520 / 0.2519 0.8968 / 0.9971
219 47594 / 189000 0.2410 / 0.2518 0.9015 / 0.9926
220 47798 / 190000 0.2040 / 0.2516 0.9061 / 0.9895
221 48016 / 191000 0.2180 / 0.2514 0.9106 / 0.9858
222 48251 / 192000 0.2350 / 0.2513 0.9153 / 0.9816
223 48490 / 193000 0.2390 / 0.2512 0.9198 / 0.9771
224 48784 / 194000 0.2940 / 0.2515 0.9245 / 0.9706
225 49047 / 195000 0.2630 / 0.2515 0.9292 / 0.9653
226 49291 / 196000 0.2440 / 0.2515 0.9339 / 0.9608
227 49570 / 197000 0.2790 / 0.2516 0.9387 / 0.9550
228 49727 / 198000 0.1570 / 0.2511 0.9432 / 0.9536
229 50000 / 199000 0.2730 / 0.2513 0.9479 / 0.9479
230 50189 / 200000 0.1890 / 0.2509 0.9523 / 0.9452
231 50391 / 201000 0.2020 / 0.2507 0.9579 / 0.9431
232 50612 / 202000 0.2210 / 0.2506 0.9628 / 0.9395
233 50873 / 203000 0.2610 / 0.2506 0.9674 / 0.9342
234 51131 / 204000 0.2580 / 0.2506 0.9722 / 0.9292
235 51500 / 205000 0.3690 / 0.2512 0.9770 / 0.9201
236 51778 / 206000 0.2780 / 0.2513 0.9817 / 0.9143
237 52007 / 207000 0.2290 / 0.2512 0.9863 / 0.9101
238 52358 / 208000 0.3510 / 0.2517 0.9912 / 0.9019
239 52676 / 209000 0.3180 / 0.2520 0.9960 / 0.8948
240 52923 / 210000 0.2470 / 0.2520 1.0006 / 0.8901
241 53100 / 211000 0.1770 / 0.2517 1.0051 / 0.8878
242 53294 / 212000 0.1940 / 0.2514 1.0095 / 0.8847
243 53569 / 213000 0.2750 / 0.2515 1.0142 / 0.8791
244 53778 / 214000 0.2090 / 0.2513 1.0187 / 0.8756
245 53994 / 215000 0.2160 / 0.2511 1.0235 / 0.8720
246 54251 / 216000 0.2570 / 0.2512 1.0281 / 0.8670
247 54470 / 217000 0.2190 / 0.2510 1.0327 / 0.8632
248 54667 / 218000 0.1970 / 0.2508 1.0374 / 0.8603
249 54938 / 219000 0.2710 / 0.2509 1.0420 / 0.8547
250 55126 / 220000 0.1880 / 0.2506 1.0464 / 0.8518
251 55390 / 221000 0.2640 / 0.2506 1.0511 / 0.8466
252 55642 / 222000 0.2520 / 0.2506 1.0559 / 0.8418
253 55930 / 223000 0.2880 / 0.2508 1.0605 / 0.8356
254 56148 / 224000 0.2180 / 0.2507 1.0650 / 0.8318
255 56322 / 225000 0.1740 / 0.2503 1.0695 / 0.8294
256 56611 / 226000 0.2890 / 0.2505 1.0742 / 0.8233
257 56925 / 227000 0.3140 / 0.2508 1.0789 / 0.8164
258 57148 / 228000 0.2230 / 0.2506 1.0837 / 0.8126
259 57413 / 229000 0.2650 / 0.2507 1.0883 / 0.8073
260 57623 / 230000 0.2100 / 0.2505 1.0929 / 0.8038
261 57871 / 231000 0.2480 / 0.2505 1.0985 / 0.7997
262 58118 / 232000 0.2470 / 0.2505 1.1031 / 0.7950
263 58444 / 233000 0.3260 / 0.2508 1.1079 / 0.7878
264 58673 / 234000 0.2290 / 0.2507 1.1125 / 0.7836
265 58946 / 235000 0.2730 / 0.2508 1.1173 / 0.7781
266 59136 / 236000 0.1900 / 0.2506 1.1217 / 0.7751
267 59408 / 237000 0.2720 / 0.2507 1.1263 / 0.7696
268 59631 / 238000 0.2230 / 0.2506 1.1309 / 0.7656
269 59917 / 239000 0.2860 / 0.2507 1.1355 / 0.7596
270 60192 / 240000 0.2750 / 0.2508 1.1403 / 0.7541
271 60465 / 241000 0.2730 / 0.2509 1.1450 / 0.7487
272 60778 / 242000 0.3130 / 0.2511 1.1499 / 0.7421
273 61071 / 243000 0.2930 / 0.2513 1.1546 / 0.7360
274 61365 / 244000 0.2940 / 0.2515 1.1593 / 0.7299
275 61524 / 245000 0.1590 / 0.2511 1.1636 / 0.7277
276 61811 / 246000 0.2870 / 0.2513 1.1683 / 0.7218
277 62094 / 247000 0.2830 / 0.2514 1.1730 / 0.7161
278 62329 / 248000 0.2350 / 0.2513 1.1779 / 0.7119
279 62518 / 249000 0.1890 / 0.2511 1.1823 / 0.7089
280 62763 / 250000 0.2450 / 0.2511 1.1868 / 0.7041
281 63014 / 251000 0.2510 / 0.2511 1.1914 / 0.6993
282 63185 / 252000 0.1710 / 0.2507 1.1959 / 0.6968
283 63436 / 253000 0.2510 / 0.2507 1.2007 / 0.6920
284 63706 / 254000 0.2700 / 0.2508 1.2054 / 0.6867
285 63862 / 255000 0.1560 / 0.2504 1.2098 / 0.6846
286 64162 / 256000 0.3000 / 0.2506 1.2146 / 0.6784
287 64542 / 257000 0.3800 / 0.2511 1.2195 / 0.6700
288 64857 / 258000 0.3150 / 0.2514 1.2243 / 0.6634
289 65075 / 259000 0.2180 / 0.2513 1.2289 / 0.6595
290 65382 / 260000 0.3070 / 0.2515 1.2336 / 0.6532
291 65621 / 261000 0.2390 / 0.2514 1.2383 / 0.6487
292 65808 / 262000 0.1870 / 0.2512 1.2428 / 0.6457
293 66007 / 263000 0.1990 / 0.2510 1.2474 / 0.6424
294 66342 / 264000 0.3350 / 0.2513 1.2523 / 0.6353
295 66534 / 265000 0.1920 / 0.2511 1.2567 / 0.6321
296 66814 / 266000 0.2800 / 0.2512 1.2614 / 0.6265
297 67047 / 267000 0.2330 / 0.2511 1.2660 / 0.6222
298 67282 / 268000 0.2350 / 0.2511 1.2705 / 0.6178
299 67613 / 269000 0.3310 / 0.2513 1.2752 / 0.6109
300 67798 / 270000 0.1850 / 0.2511 1.2797 / 0.6078
301 68054 / 271000 0.2560 / 0.2511 1.2843 / 0.6029
302 68215 / 272000 0.1610 / 0.2508 1.2887 / 0.6005
303 68377 / 273000 0.1620 / 0.2505 1.2931 / 0.5980
304 68655 / 274000 0.2780 / 0.2506 1.2977 / 0.5925
305 68873 / 275000 0.2180 / 0.2504 1.3024 / 0.5886
306 69164 / 276000 0.2910 / 0.2506 1.3070 / 0.5827
307 69403 / 277000 0.2390 / 0.2506 1.3114 / 0.5782
308 69588 / 278000 0.1850 / 0.2503 1.3159 / 0.5751
309 69815 / 279000 0.2270 / 0.2502 1.3203 / 0.5709
310 70098 / 280000 0.2830 / 0.2503 1.3250 / 0.5652
311 70264 / 281000 0.1660 / 0.2500 1.3293 / 0.5626
312 70509 / 282000 0.2450 / 0.2500 1.3338 / 0.5579
313 70709 / 283000 0.2000 / 0.2499 1.3382 / 0.5543
314 70971 / 284000 0.2620 / 0.2499 1.3428 / 0.5492
315 71186 / 285000 0.2150 / 0.2498 1.3472 / 0.5453
316 71441 / 286000 0.2550 / 0.2498 1.3517 / 0.5404
317 71643 / 287000 0.2020 / 0.2496 1.3562 / 0.5368
318 71873 / 288000 0.2300 / 0.2496 1.3607 / 0.5325
319 72164 / 289000 0.2910 / 0.2497 1.3654 / 0.5267
320 72506 / 290000 0.3420 / 0.2500 1.3701 / 0.5195
321 72749 / 291000 0.2430 / 0.2500 1.3747 / 0.5149
322 73005 / 292000 0.2560 / 0.2500 1.3793 / 0.5100
323 73244 / 293000 0.2390 / 0.2500 1.3840 / 0.5056
324 73436 / 294000 0.1920 / 0.2498 1.3885 / 0.5023
325 73667 / 295000 0.2310 / 0.2497 1.3930 / 0.4979
326 73860 / 296000 0.1930 / 0.2495 1.3976 / 0.4946
327 74108 / 297000 0.2480 / 0.2495 1.4022 / 0.4899
328 74297 / 298000 0.1890 / 0.2493 1.4066 / 0.4866
329 74581 / 299000 0.2840 / 0.2494 1.4113 / 0.4810
330 74866 / 300000 0.2850 / 0.2496 1.4160 / 0.4754
331 75198 / 301000 0.3320 / 0.2498 1.4208 / 0.4686
332 75489 / 302000 0.2910 / 0.2500 1.4254 / 0.4628
333 75784 / 303000 0.2950 / 0.2501 1.4300 / 0.4570
334 76039 / 304000 0.2550 / 0.2501 1.4347 / 0.4521
335 76337 / 305000 0.2980 / 0.2503 1.4393 / 0.4462
336 76626 / 306000 0.2890 / 0.2504 1.4440 / 0.4405
337 76868 / 307000 0.2420 / 0.2504 1.4486 / 0.4359
338 77156 / 308000 0.2880 / 0.2505 1.4535 / 0.4303
339 77399 / 309000 0.2430 / 0.2505 1.4581 / 0.4258
340 77652 / 310000 0.2530 / 0.2505 1.4626 / 0.4209
341 77849 / 311000 0.1970 / 0.2503 1.4671 / 0.4175
342 78124 / 312000 0.2750 / 0.2504 1.4719 / 0.4121
343 78329 / 313000 0.2050 / 0.2503 1.4765 / 0.4085
344 78594 / 314000 0.2650 / 0.2503 1.4812 / 0.4034
345 78886 / 315000 0.2920 / 0.2504 1.4859 / 0.3977
346 79202 / 316000 0.3160 / 0.2506 1.4906 / 0.3914
347 79419 / 317000 0.2170 / 0.2505 1.4952 / 0.3875
348 79662 / 318000 0.2430 / 0.2505 1.4998 / 0.3829
349 79950 / 319000 0.2880 / 0.2506 1.5046 / 0.3773
350 80151 / 320000 0.2010 / 0.2505 1.5090 / 0.3737
351 80348 / 321000 0.1970 / 0.2503 1.5135 / 0.3702
352 80659 / 322000 0.3110 / 0.2505 1.5182 / 0.3640
353 80934 / 323000 0.2750 / 0.2506 1.5228 / 0.3587
354 81219 / 324000 0.2850 / 0.2507 1.5275 / 0.3532
355 81496 / 325000 0.2770 / 0.2508 1.5322 / 0.3479
356 81713 / 326000 0.2170 / 0.2507 1.5368 / 0.3439
357 82051 / 327000 0.3380 / 0.2509 1.5415 / 0.3372
358 82304 / 328000 0.2530 / 0.2509 1.5461 / 0.3324
359 82533 / 329000 0.2290 / 0.2509 1.5507 / 0.3282
360 82801 / 330000 0.2680 / 0.2509 1.5553 / 0.3231
361 82986 / 331000 0.1850 / 0.2507 1.5597 / 0.3198
362 83252 / 332000 0.2660 / 0.2508 1.5645 / 0.3147
363 83478 / 333000 0.2260 / 0.2507 1.5689 / 0.3105
364 83690 / 334000 0.2120 / 0.2506 1.5734 / 0.3066
365 83855 / 335000 0.1650 / 0.2503 1.5779 / 0.3038
366 84177 / 336000 0.3220 / 0.2505 1.5826 / 0.2975
367 84585 / 337000 0.4080 / 0.2510 1.5875 / 0.2893
368 84866 / 338000 0.2810 / 0.2511 1.5921 / 0.2839
369 85089 / 339000 0.2230 / 0.2510 1.5968 / 0.2798
370 85304 / 340000 0.2150 / 0.2509 1.6013 / 0.2759
371 85510 / 341000 0.2060 / 0.2508 1.6058 / 0.2721
372 85679 / 342000 0.1690 / 0.2505 1.6101 / 0.2691
373 86018 / 343000 0.3390 / 0.2508 1.6150 / 0.2625
374 86259 / 344000 0.2410 / 0.2508 1.6195 / 0.2580
375 86460 / 345000 0.2010 / 0.2506 1.6239 / 0.2543
376 86584 / 346000 0.1240 / 0.2502 1.6282 / 0.2523
377 86880 / 347000 0.2960 / 0.2504 1.6329 / 0.2466
378 87133 / 348000 0.2530 / 0.2504 1.6375 / 0.2418
379 87418 / 349000 0.2850 / 0.2505 1.6421 / 0.2363
380 87646 / 350000 0.2280 / 0.2504 1.6467 / 0.2321
381 87950 / 351000 0.3040 / 0.2506 1.6513 / 0.2262
382 88253 / 352000 0.3030 / 0.2507 1.6560 / 0.2204
383 88535 / 353000 0.2820 / 0.2508 1.6606 / 0.2150
384 88836 / 354000 0.3010 / 0.2509 1.6653 / 0.2093
385 89149 / 355000 0.3130 / 0.2511 1.6700 / 0.2033
386 89356 / 356000 0.2070 / 0.2510 1.6745 / 0.1995
387 89590 / 357000 0.2340 / 0.2510 1.6790 / 0.1951
388 89876 / 358000 0.2860 / 0.2511 1.6837 / 0.1897
389 90163 / 359000 0.2870 / 0.2512 1.6884 / 0.1842
390 90407 / 360000 0.2440 / 0.2511 1.6929 / 0.1796
391 90703 / 361000 0.2960 / 0.2513 1.6975 / 0.1740
392 90949 / 362000 0.2460 / 0.2512 1.7020 / 0.1694
393 91236 / 363000 0.2870 / 0.2513 1.7067 / 0.1639
394 91515 / 364000 0.2790 / 0.2514 1.7113 / 0.1587
395 91738 / 365000 0.2230 / 0.2513 1.7158 / 0.1545
396 91993 / 366000 0.2550 / 0.2513 1.7205 / 0.1498
397 92280 / 367000 0.2870 / 0.2514 1.7251 / 0.1443
398 92533 / 368000 0.2530 / 0.2514 1.7297 / 0.1396
399 92792 / 369000 0.2590 / 0.2515 1.7342 / 0.1347
400 93077 / 370000 0.2850 / 0.2516 1.7388 / 0.1293
401 93286 / 371000 0.2090 / 0.2514 1.7434 / 0.1255
402 93524 / 372000 0.2380 / 0.2514 1.7482 / 0.1211
403 93795 / 373000 0.2710 / 0.2515 1.7528 / 0.1160
404 94045 / 374000 0.2500 / 0.2515 1.7574 / 0.1113
405 94276 / 375000 0.2310 / 0.2514 1.7619 / 0.1070
406 94511 / 376000 0.2350 / 0.2514 1.7666 / 0.1026
407 94815 / 377000 0.3040 / 0.2515 1.7713 / 0.0969
408 95049 / 378000 0.2340 / 0.2515 1.7759 / 0.0925
409 95290 / 379000 0.2410 / 0.2514 1.7804 / 0.0880
410 95574 / 380000 0.2840 / 0.2515 1.7850 / 0.0827
411 95826 / 381000 0.2520 / 0.2515 1.7896 / 0.0780
412 96069 / 382000 0.2430 / 0.2515 1.7941 / 0.0734
413 96280 / 383000 0.2110 / 0.2514 1.7986 / 0.0695
414 96638 / 384000 0.3580 / 0.2517 1.8034 / 0.0627
415 96877 / 385000 0.2390 / 0.2516 1.8079 / 0.0583
416 97117 / 386000 0.2400 / 0.2516 1.8124 / 0.0538
417 97455 / 387000 0.3380 / 0.2518 1.8172 / 0.0475
418 97678 / 388000 0.2230 / 0.2517 1.8217 / 0.0433
419 97920 / 389000 0.2420 / 0.2517 1.8263 / 0.0388
420 98047 / 390000 0.1270 / 0.2514 1.8305 / 0.0365
421 98261 / 391000 0.2140 / 0.2513 1.8351 / 0.0325
422 98484 / 392000 0.2230 / 0.2512 1.8396 / 0.0283
423 98728 / 393000 0.2440 / 0.2512 1.8443 / 0.0238
424 98936 / 394000 0.2080 / 0.2511 1.8490 / 0.0199
425 99032 / 395000 0.0960 / 0.2507 1.8535 / 0.0181
426 99221 / 396000 0.1890 / 0.2506 1.8581 / 0.0146
427 99415 / 397000 0.1940 / 0.2504 1.8627 / 0.0110
428 99662 / 398000 0.2470 / 0.2504 1.8677 / 0.0063
429 99894 / 399000 0.2320 / 0.2504 1.8724 / 0.0020
430 100000 / 399632 0.1060 / 0.2502 1.8752 / 0.0000
431
432
433 ParaDRAM - NOTE: Computing the statistical properties of the Markov chain...
434
435 ParaDRAM - NOTE: Computing the final refined i.i.d. sample size...
436
437 ParaDRAM - NOTE: Generating the output sample file:
438 ParaDRAM - NOTE: /home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/himmelblau/himmelblau_run1_pid1_sample.txt
439
440 ParaDRAM - NOTE: Computing the statistical properties of the final output sample...
441
442
443 ParaDRAM - NOTE: Mission Accomplished.
444
445| 50%
446| 100% done in 0.065191 seconds.
This is the ParaDRAM class for generating instances of serial and parallel Delayed-Rejection Adaptive...
Definition: Paradram.m:18
function run(in self, in getLogFunc, in ndim)
Run the ParaDRAM sampler and return nothing.
function home()
Return a MATLAB string containing the absolute path to the system home directory.
function lib()
Return a scalar MATLAB string containing the path to the lib directory of the ParaMonte library packa...

Visualization of the example output























Final Remarks


If you believe this algorithm or its documentation can be improved, we appreciate your contribution and help to edit this page's documentation and source file on GitHub.
For details on the naming abbreviations, see this page.
For details on the naming conventions, see this page.
This software is distributed under the MIT license with additional terms outlined below.

  1. If you use any parts or concepts from this library to any extent, please acknowledge the usage by citing the relevant publications of the ParaMonte library.
  2. If you regenerate any parts/ideas from this library in a programming environment other than those currently supported by this ParaMonte library (i.e., other than C, C++, Fortran, MATLAB, Python, R), please also ask the end users to cite this original ParaMonte library.

This software is available to the public under a highly permissive license.
Help us justify its continued development and maintenance by acknowledging its benefit to society, distributing it, and contributing to it.

Author:
Amir Shahmoradi, May 16 2016, 9:03 AM, Oden Institute for Computational Engineering and Sciences (ICES), UT Austin

Member Function Documentation

◆ getppm()

function Paradram::getppm ( in  self)

Generate and return the relevant Post-Processing Message (ppm) for the current ParaMonte sampler to be displayed on the MATLAB command line after the sampling is complete.

This is a private dynamic method of the pm.sampling.Paradram sampler class.
This method is not meant to be used or accessed by the end users.

Parameters
[in]self: The input parent object of class pm.sampling.Sampler which is implicitly passed to this dynamic method (not by the user).
Note
This is an internal method of the class pm.sampling.Sampler.


Final Remarks


If you believe this algorithm or its documentation can be improved, we appreciate your contribution and help to edit this page's documentation and source file on GitHub.
For details on the naming abbreviations, see this page.
For details on the naming conventions, see this page.
This software is distributed under the MIT license with additional terms outlined below.

  1. If you use any parts or concepts from this library to any extent, please acknowledge the usage by citing the relevant publications of the ParaMonte library.
  2. If you regenerate any parts/ideas from this library in a programming environment other than those currently supported by this ParaMonte library (i.e., other than C, C++, Fortran, MATLAB, Python, R), please also ask the end users to cite this original ParaMonte library.

This software is available to the public under a highly permissive license.
Help us justify its continued development and maintenance by acknowledging its benefit to society, distributing it, and contributing to it.

Author:
Amir Shahmoradi, September 1, 2012, 12:00 AM, National Institute for Fusion Studies, The University of Texas at Austin

◆ readChainMarkov()

function Paradram::readChainMarkov ( in  self,
in  pattern,
in  sep 
)

Return a list of objects of class pm.sampling.FileContentsChainDRAM containing the content(s) of the ParaMonte simulation output chain file(s) whose path(s) match the specified input pattern or the simulation specification sampler.spec.outputFileName.

Parameters
[in]self: The input/output parent object of class pm.sampling.Paradram which is implicitly passed to this dynamic method (not by the user).
[in]pattern: See the documentation of the corresponding argument of the constructor of the method pm.sampling.Sampler.readChain.
(optional, The default is set by pm.sampling.Sampler.readChain)
[in]sep: See the documentation of the corresponding argument of the constructor of the method pm.sampling.Sampler.readChain.
(optional, The default is set by pm.sampling.Sampler.readChain)
Returns
chainMarkovList : The output cell array of objects of class pm.sampling.FileContentsChainDRAM, each of which corresponds to the contents of a unique chain file.
Try doc pm.sampling.FileContentsChainDRAM to see the documentation of the contents of the objects of the output list.


Possible calling interfaces

sampler = pm.sampling.Paradram();
chainMarkovList = sampler.readChainMarkov();
chainMarkovList = sampler.readChainMarkov([]);
chainMarkovList = sampler.readChainMarkov(pattern);
chainMarkovList = sampler.readChainMarkov([], []);
chainMarkovList = sampler.readChainMarkov(pattern, []);
chainMarkovList = sampler.readChainMarkov(pattern, sep);
Warning
Avoid using this routine for very large compact chains.
Reading the full Markov chain of large-scale simulation problems can be extremely memory-intensive without any potential benefits.
This method is to be only used for post-processing of the output chain file(s) of an already finished simulation. It is not meant to be called by all processes in parallel mode, although it is possible.
Note
This routine is identical to pm.sampling.Sampler.readChain method, except for the fact that upon reading the output chain files, it will also convert the chain contents from the default efficient compact format stored in the file to the full verbose Markov chain format.


Example usage

1cd(fileparts(mfilename('fullpath'))); % Change working directory to source code directory.
2addpath('../../../../'); % Add the ParaMonte library root directory to the search path.
3
4sampler = pm.sampling.Paradram();
5sampler.spec.outputFileName = "./out/run";
6sampler.spec.outputChainSize = 3000;
7sampler.run ( @(x) -sum((x - [-5; 5]).^2) ...
8 , 2 ...
9 );
10chain = sampler.readChainMarkov();
11chain = chain{1};
12head(chain.df)
13
14p = pm.vis.PlotScatter(chain.df, "coly", "proposalAdaptation");
15p.make("axes", {"yscale", "log"});
16p.savefig("readChainMarkov.proposalAdaptation.png", "-m3");
17
18p = pm.vis.PlotLineScatter(chain.df, "colx", chain.slfc + 1, "coly", chain.slfc + 2);
19p.make("colc", "sampleLogFunc");
20p.savefig("readChainMarkov.domain.png", "-m3");
21
22p = pm.vis.TileLine(chain.df, "tileshape", [2, 1]);
23p.make("coly", chain.slfc + [1 : 2], "colc", "sampleLogFunc");
24p.savefig("readChainMarkov.traceplot.png", "-m3");
This is the PlotScatter class for generating instances of 2-dimensional Scatter Plot visualizations b...
Definition: PlotScatter.m:30
1 ParaDRAM - NOTE: Setting up the MATLAB programming language environment for a ParaDRAM simulation...
2 ParaDRAM - NOTE:
3 ParaDRAM - NOTE: The user-specified internal input file for ParaDRAM specifications detected.
4 ParaDRAM - NOTE: All ParaDRAM simulation specifications will be read from the specified internal namelist file...
5
6 ParaDRAM - NOTE: Variable `outputFileName` detected among the user-supplied specifications of the ParaDRAM sampler:
7 ParaDRAM - NOTE: "./out/run"
8 ParaDRAM - NOTE:
9 ParaDRAM - NOTE: Path to the current working directory:
10 ParaDRAM - NOTE: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/readChainMarkov"
11 ParaDRAM - NOTE:
12 ParaDRAM - NOTE: Generating the requested directory for the ParaDRAM simulation output files:
13 ParaDRAM - NOTE: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/readChainMarkov/./out/"
14 ParaDRAM - NOTE:
15 ParaDRAM - NOTE: 3 counts of preexisting complete simulation runs with the same name prefix were detected.
16 ParaDRAM - NOTE:
17 ParaDRAM - NOTE: Checking for simulation restart possibility...
18 ParaDRAM - NOTE:
19 ParaDRAM - NOTE: Starting a fresh simulation run #4 from the most recent completed simulation...
20 ParaDRAM - NOTE:
21 ParaDRAM - NOTE: Running the simulation in serial on 1 process...
22 ParaDRAM - NOTE:
23 ParaDRAM - NOTE: Generating the new output report file:
24 ParaDRAM - NOTE:
25 ParaDRAM - NOTE: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/readChainMarkov/./out/run_run4_pid1_report.txt"
26 ParaDRAM - NOTE:
27 ParaDRAM - NOTE: Please see the output *_pid1_report.txt and *_pid1_progress.txt files for further realtime simulation details...
28
29 Accepted/Total Func. Call Dynamic/Overall Acc. Rate Elapsed/Remained Time [s]
30 ========================= ========================= =========================
31
32 609 / 1000 0.6090 / 0.6090 0.0068 / 0.0268
33 1180 / 2000 0.5710 / 0.5900 0.0122 / 0.0188
34 1756 / 3000 0.5760 / 0.5853 0.0176 / 0.0125
35 2343 / 4000 0.5870 / 0.5857 0.0227 / 0.0064
36 2919 / 5000 0.5760 / 0.5838 0.0278 / 0.0008
37 3000 / 5143 0.0810 / 0.5833 0.0285 / 0.0000
38
39
40 ParaDRAM - NOTE: Computing the statistical properties of the Markov chain...
41
42 ParaDRAM - NOTE: Computing the final refined i.i.d. sample size...
43
44 ParaDRAM - NOTE: Generating the output sample file:
45 ParaDRAM - NOTE: /home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/readChainMarkov/./out/run_run4_pid1_sample.txt
46
47 ParaDRAM - NOTE: Computing the statistical properties of the final output sample...
48
49
50 ParaDRAM - NOTE: Mission Accomplished.
51
52
53Use the following object methods to read the generated basic output files:
54
55 sampler.readChain() % Return a list of the contents of the output chain file(s).
56 sampler.readSample() % Return a list of i.i.d. sample(s) from the output sample file(s).
57 sampler.readReport() % Return a list of summary report(s) from the output report file(s).
58 sampler.readRestart() % Return a list of the contents of the ASCII output restart file(s).
59 sampler.readProgress() % Return a list of the contents of the output progress file(s).
60
61Use the following object method to read the generated basic output chain file and and unroll the contents as a Markov Chain:
62
63 sampler.readChainMarkov() % Return a list of the unrolled contents of the output chain file(s) as Markov Chains.
64
65Beware that the chain unrolling significantly increases the chain size and can be very slow.
66It can potentially overflow the computer RAM for high-dimensional target density functions.
67
68For more information and examples on the usage, visit:
69
70 https://www.cdslab.org/paramonte
71
72
734 files were detected matching pattern: "./out/run"
74processing file: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/readChainMarkov/out/run_run4_pid1_chain.txt"
75reading file: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/readChainMarkov/out/run_run4_pid1_chain.txt"
76done in 0.035809 seconds.
77ncol = 9, nrow = 3000
78adding the stats components...computing the sample correlation matrix...done in 0.090981 seconds.
79computing the sample covariance matrix...done in 0.030562 seconds.
80computing the sample autocorrelation...done in 0.158750 seconds.
81done in 0.087075 seconds.
82computing the sample correlation matrix...done in 0.011630 seconds.
83computing the sample covariance matrix...done in 0.007385 seconds.
84computing the sample autocorrelation...done in 0.025510 seconds.
85adding the visualization components...done in 1.069900 seconds.
86adding the ParaDRAM-specific visualization components...adding DRAM-specific visualizations to the chain object...done in 0.042881 seconds.
87processing file: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/readChainMarkov/out/run_run3_pid1_chain.txt"
88reading file: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/readChainMarkov/out/run_run3_pid1_chain.txt"
89done in 0.021096 seconds.
90ncol = 9, nrow = 3000
91adding the stats components...computing the sample correlation matrix...done in 0.011638 seconds.
92computing the sample covariance matrix...done in 0.004599 seconds.
93computing the sample autocorrelation...done in 0.026851 seconds.
94done in 0.046436 seconds.
95computing the sample correlation matrix...done in 0.004680 seconds.
96computing the sample covariance matrix...done in 0.003281 seconds.
97computing the sample autocorrelation...done in 0.019620 seconds.
98adding the visualization components...done in 0.357770 seconds.
99adding the ParaDRAM-specific visualization components...adding DRAM-specific visualizations to the chain object...done in 0.021560 seconds.
100processing file: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/readChainMarkov/out/run_run2_pid1_chain.txt"
101reading file: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/readChainMarkov/out/run_run2_pid1_chain.txt"
102done in 0.034319 seconds.
103ncol = 9, nrow = 3000
104adding the stats components...computing the sample correlation matrix...done in 0.013120 seconds.
105computing the sample covariance matrix...done in 0.004514 seconds.
106computing the sample autocorrelation...done in 0.025124 seconds.
107done in 0.033488 seconds.
108computing the sample correlation matrix...done in 0.006302 seconds.
109computing the sample covariance matrix...done in 0.005268 seconds.
110computing the sample autocorrelation...done in 0.023764 seconds.
111adding the visualization components...done in 0.342800 seconds.
112adding the ParaDRAM-specific visualization components...adding DRAM-specific visualizations to the chain object...done in 0.027261 seconds.
113processing file: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/readChainMarkov/out/run_run1_pid1_chain.txt"
114reading file: "/home/amir/git/paramonte/external/paramonted/doxygen/bld/linux/amd64/csid/csvs/native/lib/mem/serial/matlab/checking/pkg/example/sampling/Paradram/readChainMarkov/out/run_run1_pid1_chain.txt"
115done in 0.012995 seconds.
116ncol = 9, nrow = 3000
117adding the stats components...computing the sample correlation matrix...done in 0.009447 seconds.
118computing the sample covariance matrix...done in 0.002928 seconds.
119computing the sample autocorrelation...done in 0.019611 seconds.
120done in 0.033839 seconds.
121computing the sample correlation matrix...done in 0.005856 seconds.
122computing the sample covariance matrix...done in 0.003767 seconds.
123computing the sample autocorrelation...done in 0.020161 seconds.
124adding the visualization components...done in 0.299970 seconds.
125adding the ParaDRAM-specific visualization components...adding DRAM-specific visualizations to the chain object...done in 0.020134 seconds.
126 processID delayedRejectionStage meanAcceptanceRate proposalAdaptation burninLocation sampleWeight sampleLogFunc sampleState1 sampleState2
127 _________ _____________________ __________________ __________________ ______________ ____________ _________________ ____________________ ___________________
128 1 0 0.250000009666267 0 1 1 -50 0 0
129 1 0 0.250000009666267 0 1 1 -50 0 0
130 1 0 0.250000009666267 0 1 1 -50 0 0
131 1 0 0.250000009666267 0 1 1 -50 0 0
132 1 0 0.342882473898846 0 1 1 -50.3362949891696 -0.32141397210834 -0.333584889057882
133 1 0 0.42093111931257 0.967499438460934 1 1 -50.2156223903078 -0.00626487809246379 -0.0277462070529085
134 1 0 0.42093111931257 0.967499438460934 1 1 -50.2156223903078 -0.00626487809246379 -0.0277462070529085
135 1 0 0.42093111931257 0.967499438460934 1 1 -50.2156223903078 -0.00626487809246379 -0.0277462070529085
136| 50%
137| 100% done in 0.050860 seconds.
function list()
Return a list of MATLAB strings containing the names of OS platforms supported by the ParaMonte MATLA...
function readChainMarkov(in self, in pattern, in sep)
Return a list of objects of class pm.sampling.FileContentsChainDRAM containing the content(s) of the ...

Visualization of the example output





Final Remarks


If you believe this algorithm or its documentation can be improved, we appreciate your contribution and help to edit this page's documentation and source file on GitHub.
For details on the naming abbreviations, see this page.
For details on the naming conventions, see this page.
This software is distributed under the MIT license with additional terms outlined below.

  1. If you use any parts or concepts from this library to any extent, please acknowledge the usage by citing the relevant publications of the ParaMonte library.
  2. If you regenerate any parts/ideas from this library in a programming environment other than those currently supported by this ParaMonte library (i.e., other than C, C++, Fortran, MATLAB, Python, R), please also ask the end users to cite this original ParaMonte library.

This software is available to the public under a highly permissive license.
Help us justify its continued development and maintenance by acknowledging its benefit to society, distributing it, and contributing to it.

Author:
Joshua Alexander Osborne, May 21 2024, 12:06 AM, University of Texas at Arlington
Amir Shahmoradi, May 16 2016, 9:03 AM, Oden Institute for Computational Engineering and Sciences (ICES), UT Austin

◆ run()

function Paradram::run ( in  self,
in  getLogFunc,
in  ndim 
)

Run the ParaDRAM sampler and return nothing.

For example usage, see the documentation of the parent class of this method pm.sampler.Paradram.

Parameters
[in,out]self: The input/output parent object of class pm.sampling.Paradram which is implicitly passed to this dynamic method (not by the user).
[in]getLogFunc: The input MATLAB function handle or anonymous (lambda) function containing the implementation of the objective function to be sampled.
This user-specified function must have the following interface,
function logFunc = getLogFunc(state)
end
where,
  1. the input argument state is a vector of type MATLAB double of size ndim representing a single point from within the ndim dimensional domain of the mathematical object function to be explored.
  2. the output argument logFunc is a scalar of the same type as the input state containing the natural logarithm of the objective function at the specified input state within its domain.
[in]ndim: The input scalar positive-valued whole-number representing the number of dimensions of the domain of the user-specified objective function in the input getLogFunc().


Possible calling interfaces

sampler = pm.sampling.Paradram();
sampler.run(getLogFunc, ndim);


Final Remarks


If you believe this algorithm or its documentation can be improved, we appreciate your contribution and help to edit this page's documentation and source file on GitHub.
For details on the naming abbreviations, see this page.
For details on the naming conventions, see this page.
This software is distributed under the MIT license with additional terms outlined below.

  1. If you use any parts or concepts from this library to any extent, please acknowledge the usage by citing the relevant publications of the ParaMonte library.
  2. If you regenerate any parts/ideas from this library in a programming environment other than those currently supported by this ParaMonte library (i.e., other than C, C++, Fortran, MATLAB, Python, R), please also ask the end users to cite this original ParaMonte library.

This software is available to the public under a highly permissive license.
Help us justify its continued development and maintenance by acknowledging its benefit to society, distributing it, and contributing to it.

Author:
Amir Shahmoradi, September 1, 2012, 12:00 AM, National Institute for Fusion Studies, The University of Texas at Austin

The documentation for this class was generated from the following file: