'rastrigin':'Details about the function can be found `here <https://www.sfu.ca/~ssurjano/rastr.html>`_ (note, the input space has been rescaled and shifted to have the minimum at [1,1,1,1], instead of [0,0,0,0]',
'sixhumpcamel':'Details about the function can be found `here <https://www.sfu.ca/~ssurjano/camel6.html>`_.',
'sphere':'Details about the function can be found `here <https://www.sfu.ca/~ssurjano/spheref.html>`_.'};
'Robotarm':'Details about the function can be found `here <https://www.sfu.ca/~ssurjano/robot.html>`_.',
'Gramacylee':'Details about the function can be found `here <https://www.sfu.ca/~ssurjano/grlee12.html>`_.',
'Planarinversedynamicsii':'Approximation of the second motor\'s torque in the inverse dynamics of a Planar 2D Arm. Details are given at the bottom of this page.',
'Planarinversedynamicsi':'Approximation of the first motor\'s torque in the inverse dynamics of a Planar 2D Arm. Details are given at the bottom of this page.',
'Otlcircuit':'Details about the function can be found `here <https://www.sfu.ca/~ssurjano/otlcircuit.html>`_.'};
notes={'Rastrigin':"Details about the function can be found `here <https://www.sfu.ca/~ssurjano/rastr.html>`_.",
'Pistonsimulation':"Details about the function can be found `here <https://www.sfu.ca/~ssurjano/piston.html>`_.",
'Robotarm':"Details about the function can be found `here <https://www.sfu.ca/~ssurjano/robot.html>`_.",
'Gramacylee':"Details about the function can be found `here <https://www.sfu.ca/~ssurjano/grlee12.html>`_.",
'Planarinversedynamicsii':"Approximation of the second motor\'s torque in the inverse dynamics of a Planar 2D Arm. Details are given at the bottom of this page.",
'Planarinversedynamicsi':"Approximation of the first motor\'s torque in the inverse dynamics of a Planar 2D Arm. Details are given at the bottom of this page.",
'Otlcircuit':"Details about the function can be found `here <https://www.sfu.ca/~ssurjano/otlcircuit.html>`_."};
res="""Inverse Dynamics of a Planar 2D Arm (I \& II): for :math:`\ddot{q}\in[-2\pi; 2\pi]^2`; :math:`\dot{q}\in[-2\pi; 2\pi]^2`; :math:`q\in[-pi; pi]^2`
.. math::
res="""Inverse Dynamics of a Planar 2D Arm (I \& II): for :math:`\ddot{q}\in[-2\pi; 2\pi]^2`; :math:`\dot{q}\in[-2\pi; 2\pi]^2`; :math:`q\in[-pi; pi]^2`\n\n.. math::
rst_file.write("- We compare to GPy (https://github.com/SheffieldML/GPy) and libGP (https://github.com/mblum/libgp)\n")
rst_file.write("- Mean Squared Error: lower is better\n")
rst_file.write("- Learning time: lower is better\n")
rst_file.write("- Querying time (for 1 by 1 query points): lower is better\n\n")
rst_file.write("- In each replicate, all the variants (see below for the variants available) are using exactly the same data\n\n")
rst_file.write("- The data are uniformly sampled and some noise is added (according to the variance of the data).\n\n")
rst_file.write("Naming convention\n")
rst_file.write("------------------\n\n")
rst_file.write("- GP-SE-Full-Rprop: Limbo with Squared Exponential kernel where the signal noise, signal variance and kernel lengthscales are optimized via Maximum Likelihood Estimation with the Rprop optimizer (default for limbo)\n")
rst_file.write("- GP-SE-Rprop: Limbo with Squared Exponential kernel where the signal variance and kernel lengthscales are optimized via Maximum Likelihood Estimation with the Rprop optimizer (default for limbo) and where the signal noise is not optimized but set to a default value: 0.01\n")
rst_file.write("- libGP-SE-Full: libGP with Squared Exponential kernel where the signal noise, signal variance and kernel lengthscales are optimized via Maximum Likelihood Estimation with the Rprop optimizer (the only one that libGP has)\n")
rst_file.write("- GPy: GPy with Squared Exponential kernel where the signal noise, signal variance and kernel lengthscales are optimized via Maximum Likelihood Estimation (with the L-BFGS-B optimizer --- `check scipy.optimize.fmin_l_bfgs_b= <https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fmin_l_bfgs_b.html>`_)\n\n")