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

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

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

ブログ    
ブログ    
ブログ    

推薦する

AI人材の確保をめぐる秘密の戦い:中国が勝利する可能性は?

[[251811]]画像ソース @Visual China人工知能の概念は、提唱されてから60年以...

...

HASHアルゴリズムとCSDNパスワード漏洩事件についての簡単な説明

CSDNパスワード漏洩事件では、ネットユーザーらはパスワードのプレーンテキスト保存とMD5保存の問題...

人工知能に関する世界インターネット会議の8つの視点のレビュー

[[416318]]最近、世界インターネット会議およびインターネット開発フォーラム「人工知能:新たな...

AIは仕事を楽にする?これらの人々は反対します。「仕事量が倍増しました!」

7月24日のニュース:昨年末にチャットボットChatGPTがリリースされて以来、人工知能がトレンド...

...

世界初、常温量子コンピュータが実用化!絶対零度の温度は必要ありません。メインコアには実際に「ダイヤモンドがセットされています」

量子コンピューティングは、おそらく現在最もエキサイティングな(そして話題になっている)研究分野の 1...

...

脳とコンピューターのインターフェースのための新しい「接着剤」が発明され、人間と機械の融合「サイボーグ」における新たな進歩がもたらされる

マスク氏の脳コンピューターインターフェースは「人間でテスト」されようとしているが、侵襲的な脳コンピュ...

...

ニュースローン賞受賞者 宋 樹蘭: 視覚の観点からロボットの「目」を構築する

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

最終支払いを控える人々のダブル11不安:配達ロボットは解決できるか?

今年のダブル11のクライマックスが終わり、最後の支払いをしなければならなかった人たちも、速達を待つ苦...

モデル融合、ハイブリッド専門家、小規模LLM、2024年のLLMの発展方向を理解するためのいくつかの論文

過去2023年間で、大規模言語モデル(LLM)は潜在力と複雑さの両面で急速に成長しました。 2024...

大規模なモデルをグローバルに微調整できないわけではなく、LoRA の方がコスト効率が高いだけです。チュートリアルは準備完了です。

データ量とモデルパラメータの数を増やすことが、ニューラル ネットワークのパフォーマンスを向上させる最...

「AI」があなたにビデオ通話を開始しました。あなたはそれを受け入れるべきでしょうか?

毎年恒例のスーパーボウル決勝戦の前に、Amazon は「Alexa の新しい形」というもう一つの大ヒ...