学習者 - 東京情報大学

Download Report

Transcript 学習者 - 東京情報大学

遺伝的アルゴリズムを用いた
パズル型学習支援システムの開発
Development of a Puzzle Based Programming Learning Support
System with Genetic Algorithm
布広永示 松下孝太郎 マッキンケネスジェームス 大城正典 山崎和子
東京情報大学
学校法人 東京農業大学
東京農業大学 東京情報大学 附属第一高等学校・中等部 附属第二高等学校 附属第三高等学校 成人学校
CAPTAIN Project
Computer Aided Programming Training And INstruction
President : Eiji Nunohiro / nunohiro@rsch.tuis.ac.jp
Vice president : Kotaro Matsushita / matusita@rsch.tuis.ac.jp
研究の背景
高等教育における情報処理教育の実施
高等教育におけるプログラミング教育の実施
初学者への効果的・効率的な教育の必要性
初学者を対象とした学習支援システムの要望
学習支援システムの開発
研究の目的
■学習支援システムの開発
■開発したシステムの教育現場への導入
システムの設計方針
■初学者の興味の喚起
→パズル形式
→シームレスな画面切り替え
■最適問題の出題と出題者の負担軽減
→GAによる最適問題の出題
→GAによる多数問題自動生成
※GA(Genetic Algorithm)に関する参考文献
・坂和正敏,田中雅博:“遺伝的アルゴリズム”,朝倉書店 (1995)
・長尾智晴,安居院猛:“C言語による画像処理入門”,昭晃堂 (2006)
システムの画面
システムの構成
学習者
学習者操作系
自動処理系
課題表示部
問題生成部
教員操作系
教員
課題プログラム
入力部
結果表示部
・問題選択
・解答
・結果確認
解答評価部
課題プログラム入力
学習者とシステムのやりとり
学習者
・Sample1
・Sample2
:
:
Select Questions
システム
void main (void) {
int a=1;
int b=1;
a = a + b;
}
学
習
れ
の
a = a + b;
void main (void) {
int a=1;
int b=2;
流
}
void main (void) {
int a=1;
int b=2;
a = a + b;
}
遺伝的アルゴリズム
・プログラム解析
・プログラムのパズル化
プログラミング問題の自動生成手順
①課題プログラムの解析
課題プログラムの制御構造と変数の使用状況を解析する。
②分割点難易度の算出
制御情報と参照情報から各文の直前で課題プログラムを分割したときの難
易度(分割点難易度)を解析する。
③分割点の組み合わせ決定
②の難易度を固体の染色体とし,遺伝的アルゴリズムを用いて学習者の進
捗度に合った課題プログラムの分割点の組み合わせを決定して,プログラ
ム問題を自動的に生成する。
※課題プログラムを分割(パズル化)したものをプログラム問題と呼ぶ
遺伝的アルゴリズムの手順
①初期固体集団の生成
0または1で構成されるランダムな染色体を持つ個体をN個生成する。
②適合度の評価
適合度関数を定義し,各個体の適合度を評価する。
③終了判定
終了条件を満足した場合は処理を終了し,満足しない場合は,④~⑦を繰り返す。
④選択
固体の適合度を考慮のうえ,固体のペアを確率的にN組生成する。
⑤交差
設定された交差方法に従って,各個体のペアを親として新しい子の個体を生成する。
⑥突然変異
設定された確率に従って,各子の固体ごとに染色体上の遺伝子の値を他の値に置き換える。
⑦繰り返し処理
②に戻る。
課題プログラムの解析
課題プログラム自体の難易度
(1)深度数( nd )
(2)参照数 ( nr )
(3)通過数 ( np )
通過数
1:
2:
3:
4:
x1 = 10;
x2 = 0;
x3 = x1;
x4 = x2;
課題プログラムの解析例
プログラム
1: int main (void) {
2: int i;
3: int even = 0;
4: int odd = 0;
5: for ( i = 0; i < 10; i ++) {
6:
if ( i % 2 = = 0 ) {
7:
even = even +1;
8:
} else {
9:
odd = odd + 1;
10:
}
11: }
12: printf ("even: %d ", even);
13: printf ("odd: %d ", odd);
14: return 0;
15: }
深度数
参照数
通過数
0
0
0
1
1(定義1)
1
1
1(定義1)
2
1
1(定義1)
3
2
4(定義2,使用2)
3
3
1(使用1)
3
2
2(定義1,使用1)
3
3
0
3
2
2(定義1,使用1)
3
1
0
3
1
0
3
1
1(使用1)
2
1
1(使用1)
1
1
0
0
0
0
0
分割点難易度と分割難易度
■分割点難易度(pk)
pk=nd・(nr+np)
ただし,ndは深度数,nrは参照数,np は通過数
■分割難易度(ptotal)
ptotal=p1c1 + p2c2 + ・ ・ ・ + pNcN
難易度
難易度評価基準
(1)プログラムで使用しているアルゴリズムレベル( a )
(2)プログラムで使用している言語仕様レベル ( g )
(3)分割難易度 ( ptotal )
■難易度(D)
D=a・g・ptotal
レベルの関係
言語仕様のレベル
アルゴリズムのレベル
レベル
内容
レベル
内容
1
四則計算
1
標準入出力
2
平均
2
条件分岐,繰り返し
3
分散,標準偏差
3
1次元配列,多重ループ
4
最大,最小
4
多次元配列
5
バブルソート
5
ポインタ,関数
レベルの関係
アルゴリズムのレベル
言
語
仕
様
の
レ
ベ
ル
1 2 3 4 5
1
2
3
4
5
易
難
適合度と理解度のレベル
■適合度(F)
F=|UーD|
Uは学習者の理解度レベルである。Dの値がUの値に近づくようにDの値を調
節することで,学習者の理解度に適したプログラミング問題が生成される。
→ 遺伝的アルゴリズムの利用
学習者の理解度レベル
レベル
内容
1
C言語を始めて学ぶ。
2
入出力,計算式を含んだ簡単なプログラムを理解できる。
3
単純な制御構造を含んだプログラムを理解できる。
4
入れ子など,やや複雑な制御構造を含んだプログラムを理解できる。
5
簡単なアルゴリズム(ソート,探索など)を含んだプログラムを理解できる。
~2007~
Tokyo University of Information Sciences
Lab. Homepage
http://www.rsch.tuis.ac.jp/~nunohiro/
http://www.rsch.tuis.ac.jp/~matusita/