数値解析 Ⅱ

18
数数数数数数数数班 班班班班 班 班班班班 班班 班班 班班 班班 班班 班班 班班班班班班班班 班班 班班 班班班班班班班班 班班 班班 班班 班班 班班 班班 ppt ppt 班班 班班 班班 班班 班班 班班 班班班班班班班班班班班班班 ~~

Upload: moshe

Post on 06-Jan-2016

41 views

Category:

Documents


0 download

DESCRIPTION

数値解析 Ⅱ.  ~五目並べプログラムを作る~. F班 メンバー          班長 雨堤 智宏           アルゴリズム解析 角田 泰彬             竹林 秀高 ppt 作成 清水 貴史. 参考 宍戸輝光氏作成 「五目ならべゲーム」. ① 既存の五目並べプログラムをプレイ. 先手・後手交互に石を打って、先に一直線上に五つの石を並べたほうが勝ち. ○. A. ○. B. 三つの石の並びが勝負を左右する. ② 五目並べとは?. 黒番なら A か B に置けば次手で勝ちが確定 白番なら A か B に置いて黒の勝ちを阻止. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 数値解析 Ⅱ

数値解析Ⅱ数値解析Ⅱ

F班 メンバー F班 メンバー         班長 雨堤 智        班長 雨堤 智

宏          宏          アルゴリズム解析 角田 泰彬アルゴリズム解析 角田 泰彬

            竹林             竹林 秀高秀高

             pptppt 作成 清水 貴史作成 清水 貴史

 ~五目並べプログラムを作る~

Page 2: 数値解析 Ⅱ

①① 既存の五目並べプログラムをプレイ既存の五目並べプログラムをプレイ  参考 宍戸輝光氏作成 「五目ならべゲー参考 宍戸輝光氏作成 「五目ならべゲーム」ム」

Page 3: 数値解析 Ⅱ

②② 五目並べとは?五目並べとは?

先手・後手交互に石を打って、先に一直線上に五つの石を並べたほうが勝ち

B○

A○ 黒番なら Aか Bに置けば次手で勝ちが確定

白番なら Aか Bに置いて黒の勝ちを阻止

三つの石の並びが勝負を左右する

Page 4: 数値解析 Ⅱ

③③ 宍戸氏のプログラムの特徴宍戸氏のプログラムの特徴

盤面評価から CPUの手の決定までの流れ

・ 16×16  256マス全ての盤面にある石の場所と数を記憶する

・配石可能な場所に重要度の高い順に点数をつける 例)自分が 4連しており、勝ちが確定する場所には15,000点    相手が 4連しており、置かなければ負けが確定する場所には12,000点    自分が 2連しており、その両端に置くことにより 3連ができる場所には10点                                       など・全ての盤面評価が終わると、その中から最高点の場所に CPUの手を決定

 最高点が複数存在する場合は、その中からランダムで選出

Page 5: 数値解析 Ⅱ

④④ 宍戸氏のプログラムの問題点宍戸氏のプログラムの問題点  ・序盤に何の戦略性も無い無意味な手を打つ

・相手の動きに合わせて打つ⇔例え先手でも出遅れる例  CPU後手の場合

● :先手 HUMAN

● :後手 CPU

HUMか CPUのいずれかが一直線上の連続する5点のうち2点に並ぶまで意味の無い手を打ち続ける

Page 6: 数値解析 Ⅱ

⑤⑤ プログラムの是正プログラムの是正

→序盤の手順に戦略性のある定石を導入

定石とは?

Page 7: 数値解析 Ⅱ

⑤⑤ プログラムの是正プログラムの是正

CPU先手の時、 HUMが離れた場所に打ってきた場合

HUM先手の時、第一手に端に置かれた場合

Page 8: 数値解析 Ⅱ

⑤⑤ プログラムの是正プログラムの是正

・相手が奇抜な手を打ってきた時にも定石を交えな がら対応できるプログラムが必要

・定石の数は豊富でその全てに対応するプログラム を作成する必要がある

挑戦するも知識不足に加え、バグが無くならず断念・・・・

Page 9: 数値解析 Ⅱ

⑥⑥ せめて無駄な手を無くすせめて無駄な手を無くす

Ⅰ) CPU先手(●)の場合  第一手は有無を言わさず座標[9 ,9]

①~⑧からランダムに選択して決定

とにかく序盤に無理やりにでも2連を作る

ⅰ) HUM(●)が●の直近周囲(①~

  ⑧)に無い場合

① ② ③④ ⑤⑥ ⑦ ⑧

9

9

●が二つ並んだので以降は既存のプログラムに準じて手を決定

9

9

Page 10: 数値解析 Ⅱ

⑥⑥ せめて無駄な手を無くすせめて無駄な手を無くすとにかく序盤に無理やりにでも2連を作る

Ⅰ) CPU先手(●)の場合

ⅱ) HUM(●)が●の直近周囲(①~⑧)のいずれかにある場合

① ② ③④ ⑤⑥ ⑦ ⑧

第一手は有無を言わさず座標[9 ,9] ① ② ③④ ⑤

⑦ ⑧

●を挟んで●の反対側を除く 6箇所からランダムに選択して決定

(図の例では●が⑥にある場合は③を除外)

9

●が二つ並んだので以降は既存のプログラムに準じて手を決定

9

9

Page 11: 数値解析 Ⅱ

a)HUMの第 2手(トータル 3手目)の場所の情報は無視

CPU一手目の囲りに注目

一手目の囲りに●が 0個の場合

① ② ③④ ⑤⑥ ⑦ ⑧

9

9

⑥⑥ せめて無駄な手を無くすせめて無駄な手を無くすとにかく序盤に無理やりにでも2連を作る

Ⅱ) HUM先手(●)の場合ⅰ) HUMの第一手が座標[9 ,9]に無い場合

有無を言わさず座標[9 ,9]に CPUの手を決定

①~⑧からランダムに選択して CPUの手を決定

Page 12: 数値解析 Ⅱ

⑥⑥ せめて無駄な手を無くすせめて無駄な手を無くすとにかく序盤に無理やりにでも2連を作る

Ⅱ) HUM先手(●)の場合ⅰ) HUMの第一手が座標[9 ,9]に無い場合

有無を言わさず座標[9 ,9]に CPUの手を決定

b)HUMの第 2手(トータル 3手目)の場所の情報は無視

CPU一手目の囲りに注目

一手目の囲りに●が 1個の場合

① ② ③⑤

⑥ ⑦ ⑧×

●を挟んで●の反対側を除く 6箇所からラン

ダムに選択して決定

(図の例では●が④にある場合は⑤を除外)

Page 13: 数値解析 Ⅱ

c)HUMの第 2手(トータル 3手目)の場所の情報は無視

CPU一手目の囲りに注目

一手目の囲りに●が 2個の場合

② ③⑤

⑥ ⑦ ⑧

⑥⑥ せめて無駄な手を無くすせめて無駄な手を無くすとにかく序盤に無理やりにでも2連を作る

Ⅱ) HUM先手(●)の場合ⅰ) HUMの第一手が座標[9 ,9]に無い場合

有無を言わさず座標[9 ,9]に CPUの手を決定

× ×

●を挟んで●の反対側を除く 5箇所からラン

ダムに選択して決定

(図の例では●が①と④にある場合は⑤と⑧を除外)

Page 14: 数値解析 Ⅱ

⑥⑥ せめて無駄な手を無くすせめて無駄な手を無くすとにかく序盤に無理やりにでも2連を作る

Ⅱ) HUM先手(●)の場合ⅱ) HUMの第一手が座標[9 ,9]に有る場合

有無を言わさず座標[10 ,10]に CPUの手を決定

a)HUMの第 2手(トータル 3手目)の場所の情報は無視

CPU一手目の囲りに注目

一手目の囲りに●が 2個の場合

② ③⑤

⑥ ⑦ ⑧

●を挟んで●の反対側を除く 5箇所からラン

ダムに選択して決定

(図の例では●が①と④にある場合は⑤と⑧を除外)

××

Page 15: 数値解析 Ⅱ

⑥⑥ せめて無駄な手を無くすせめて無駄な手を無くすとにかく序盤に無理やりにでも2連を作る

Ⅱ) HUM先手(●)の場合ⅱ) HUMの第一手が座標[9 ,9]に有る場合

有無を言わさず座標[10 ,10]に CPUの手を決定

b)HUMの第 2手(トータル 3手目)の場所の情報は無視

CPU一手目の囲りに注目

一手目の囲りに●が 1個の場合

② ③⑤

⑥ ⑦ ⑧④ ×

●を挟んで●の反対側を除く 6箇所からラン

ダムに選択して決定

Page 16: 数値解析 Ⅱ

⑥⑥ せめて無駄な手を無くすせめて無駄な手を無くすとにかく序盤に無理やりにでも2連を作る

Ⅰ-ⅰ)CPU先手 -黒が近くにない場合

Ⅰ-ⅱ)CPU先手 -黒が近くに有る場合

Ⅱ-ⅰ)HUM先手 -黒が近くにない場合

Ⅱ-ⅰ)HUM先手 -黒が近くに 1個の場合

Ⅱ-ⅰ)HUM先手 -黒が近くに 1個の場合

Page 17: 数値解析 Ⅱ

⑥⑥ 考察と更なる改良点考察と更なる改良点オセロと違い、広い盤面のどこから打ち始めてもいいという条件(最初から端っことか)が、特に序盤のCPUの手を決めるプログラムを作ることはなかなか難しかった。

宍戸氏のプログラムにおける序盤の脆弱性を無くす為に、無理やり二連を作るように修正を施しましたが、それによって新たな問題が出てきた。

例)HUM先手 (9,9)に無い場合

9

9

既存のプログラムでは対処できていたことに対処出来なくなった

Page 18: 数値解析 Ⅱ

FinFin