算法优化锦标赛。 - 页 79

 
Andrey Dik:
那很好啊!非常规的方法即使不是成功的关键,至少也是成功的良好基础。那么,你会在冠军赛中与你的同事竞争吗?
我对解决所提出的问题很感兴趣。
我早就读完了幼儿园 :)
 
Andrey Dik:

"我不相信!"(с)

好吧,你当然可以把达尔的或奥哲戈夫的字典粘贴到算法中,并与已知的单词进行比较,但这样一来,如果问题中的文本不会有任何有意义的单词(例如--一组随机的字母),那么这个算法肯定会 "发疯"。

我不会做未经证实的陈述。

对于这个特定的字符串,我的算法需要对FF进行904次访问。

对于相同的字符串长度(49个字符),但使用任何其他文本(即使是完全无意义的和随机的字母集),FF的调用量将略有不同。

换句话说,字母本身决定了访问的确切数量。

变化约为(+/-40)个电话,取决于特定的一组字母。

当你改变字符串的长度时,命中率增加,但比例保持不变。也就是说,对于每个角色,平均有15到20次对FF的调用。

因此可以估计,对于一个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 = 1 e-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:
活动

你们都使用了优化问题的FF的知识。也就是说,你是在 "正面 "解决这个问题。

但冠军赛的目标是优化一个未知的FF。如果发现问题有步骤0,或者范围变成了整数线上,你的算法会怎么做?或者,如果FF值对参数的依赖是非线性的?

知道了每次FF呼叫的平均时间,你就可以准确地计算出在这种情况下解决问题需要多长时间,而且很可能比宇宙的存在时间还要长。

你的算法不是通用的,也不是为某项任务而调整的;它们有自己的优点,但甚至不适合优化简单的专家顾问,更不用说神经网络 和人工智能的TS。

想想普遍性,想想如果你不知道有文字的任务内容,你会怎么做,否则7月11日的任务对你的算法来说将是太难破解的坚果。

ZZY事件,的确,我查过了,如果文本由 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "这样的键的第一个字母组成,FF调用的数量少得可笑,这完全可以理解。

ZZZY.RETAG,Event,反正你很厉害--你表现出了一些独创性。

 
Andrey Dik:

你们都在使用优化问题的FF知识。也就是说,你是在 "正面 "解决这个问题。

但问题的目标是优化一个未知的FF。如果发现问题有步骤0,或者范围变成了整数线上,你的算法会怎么做?或者,如果FF值对参数的依赖是非线性的?

知道了每次FF呼叫的平均时间,你就可以准确地计算出在这种情况下解决问题所需的时间,而且很可能比宇宙的存在时间还要长。

你的算法不是通用的,也不是为某项任务而调整的;它们有自己的优点,但甚至不适合优化简单的专家顾问,更不用说神经网络和人工智能的TS。

想想普遍性,想想如果你不知道有文字的任务内容,你会怎么做,否则7月11日的任务对你的算法来说将是太难破解的坚果。

ZS事件,的确,我检查过了,如果文本由 "aaaaaaaaaaaaaaaaaaaaaaaaa "这样的键的第一个字母组成,FF调用的数量少得离谱,这完全可以理解。

不要激怒我,不要把我当做理所当然。我没有参与你们的游戏。
我甚至不敢称我的版本为算法。只有几行字 :)

PS 还有,不要这么居高临下地对我指指点点。我甚至流了一滴眼泪;)
 
Andrey Dik:

你们都在使用优化问题的FF知识。也就是说,你是在 "正面 "解决这个问题。


所以我做了,我正面解决了这个问题,但为算法的发展留下了一些潜力。我认为我有解决类似文本问题的基础,可以进一步提高。

到7月11日,我将准备好一个更复杂的类似文本问题的最终版本。

 
Event:
不要试图激怒我,带我走。我不参加你们的游戏。
我甚至不敢称它为一种算法。只有几行字 :)

PS 还有,不要这么居高临下地对我指指点点。我甚至流了一滴眼泪;)

来吧,我怎么能?也没有。

我不是居高临下,我是公平的(至少在这个特定的情况下),此外,我是粗鲁的,是个野蛮人。如果你不想做,就不要参加,我不是在拖任何人的后腿!"。

;)

我可以变戏法,变出几公斤以内的任何3个物体,我可以用头站立,但如果我到马戏团去展示我的技能,我会从表演者那里听到与我告诉你的相同的内容。

 
Реter Konow:

诚然,我正面解决了问题,但我为发展算法留下了一些潜力。我认为我有解决此类文本问题的基础,并能进一步改进。

到7月11日,我将准备好解决更复杂的类似文本问题的最终版本。

然后为冠军问题做好准备,你已经用 "优秀 "做了 "热身运动"。