Чемпионат Алгоритмов Оптимизации. - страница 79

 
Andrey Dik:
Замечательно! Нестандартные подходы - если и не залог успеха, то, по крайней мере, не хилый фундамент оного. Значит будете сражаться с коллегами на чемпионате? 
Мне было интересно решить предложенную задачу.
Сражаться - я детский сад давно закончил :)
 
Andrey Dik:

"Не верю!" (с)

Ну, можно конечно словарь Даля или Ожегова вшить в алгоритм и делать сравнения с известными словами, но тогда если текст в задаче не будет иметь осмысленные слова (например - случайный набор букв), то такой алгоритм стопудово "даст дуба".

Я бы не стал делать безосновательные заявления.

Для данной конкретной строки моему алгоритму необходимо 904 обращения к ФФ.

При той же длинне строки (49 символов), но при любом другом тексте (даже при полной бессмыслице и случайном наборе букв) количество необходимых вызовов ФФ будет немного отличатся.

Иначе говоря, сами буквы определяют точное количество обращений.

Варьирование в районе ( +/ - 40) обращений в зависимости от конкретного набора букв.

При изменении длинны строки количество обращений растет, но сохраняется пропорция. То есть на каждый символ нужно в среднем 15 - 20 обращений к ФФ.

Следовательно, можно прикинуть, что для строки в 100 символов, нужно примерно 2000 обращений. И так далее...

Точность воспроизведения строки всегда будет 100 процентов.

Так работает мой алгоритм.

 
Event:
Мне было интересно решить предложенную задачу.
Сражаться - я детский сад давно закончил :)
можете проверить

//+------------------------------------------------------------------+
//|                                                  OptimFFtext.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

// тестовая фитнес функция чемпионата, не известна участникам
#import "FFtext.ex5"
int    GetParamCount();
void   GetParamProperties(double &min,double &max,double &step);
double FF(double &array[]);
int    GetCountRunsFF();
void   PrintCodeToFile(double &param[]);
#import

const int TextLen= 49;
const double EPS = 1e-6;
double param[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   int Nparam=GetParamCount();
   ArrayResize(param,Nparam);
   ArrayInitialize(param,0.0);
   double temp[];
   ArrayResize(temp,Nparam);
   for(int n=0; n<Nparam;++n)
     {
      ArrayCopy(temp,param);
      double ffParam=FF(param);
      for(int k=1; k<TextLen;++k)
        {
         temp[n]=(double)k;
         double ffTemp=FF(temp);
         if(ffTemp<ffParam-EPS)
           {
            break;
           }
         if(ffTemp>ffParam+EPS)
           {
            ArrayCopy(param,temp);
            break;
           }
        }
     }
   Print("Количество вызовов FF = "+IntegerToString(GetCountRunsFF()));
   PrintCodeToFile(param);
  }
 
Event:
можете проверить

Я проверил - Ваш алгоритм на несколько вызовов опережает мой при 49 символах, но при увеличении количества символов, мой явно опережает Ваш на пару сотен.

Попробуйте поставить это: "редко, научная статья сочетает, в себе, эти, два, типа." У Вас получается 1113 вызовов, у меня 891.

Думаю, если дальше увеличивать кол-во символов в строке, то разница будет только увеличиваться.

Завтра проверю.

 
Реter Konow:

Я проверил - Ваш алгоритм на несколько вызовов опережает мой при 49 символах, но при увеличении количества символов, мой явно опережает Ваш на пару сотен.

Попробуйте поставить это: "редко, научная статья сочетает, в себе, эти, два, типа." У Вас получается 1113 вызовов, у меня 891.

Думаю, если дальше увеличивать кол-во символов в строке, то разница будет только увеличиваться.

Завтра проверю.

Я ни где не заявлял, что мой вариант лучше Вашего )) Поздравляю!
 
Реter Konow:
Event:

 Вы оба используете знание о FF задачи оптимизации. То есть, решаете задачу "в лоб".

Но цель чемпионата - оптимизация неизвестной ФФ. Что будут делать ваши алгоритмы, если окажется, что у задачи шаг 0, или диапазон окажется на всей числовой прямой? Или если зависимость значения ФФ от параметров нелинейна?

Зная среднее время на один вызов ФФ можете с большой точностью посчитать, сколько понадобится времени на решение в таком случае и вполне может потребоваться время большее, чем время существования вселенной.

Ваши алгоритмы не универсальны и заточены под конкретную задачу, они хороши по своему, но не годятся даже для оптимизации простеньких советников, не говоря уже о ТС на нейронных сетях и искусственном интеллекте.

Думайте об универсальности, подумайте, как бы поступили, если бы не знали содержимого задачи с текстом, иначе задача 11 июля окажется слишком крепким орешком для ваших алгоритмов.

 

ЗЫ Event, действительно, я проверил, если текст состоит из первых букв ключа типа "аааа ааааа ааааааааааааааааа ааааа", то количество вызовов ФФ получается вообще смехотворно малым, и совершенно понятно почему.

ЗЗЫ. Реter, Event, вы молодцы в любом случае - проявили смекалку. 

 
Andrey Dik:

 Вы оба используете знание о FF задачи оптимизации. То есть, решаете задачу "в лоб".

Но цель чемпионата - оптимизация неизвестной ФФ. Что будут делать ваши алгоритмы, если окажется, что у задачи шаг 0, или диапазон окажется на всей числовой прямой? Или если зависимость значения ФФ от параметров нелинейна?

Зная среднее время на один вызов ФФ можете с большой точностью посчитать, сколько понадобится времени на решение в таком случае и вполне может потребоваться время большее, чем время существования вселенной.

Ваши алгоритмы не универсальны и заточены под конкретную задачу, они хороши по своему, но не годятся даже для оптимизации простеньких советников, не говоря уже о ТС на нейронных сетях и искусственном интеллекте.

Думайте об универсальности, подумайте, как бы поступили, если бы не знали содержимого задачи с текстом, иначе задача 11 июля окажется слишком крепким орешком для ваших алгоритмов.

 

ЗЫ Event, действительно, я проверил, если текст состоит из первых букв ключа типа "аааа ааааа ааааааааааааааааа ааааа", то количество вызовов ФФ получается вообще смехотворно малым, и совершенно понятно почему.

Не надо меня агитировать и брать на слабо. Я в Ваших играх не участвую.
Я даже боюсь назвать мой вариант алгоритмом. Так, несколько строк :)

PS и не надо так снисходительно меня утешать. Я даже прослезился ;)
 
Andrey Dik:

 Вы оба используете знание о FF задачи оптимизации. То есть, решаете задачу "в лоб".


Так и есть, я решал задачу в лоб, но оставил немного потенциала для развития алгоритма. Думаю база для решения подобных задач с текстом у меня заложена, дальше можно совершенствовать.

К 11 июля у меня будет готов конечный вариант решения подобных текстовых задач большей сложности.

 
Event:
Не надо меня агитировать и брать на слабо. Я в Ваших играх не участвую.
Я даже боюсь назвать мой вариант алгоритмом. Так, несколько строк :)

PS и не надо так снисходительно меня утешать. Я даже прослезился ;)

Да ну что Вы, как я могу? Ни ни.

Я не снисходителен, а справедлив (в данном конкретном случае, по крайней мере), кроме того, грубый и мужлан. Не хотите - не участвуйте, за уши никого не тащу!

;) 

ЗЫ. Могу любыми 3-мя предметами в пределах пары кило жонглировать, и на голове могу стоять, но если приду и покажу свои умения в цирк, то услышу от артистов примерно тоже самое, что я сказал Вам. 

 
Реter Konow:

Так и есть, я решал задачу в лоб, но оставил немного потенциала для развития алгоритма. Думаю база для решения подобных задач с текстом у меня заложена, дальше можно совершенствовать.

К 11 июля у меня будет готов конечный вариант решения подобных текстовых задач большей сложности.

Тогда уж готовьтесь к чемпионатной задаче, "разминку" Вы уже выполнили на "отлично".
Причина обращения: