16#include <yarp/sig/Vector.h> 
   17#include <yarp/os/Property.h> 
   18#include <yarp/math/Math.h> 
   19#include <yarp/math/Rand.h> 
   20#include <yarp/os/SystemClock.h> 
   22#define MIN(a, b)   ((a < b) ? a : b) 
   26#define NOISE_MIN  -0.05 
   31using namespace yarp::os;
 
   32using namespace yarp::sig;
 
   33using namespace yarp::math;
 
   39  double a = std::exp(-10 * 
x1);
 
   40  double b = std::exp(-50 * 
x2);
 
   41  double c = 1.25 * std::exp(-5 * (
x1 + 
x2));
 
   42  return (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
 
 
   46  return std::sin(
x1 + 
x2);
 
 
   50  for(
size_t i = 0; i < 
MIN(v1.size(), v2.size()); i++) {
 
   51    v2[i] = v1[i] * v2[i];
 
 
   57  for(
size_t i = 0; i < v.size(); i++) {
 
   58    ret[i] = (d == 0.) ? v[i] : v[i] / d;
 
 
   65  std::pair<Vector, Vector> sample;
 
   66  sample.first.resize(2);
 
   67  sample.second.resize(2);
 
   68  sample.first[0] = Rand::scalar(-1, +1);
 
   69  sample.first[1] = Rand::scalar(-1, +1);
 
   70  sample.second[0] = 
sin2d(sample.first[0], sample.first[1]);
 
   71  sample.second[1] = 
cross(sample.first[0], sample.first[1]);
 
 
   88int main(
int argc, 
char** argv) {
 
   96  double trtrtime = 0.0;
 
   97  double trtetime = 0.0;
 
   98  double mctrtime = 0.0;
 
   99  double mctetime = 0.0; 
 
  101  if(argc > 1) sscanf(argv[1], 
"%d", &nrf);
 
  108  std::cout << 
"LearningMachine library example (portable)" << std::endl;
 
  111  std::string name(
"RLS");
 
  114  p.put(
"dom", Value(nrf));
 
  115  p.put(
"cod", Value(2));
 
  116  p.put(
"lambda", Value(0.5));
 
  123  p.put(
"dom", Value(2));
 
  124  p.put(
"cod", Value(nrf));
 
  125  p.put(
"gamma", Value(16.0));
 
  127  std::cout << 
"Transformer:" << std::endl << tp.
getWrapped().
getInfo() << std::endl;
 
  141    Vector noisyOutput = sample.second + Rand::vector(noise_min, noise_max);
 
  144    tic = yarp::os::SystemClock::nowSystem();
 
  146    trtrtime += (yarp::os::SystemClock::nowSystem() - tic);
 
  149    tic = yarp::os::SystemClock::nowSystem();
 
  154    mctrtime += (yarp::os::SystemClock::nowSystem() - tic);
 
  158    trainMSE = trainMSE + diff;
 
  161  std::cout << 
"Train MSE: " << trainMSE.toString() << std::endl;
 
  162  std::cout << 
"Train Transformer Time per Sample: " << (trtrtime / 
NO_TRAIN) << std::endl;
 
  163  std::cout << 
"Train Machine Time per Sample: " << (mctrtime / 
NO_TRAIN) << std::endl;
 
  164  std::cout << 
"Combined Time per Sample: " << ((trtrtime + mctrtime) / 
NO_TRAIN) << std::endl;
 
  166  std::cout << std::endl;
 
  167  std::cout << 
"Saving machine portable to file 'mp.txt'...";
 
  169  std::cout << ((
ok) ? 
"ok!" : 
"failed :(") << std::endl;
 
  171  std::cout << 
"Saving transformer portable to file 'tp.txt'...";
 
  173  std::cout << ((
ok) ? 
"ok!" : 
"failed :(") << std::endl;
 
  175  std::cout << 
"Loading machine portable from file 'mp.txt'...";
 
  177  std::cout << ((
ok) ? 
"ok!" : 
"failed :(") << std::endl;
 
  179  std::cout << 
"Loading transformer portable from file 'tp.txt'...";
 
  181  std::cout << ((
ok) ? 
"ok!" : 
"failed :(") << std::endl;
 
  182  std::cout << std::endl;
 
  186  for(
int i = 0; i < 
NO_TEST; i++) {
 
  191    tic = yarp::os::SystemClock::nowSystem();
 
  193    trtetime += (yarp::os::SystemClock::nowSystem() - tic);
 
  196    tic = yarp::os::SystemClock::nowSystem();
 
  198    mctetime += (yarp::os::SystemClock::nowSystem() - tic);
 
  202    testMSE = testMSE + diff;
 
  205  std::cout << 
"Test MSE: " << testMSE.toString() << std::endl;
 
  206  std::cout << 
"Test Transformer Time per Sample: " << (trtetime / 
NO_TEST) << std::endl;
 
  207  std::cout << 
"Test Machine Time per Sample: " << (mctetime / 
NO_TEST) << std::endl;
 
  208  std::cout << 
"Combined Time per Sample: " << ((trtetime + mctetime) / 
NO_TEST) << std::endl;
 
 
virtual bool configure(yarp::os::Searchable &config)
Change parameters.
 
virtual Prediction predict(const yarp::sig::Vector &input)=0
Ask the learning machine to predict the output for a given input.
 
virtual std::string getInfo()
Asks the learning machine to return a string containing information on its operation so far.
 
virtual void feedSample(const yarp::sig::Vector &input, const yarp::sig::Vector &output)=0
Provide the learning machine with an example of the desired mapping.
 
T & getWrapped() const
The accessor for the wrapped object.
 
bool writeToFile(std::string filename)
Writes a wrapped object to a file.
 
bool readFromFile(std::string filename)
Reads a wrapped object from a file.
 
A class that represents a prediction result.
 
yarp::sig::Vector getPrediction()
Accessor for the expected value of the prediction.
 
PortableT< IMachineLearner > MachinePortable
A portable wrapper around an IMachineLearner.
 
double cross(double x1, double x2)
 
Vector elementDiv(const Vector &v, double d)
 
void elementProd(const Vector &v1, Vector &v2)
 
double sin2d(double x1, double x2)
 
std::pair< Vector, Vector > createSample()
 
void registerTransformers()