MQL5におけるOOPに関する質問 - ページ 94

 
Igor Makanu:

intから有意なビットを作るのは「ヘッドオン」ソリューションで可能ですが、ユニバーサルソリューションは作れない...。無理です!((

どこをどうしたいのか、説明していない可能性が高いです。

4 バイトの int / uint があり、オプティマイザで解凍 したいデータセットがある。

仮にこのように梱包することに成功したとします。

0-8 9-16 17-24 25-32
int_11 int_9 int_12

int_XXXがどのようなタイプであるか、まだ見積もっていない。

が、このコードのような形でユーザビリティを確保したい。

一般的に、私が望むように動作します。

//+------------------------------------------------------------------+
// value - значение
// pos - бит начала числа
// cnt_bits - общее количество занимаемых бит
//+------------------------------------------------------------------+
int BitsToInt(const uint value, const uint pos, const uint cnt_bits)
{
   uint mask_value = (0x7FFFFFFF >> (sizeof(uint) * 8 - cnt_bits)) << pos;
   uint mask_sign = 1 << (pos + cnt_bits - 1);
   int sign = (bool)(value & mask_sign) ? -1 : 1;
   return(sign * (int)((value & mask_value) >> pos));
}
//+------------------------------------------------------------------+
void OnStart()
{
   uint v = 0x7F << 12;
   Print(BitsToInt(v, 12, 8));   // 127
   v = 0xFF << 12;
   Print(BitsToInt(v, 12, 8));   // -127
}
//+------------------------------------------------------------------+

...残念、またビットの数え方を間違えたら(((^^;)

 
Igor Makanu:

が、総じて思い通りに動いています。

...またビットのカウントを間違えたら大変だ((

不謹慎な質問ですが、ビットを追いかける目的は何でしょうか?

 
Alexandr Andreev:

不謹慎な質問ですが、コウモリを追いかける目的は何でしょうか?

は、この作品の最初の投稿で書きました。

最適化可能なパラメータを減らす必要がある - 重要ではない

で、Grayのコードを新しい "int "最適化パラメータに適用して、オプティマイザのGAがそれほど速く収束しないようにしたい - Wiki

 
Igor Makanu:

が、総じて思い通りに動いています。

...またビットの数え間違いがあったら大変だ((

5なら、32ビットintはほとんど意味をなさない(ループカウンターとサイズユニットとしてだけ、それも習慣的に)。

そして、すべてがビットシフトなしで64に収まる。

ちなみに、4であってもdoubleなどで64bitの値を詰め込んだ方が良いですよ、需要がありますから。

 
Maxim Kuznetsov:

そして、64はビットシフトなしで全てにフィットする・・・。

まさか、テスターで経度が最適化されていないとは、数ヶ月前に理由を聞いたのですが、回答はありませんでした。

uint 「私も不具合があったと思います...。最適化時に最大値を使用することができなかったと思います

intのみで、新しいビルドでは正しく動作しない可能性が高いです。

 
Igor Makanu:

まさか、テスターでロングが最適化されていないとは、数ヶ月前に問い合わせたが、回答はなかった

uint 「私も不具合があったと思います...。最適化の際に最大値を使用することができなかったようです。

intのみで、新しいビルドでは(おそらく)動作しません。

ロギングで空のループをオーバーホールするには、1ヶ月以上かかるでしょう。

最初の数ビットがサイズ、次にレコードという形式を独自に作った方がいい。そして、すべてバイト配列で記述することです。

バイト配列は、他の任意のバイト配列に簡単にコピーすることができます。

 
Alexandr Andreev:

ロングランで空ループを繰り返すと1ヶ月以上かかる

そうなんですが、私は長い間、理想のTSを追い求めているわけではなく、オプティマイザが見つけたものをデータベースに書き込んでいるのですが、問題はパラメータ群の周りのGA収束にあるので、科学的なアプローチでGAを元気づけようと思ったんです )))


Alexandr Andreev:

最初の数ビットがサイズ、次にレコードという独自のフォーマットを作るのは簡単です。そして、すべてをバイト配列に書き込む。

テストが必要ですが、今のところ、Grayのコードと、最適化可能なパラメータをint型にグループ化する私の操作で、GAの収束問題を解決できることを期待しています...。そうは問屋がおろさない

 
Igor Makanu:

まさか、テスターでロングが最適化されていないとは、数ヶ月前に問い合わせたが、回答はなかった

uint 「私も不具合があったと思います...。最適化の際に最大値を使用することができなかったようです

intのみで、新しいビルドでは正しく動作しない可能性が高いです。

オプティマイザーにこのパラメータを設定しましたか?

一方、doubleを設定することができ、それは32以上のマンティを持っていますが、プロファイルでdouble<->stringの変換で立ち往生することができます

 
Maxim Kuznetsov:

というように、オプティマイザーのパラメータを設定するのでしょうか?

ノー

最適化可能なパラメータが10個以上あり、最適化の制限を設定すると、すべてが高速に動作しますが、GAは2つのパラメータを回避して、それ以上最適化する必要はありません。

パラメータをグループ化してグループごとに実行するか、最適化を再起動してキャッシュをクリアするか、どちらかです。

GAについてWikiが正しいかどうか、実験してみたい。

グレイズコードは、遺伝的アルゴリズムの理論[3]において、整数で表される遺伝的特徴を符号化するために広く用いられている。

 
Igor Makanu:

ノー

10以上の最適化されたパラメータがあり、制限を設定し、すべてが高速に動作するが、GAが2つ程度のパラメータを収集し、それ以上の最適化は必要ない。

パラメータをグループ化してグループごとに実行するか、最適化を再起動してキャッシュをクリアするか、どちらかです。

GAについてWikiが正しいかどうか、実験してみたい。

グレイズコードは、データ転送プロトコルに使われることもあります。実は、彼らのために作られたものなのです :-)

GAというのは、どちらかというと「流行語」なんです。グレイズコードは収束にどのように役立つのでしょうか? あくまで理論的にですが...。

シャッフル