Iti0210lab4: erinevus redaktsioonide vahel
Uus lehekülg: '= Otsing <code>aima-python</code> paketiga = == Sissejuhatus == Vaatame, kuidas ülesannet formaliseerida kui olekute ruumi, olekute üleminekuid ja soovitud oleku otsingut. Se...' |
Resümee puudub |
||
| 6. rida: | 6. rida: | ||
''8-Puzzle'' on vähendatud, 3x3 versioon [https://en.wikipedia.org/wiki/15_puzzle viieteistkümnemängust]. Vaatame, kuidas seda ülesannet samm-sammult formaliseerida ja testime <code>aima-python</code> abil erinevate otsingustrateegiate efektiivsust. | ''8-Puzzle'' on vähendatud, 3x3 versioon [https://en.wikipedia.org/wiki/15_puzzle viieteistkümnemängust]. Vaatame, kuidas seda ülesannet samm-sammult formaliseerida ja testime <code>aima-python</code> abil erinevate otsingustrateegiate efektiivsust. | ||
== Ettevalmistus == | |||
Hangi endale AIMA õpiku algoritme implementeeriv teek [http://github.com/aimacode/aima-python siit] (klooni või võta kokkupakitult master branch). <code>aima-python</code> on pigem kogum faile, kui installitav pakett, seetõttu võib selle lihtsalt kusagile lahti pakkida. Kõige lihtsam on edaspidi oma programmifailid ka samasse kataloogi teha. | |||
Java jaoks on olemas sarnane teek, <code>aima-java</code>. Selle kasutamist tuleb iseseisvalt uurida. | |||
== 8-Puzzle kodeerimine == | |||
Kasutame <code>search</code> moodulit, mis toimib järgmiselt: | |||
* Ülesanne kirjeldatakse <code>search.Problem</code> klassi kasutades | |||
* Otsing pannakse käima ülesande instantsi peal (konkreetne algolek ja lõppolek) | |||
Klassi skelett peaks olema umbes selline (detailsemaks selgituseks vt. [''AIMA''] õpik 3.1.1): | |||
<pre> | |||
import search | |||
class EightPuzzle(search.Problem): | |||
def actions(self, state): | |||
# returnib actionite listi | |||
def result(self, state, action): | |||
# returnib UUE oleku | |||
def goal_test(self, state): | |||
# returnib True kui state on lõppolek | |||
def path_cost(self, c, state1, action, state2): | |||
return c + 1 # uus cost peale ühe sammu tegemist | |||
</pre> | |||
Ja seda kasutatakse järgmiselt: | |||
Redaktsioon: 17. veebruar 2018, kell 21:06
Otsing aima-python paketiga
Sissejuhatus
Vaatame, kuidas ülesannet formaliseerida kui olekute ruumi, olekute üleminekuid ja soovitud oleku otsingut. Selleks kasutame aima-python paketti.
8-Puzzle on vähendatud, 3x3 versioon viieteistkümnemängust. Vaatame, kuidas seda ülesannet samm-sammult formaliseerida ja testime aima-python abil erinevate otsingustrateegiate efektiivsust.
Ettevalmistus
Hangi endale AIMA õpiku algoritme implementeeriv teek siit (klooni või võta kokkupakitult master branch). aima-python on pigem kogum faile, kui installitav pakett, seetõttu võib selle lihtsalt kusagile lahti pakkida. Kõige lihtsam on edaspidi oma programmifailid ka samasse kataloogi teha.
Java jaoks on olemas sarnane teek, aima-java. Selle kasutamist tuleb iseseisvalt uurida.
8-Puzzle kodeerimine
Kasutame search moodulit, mis toimib järgmiselt:
- Ülesanne kirjeldatakse
search.Problemklassi kasutades - Otsing pannakse käima ülesande instantsi peal (konkreetne algolek ja lõppolek)
Klassi skelett peaks olema umbes selline (detailsemaks selgituseks vt. [AIMA] õpik 3.1.1):
import search
class EightPuzzle(search.Problem):
def actions(self, state):
# returnib actionite listi
def result(self, state, action):
# returnib UUE oleku
def goal_test(self, state):
# returnib True kui state on lõppolek
def path_cost(self, c, state1, action, state2):
return c + 1 # uus cost peale ühe sammu tegemist
Ja seda kasutatakse järgmiselt: