對我幫助很大,同時我也聯絡了此博文的作者,希望能得到他的指點。沒想到下午就收到回信,說這篇文章只是純理論的研究。真正的專案早已找不到了。另外信中給了我幾篇關於遺傳演算法的資料,給了我最直接的幫助。廢話不多說,下面直接給**,**不難,我也不做解釋,請有興趣的童鞋自己研究(**現在只是在測試階段,寫得很亂,將就著看吧):
**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}
下面的圖是執行結果:
黃聰 遺傳演算法實現自動組卷 隨機抽題
using system using system.windows.forms using system.io namespace ga 題目分數 int nd 題目難度 public form1 private void button1 click object sender,eventargs ...
基於遺傳演算法實現自動組卷
1 遺傳演算法介紹 1.1 遺傳演算法概要 遺傳演算法是模擬達爾文的遺傳選擇和自然淘汰的生物進化過程的計算模型,是一種通過模擬自然進化過程搜尋最優解的方法,它是用來解決多約束條件下的最優問題。遺傳演算法是從代表問題可能潛在的解集的乙個種群開始的,而乙個種群則由經過基因編碼的一定數目的個體組成。每個個...
遺傳演算法python實現
i 實現功能 求解函式 f x x 10 sin 5 x 7 cos 4 x 在區間 0,9 的最大值 ii 原理 遺傳演算法 genetic algorithm 遵循 適者生存 優勝劣汰 的原則,是一類借鑑生物界自然選擇和自然遺傳機制的隨機化搜尋演算法。遺傳演算法模擬乙個人工種群的進化過程,通過選...