Algorithm Optimisation Championship.

 

The Algorithm Optimisation Championship is conceived as a competition for people who are seekers, inquisitive, for whom standing still means going backwards.

The Championship is a great opportunity to test your algorithms under tough competitive conditions, which are tougher and more demanding than those encountered in everyday life. It's a chance to make sure your algorithm can't get any better, which means confidence in solving life's challenges ahead, or to make sure your algorithm needs or can be further refined and improved.

Rules:

1. Algorithms of optimization based on any principles and theories of search are admitted to the championship, absolutely any.

2. Each participant could represent only one algorithm in source code or in compiled form of *.ex5 library.

3. At the end of the championship the participants will be ranked according to the following criteria: speed of algorithm, number of runs of fitness function, accuracy of solution finding.

Terms:

1. the organiser reserves the right to refuse the participation of anyone without explaining the reasons.

2. the organiser has the right to participate in the championship.

3. the organiser will refuse the prizes in favour of the participants in case of availability of the prize fund from potential sponsors at the time of announcing the prizes.

Organiser of the Championship of Optimisation Algorithms: Joo.

Be brave, participate and win. It may well happen that your algorithm will be used in the future in MT's in-house optimizer, why not?

 

Registration is now open.

All those who wish to participate, please sign up here. On June 20, 2016, the codes of example executable scripts with interfaces for connecting algorithms will be presented. In another 3 weeks, on July 11, 2016, the championship itself will start.

 
In general. Please discuss only on the topic "Optimisation algorithms". One step to the right, one step to the left - firing squad :)
 
Andrey Dik:

Registration is now open.

All those who wish to participate, please sign up here. On June 20, 2016, the codes of the sample executable scripts with algorithm connection interfaces will be presented. And in 3 weeks the championship itself will start.

And in general there are ideas, or all in the process of thinking about it. If anything, I can share my thoughts.
 

Forum on trading, automated trading systems and testing trading strategies

Andrey Dik, 2016.06.10 17:24

Andrey Dik
Tag Konow
Igor Volodin
Dmitry Fedoseev
Sergey Chalyshev
Ghenadie Tumco
Igor Volodin

 
Should we put it off for a while? Write an article. Put a class template in the codebase. I think I've got a very good template:)
 
Are seven people enough for a championship? (From MQ's point of view)
 
Dmitry Fedoseev:
And in general, there are ideas, or everything is in the process of being thought through. If anything, I can share my thoughts.

Of course there are ideas.

An article is very good. In which direction do you want to write the article?

It is possible to postpone the championship, if there is a real need for it. But there is still plenty of time before it starts, the championship starts on 11 July 2016.

 
Andrey Dik:

Of course you do.

Spit it out. We'll convict.

The article is very good. But you can't wait any longer. People have a short memory as a rule and quickly forget where it all begins....

class CFF{
   public:
   virtual double fun(double & x[]){return(0);}
   virtual string type(){return("");}
   virtual double value(){return(0);}
   virtual string note(){return("");}
};

class CFF1:public CFF{
   public:
   double fun(double & x[]){
      int c=ArraySize(x);
      double s=0;
      for(int i=0;i<c;i++){
         s+=MathPow(x[i],2);
      }
      return(s);   
   }
   virtual string type(){
      return("min");
   }
   virtual double value(){
      return(0);
   }
   virtual string note(){
      return("");
   }   
};

class CFF2:public CFF{
   public:
   double fun(double & x[]){
      int c=ArraySize(x);
      double s=0;
      double p=0;
      for(int i=0;i<c;i++){
         s+=MathAbs(x[i]);
         p*=MathAbs(x[i]);
      }
      return(s+p); 
   }
   virtual string type(){
      return("min");
   }
   virtual double value(){
      return(0);
   }
   virtual string note(){
      return("");
   }   
};

Here is a construction for selecting a function to be investigated (ff). A base class with virtual methods and child classes with different functions.

I declare it like this:

CFF * ff=new CFF1();

Or like this, depending on which function is needed:

CFF * ff=new CFF2();

In the optimization function, we have a parameter of the CFF type to pass a pointer to the class with the selected ff.

***

Methods of the base class:

   virtual double fun(double & x[]){return(0);}
   virtual string type(){return("");}   

fun - function itself, parameters are passed in an array of type double.

type - function type: min or max - what to look for in the function minimum or maximum.

The rest are not needed, I was making them for myself? For memory: value - value at the extremum, note - some description. They are not needed for the Championship, especially value.

***

Now I don't have a function, but a class and in it a method to set the ff:

   
      void SetFF(CFF * aff){
         this.ff=aff;
      }  
Then I use this.ff.fun(...) everywhere;
 

The class will need to be placed in a library for the championship. Make one function in the library, which will be called from outside, this function will do everything: create an instance of the class, set all parameters passed to the function, etc.

The function name is standard for all. Everyone has their own library file names.

The checker has a script. The checker changes the name of the imported library, compiles and executes it.

That's it:

CFF * ff=new CFF1();

In the checker's script.

 
Dmitry Fedoseev:

For the championship, the class will have to be placed in a library. Make one function in the library, which will be called from outside, this function will do everything: create an instance of the class, set all parameters passed to the function, etc.

The function name is standard for all. Everyone has their own library file names.

The checker has a script. Checker changes the name of the imported library, compiles, executes.

Do you think we can do without OOP in solving the task assigned to us? I'm used to solving everything with my own method. (Well, I don't like OOP.) :)
Reason: