黃聰 遺傳演算法實現自動組卷 隨機抽題

2021-09-06 01:38:35 字數 2068 閱讀 2668

using

system;

using

system.windows.forms;

using

system.io;

namespace

ga;

//題目分數

int nd =;

//題目難度

public

form1()

private

void

button1_click(

object

sender, eventargs e)

initialize(p);if(

!textbox4.text.equals(

""))

_nd

=decimal

.parse(textbox4.text);t =

0;e =

evaluate(p);

decimal

_result =0

;while

(p[e].f

<

100||

_ts

<

12||

math.round((

decimal

)p[e].nd

/_ts, 2)

<

_nd)

//分數小於100或者題數小於12或者難度小於2繼續迴圈

select(p);

//擇優}}

//////

初始化種群

///

///

private

void

initialize(ttm p)

}random rnd

=new

random();

inttemp

=rnd.next(m);

for(i =0

; i

<

n; i++)

}}}///

///評估種群

///

///

private

intevaluate(ttm p)

}p[i].f

=100

-math.abs(g

-100

);p[i].nd =d;

if(p[i].f

>

p[result].f

&&p[i].nd

>

p[result].nd)

result =i;

}return

result;

}///

///雜交

///

///

private

void

crossover(ttm p)}i

+=2; j +=1

;}}///

///變異

///

///

private

void

mutation(ttm p)}}

//////

擇優///

///private

void

select(ttm p)}}

for(i =0

; i

<=

(n -1)

/2; i++

) //

淘汰50%劣等品種

}///

///輸出

///

///

private

void

print(ttm tm)

}textbox3.text

=s1 +"

\r\n"+

s2 +

"\r\n題數:"+

_ts;}}

public

struct

ktpublic

struct

ttm}

下面的圖是執行結果:

基於遺傳演算法實現自動組卷

1 遺傳演算法介紹 1.1 遺傳演算法概要 遺傳演算法是模擬達爾文的遺傳選擇和自然淘汰的生物進化過程的計算模型,是一種通過模擬自然進化過程搜尋最優解的方法,它是用來解決多約束條件下的最優問題。遺傳演算法是從代表問題可能潛在的解集的乙個種群開始的,而乙個種群則由經過基因編碼的一定數目的個體組成。每個個...

遺傳演算法實現自動組卷 隨機抽題

對我幫助很大,同時我也聯絡了此博文的作者,希望能得到他的指點。沒想到下午就收到回信,說這篇文章只是純理論的研究。真正的專案早已找不到了。另外信中給了我幾篇關於遺傳演算法的資料,給了我最直接的幫助。廢話不多說,下面直接給 不難,我也不做解釋,請有興趣的童鞋自己研究 現在只是在測試階段,寫得很亂,將就著...

遺傳演算法python實現

i 實現功能 求解函式 f x x 10 sin 5 x 7 cos 4 x 在區間 0,9 的最大值 ii 原理 遺傳演算法 genetic algorithm 遵循 適者生存 優勝劣汰 的原則,是一類借鑑生物界自然選擇和自然遺傳機制的隨機化搜尋演算法。遺傳演算法模擬乙個人工種群的進化過程,通過選...