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

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

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 大アルゴリズム

ブログ    

推薦する

...

2023 年のネットワーク パーティション: AI と自動化が状況をどのように変えるか

ネットワーク セグメンテーションは、企業の攻撃対象領域を減らし、横方向の移動を防ぐ基本的な予防的セキ...

2022 年に AI はサイバーセキュリティ分野に何をもたらすでしょうか?

[[439421]] [51CTO.com クイック翻訳]近年、人工知能(AI)は私たちの日常生活...

...

チャットボットと人工知能は2018年に新たな産業革命をもたらすだろう

チャットボットが大きなトレンドであることは間違いありません。ますます多くの大手ブランドが、アプリのタ...

AIを拡張するための3つの成功要因

AIからより多くの利益を得るには、管理者はテクノロジーの使用方法を変える必要があります。 [[333...

人工知能の舞台裏:マイクロソフトとOpenAIのスーパーコンピューターはアイオワ州で大量の水を消費している

9月10日、マイクロソフトとOpenAIが共同開発した人工知能システム「ChatGPT」のトレーニ...

愚かではないチャットボットを構築したいですか? 6つの実用的なガイドラインをご紹介します

AppleがSiriを発表してから7年、そしてジェフ・ベゾスがスタートレックにインスピレーションを得...

従来のプログラマーはどのように AI を変革し、学習するのでしょうか?アリババは最前線のアルゴリズムチームが開発したコアAI技術をオープンソース化

次のような疑問を持ったことはありませんか?人工知能は非常に人気があります。従来のプログラマーとして、...

...

...

パスワード危機: ディープラーニングがパスワードクラッキングを加速!

情報セキュリティの専門家は、「生成的敵対ネットワーク」(GAN)がオンラインセキュリティをどのように...

TypeScript 実践アルゴリズムシリーズ (XII): Map と HashMap の実装

この記事では、辞書とハッシュテーブルの実装のアイデアを詳しく説明し、TypeScript を使用して...