ソフトウェアプログラマー試験: 関数の最大値を見つけるための標準的な遺伝的アルゴリズム

ソフトウェアプログラマー試験: 関数の最大値を見つけるための標準的な遺伝的アルゴリズム

Dim N2 (30) Longは2の累乗されたデータを格納するために使用される

Dim Script As Object を実行して Eval 関数を呼び出す

パブリック列挙型クロスオーバー

OnePointCrossOver シングルポイントクロス

ツーポイントクロスオーバー

UniformCrossOver 平均クロスオーバー

列挙終了

パブリック列挙型の選択

RouletteWheelSelection ルーレットホイールの選択

ストキャスティックトーナメントランダムコンペティションセレクション

RandomLeagueMatches ランダムリーグ選択

StochasticUniversalSampleing ランダムトラバーサルサンプリング

列挙終了

パブリック列挙エンコーディング

バイナリ標準バイナリエンコード

グレイコード

列挙終了

プライベートタイプ GAinfo

最大2倍

Cordinate() を Double として

終了タイプ

********************************** バイナリコードをグレイコードに変換する ****************************************

関数名: BinaryToGray

パラメータ: 値 - 変換する2進数の実数値

注: たとえば、3 の 2 進表現は 0011 で、グレイ コードは 0010 です。この関数の値は、0011 で表される実数です。

返される値は0010で表される実数である(2)

戻り値: グレイコードに対応する2進数の実数値を返します。

********************************** バイナリコードをグレイコードに変換する ****************************************

パブリック関数 BinaryToGray(値 As Long) As Long

Dim V の長さ、Max の長さ

Dim start As Long、mEnd As Long、Temp As Long、Counter As Long を指定します。

暗くフラグをブール値として

V = 値: 最大 = 1

V > 0である間

V = V / 2

最大値 = 最大値 * 2

ウェンド

Max = 0 の場合、関数を終了

フラグ = True

mEnd = 最大 - 1

開始 < mEnd の場合

温度 = (mEnd + start - 1) / 2

値 <= 温度の場合

フラグが付かない場合は

カウンター = カウンター + (mEnd - start + 1) / 2

終了条件

mEnd = 温度

フラグ = True

それ以外

フラグの場合

カウンター = カウンター + (mEnd - start + 1) / 2

終了条件

温度 = 温度 + 1

開始 = 温度

フラグ = False

終了条件

ウェンド

BinaryToGray = カウンター

終了関数

********************************** グレイコードからバイナリコードへ ************************************

関数名: BinaryToGray

パラメータ: 値 - 変換する2進数の実数値

注: たとえば、3 の 2 進表現は 0011 で、グレイ コードは 0010 です。この関数の値は、0010 で表される実数です。

返される値は0010で表される実数である(2)

戻り値: グレイコードに対応する2進数の実数値を返します。

********************************** グレイコードからバイナリコードへ ************************************

パブリック関数 GrayToBinary(値 As Long) As Long

Dim V の長さ、Max の長さ

Dim start As Long、mEnd As Long、Temp As Long、Counter As Long を指定します。

暗くフラグをブール値として

V = 値: 最大 = 1

V > 0である間

V = V / 2

最大値 = 最大値 * 2

ウェンド

フラグ = True

mEnd = 最大 - 1

開始 < mEnd の場合

温度 = カウンター + (mEnd - start + 1) / 2

フラグXOR(値<温度)の場合

フラグの場合、カウンタ = Temp

開始 = (開始 + m終了 + 1) / 2

フラグ = False

それ以外

フラグでない場合はカウンター = 一時

mEnd = (開始 + mEnd - 1) / 2

フラグ = True

終了条件

ウェンド

GrayToBinary = 開始

終了関数

********************************** 10 進数を 2 進数に変換する ************************************

関数名: DecToBinary

パラメータ: 値 - 変換する小数点数

戻り値: 対応する2進数を返す

********************************** 10 進数を 2 進数に変換する ************************************

プライベート関数 DecToBinary(ByVal Value As Long) As String

Dim StrTemp を文字列として

整数としての ModNum の暗黙の

値 > 0 の間実行

ModNum = 値 Mod 2

値 = 値 \ 2

StrTemp = ModNum & StrTemp

ループ

DecToBinary = StrTemp

終了関数

************************************ 20進数変換 ************************************

関数名: BinToDec

パラメータ: BinCode - バイナリ文字列

戻り値: 変換された10進数

説明: バイナリ文字列を10進数に変換します

************************************ 20進数変換 ************************************

パブリック関数 BinToDec(BinCode As String) As Long

Dim i を整数、Dec を Long、Length を整数として

長さ = Len(BinCode)

i = 1 の場合、長さ

Mid(BinCode, i, 1) = “1”の場合

Dec = Dec + N2(長さ - i)

終了条件

BinToDec = 10進数

終了関数

********************************** コーディング ************************************

プロセス名: コーディング

パラメータ: ビット - エンコードするビット数

BinGroup - グループエンコードデータを保持する配列

注: より正確に言うと、エンコードとは集団を初期化することです。プロセスはバイナリ コードとグレイ コードで同じです。

********************************** コーディング ************************************

パブリック サブコーディング (ビットは整数、BinGroup() は文字列)

Dim i を整数、j を整数

文字列としての暗い温度

ランダム化

i = 1 の場合、UBound(BinGroup, 1)

温度 = ""

j = 1 からビット

Rnd >= 0.5の場合

温度 = 温度 & "1"

それ以外

温度 = 温度 & "0"

終了条件

BinGroup(i) = 温度

終了サブ

【編集者のおすすめ】

  1. プログラマーのプログラミング知識ポイント3(1)
  2. プログラマーのためのプログラミング知識ポイント3
  3. プログラマーのためのプログラミング知識ポイント5
  4. ソフトウェアテストの詳細については、51CTOソフトウェアテストトピックをクリックしてください。

<<:  データマイニングにおける10の古典的なアルゴリズムの予備的調査

>>:  プログラマーが知っておくべき 20 世紀の 10 大アルゴリズム

ブログ    
ブログ    

推薦する

GoogleのAutoML人工知能システムは、人間よりも優れた機械学習コードを作成できるようになりました

Google の AutoML システムは最近、研究者自身よりもさらに効率的な一連の機械学習コードを...

次世代の人工知能は将来のテクノロジーの展望を一変させるだろう

過去 10 年間、従来のシステムからクラウド コンピューティング サービス、ランサムウェア対策まで、...

データマイニングの10の主要なアルゴリズムを、初心者でも一目で理解できるように平易な言葉で説明しました。

優秀なデータ アナリストは、基本的な統計、データベース、データ分析方法、考え方、データ分析ツールのス...

魚眼カメラと超音波センサーの融合により、鳥瞰図による近距離障害物認識を実現

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

...

...

...

マイクロソフトがML.NET 3.0をリリース、ディープラーニング機能を拡張

11月29日、海外メディアの報道によると、マイクロソフトは最近、機械学習モデルを.NETアプリケーシ...

AI: 世界の終わりか、それとも新しい時代か?

[[273786]] [51CTO.com クイック翻訳] 1980年代のインターネットの出現から...

ディープラーニングの父ヒントン氏が、人工知能を一新するカプセルネットワークの最新動向を発表

[[210898]]なぜ人々が人工知能にこれほど魅了されるのか分からないなら、69歳のGoogle研...

...

AIは大学入試のエッセイを次のように書きました。「ネイティブの手、素晴らしい手、普通の手はすべて手であり、コピーの手もまた手です...」

昨日、大学入試の中国語テストが終わった後、作文の話題がWeiboのホットな検索語句の上位を占めました...

生成AI人材の獲得競争が始まった。求人数は4倍に増え、最高年収は90万ドル

ウォール・ストリート・ジャーナルによると、求人ウェブサイトIndeedの統計によると、生成AI関連の...

仕事の脅威? AIはマーケティング担当者の仕事を奪うのでしょうか?

先週、コピーライターのパネルがAIによってコピーライターの必要性がなくなるかどうかを議論した。一部の...