home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1997 #3 / amigamamagazinepolishissue03-1 / ma_1995 / 06 / ami028.txt < prev    next >
Text File  |  1997-04-07  |  12KB  |  253 lines

  1. ------------- 4 szoty, pierwsze dwa majâ iôê, drugie dwa to WZORY
  2. dla obrazków do wykonania przez dziaî graficzny ------------------
  3.  
  4. STEROWANIE. PSIA KRZYWA
  5.  
  6. <lead>Rozwój wspóîczesnej elektroniki i cybernetyki nasuwa
  7. pytanie: czy i w jakim stopniu komputer jest w stanie dorównaê
  8. mózgowi czîowieka lub go przewyûszyê. Chociaû komputery liczâ
  9. nieporównywalnie szybciej od nas, odpowiedú na to pytanie jest i
  10. dîugo bëdzie negatywna.
  11.  
  12. <a>Bolesîaw Szczerba
  13.  
  14. <txt>Wyobraúmy sobie prostâ sytuacjë: rzut kamieniem w okno
  15. sâsiada. Ile skomplikowanych obliczeï musiaîby wykonaê komputer,
  16. aby okreôliê trajektorië lotu -- uwzglëdnienie ciëûaru kamienia,
  17. odlegîoôci, siîy i kierunku wiatru, oporów powietrza czy wreszcie
  18. grawitacji. A my po prostu podnosimy kamieï i rzucamy... Dlaczego
  19. nie musimy sië troszczyê o odpowiednie obliczenia? Po prostu
  20. kiedyô juû rzucaliômy kamieniem i NAUCZYLIÔMY SIË tego. Teraz
  21. jedynie przywoîujemy do pamiëci wyuczony kiedyô program. Ale to
  22. nie jest program na podobieïstwo programu komputerowego. Jest to
  23. algorytm otwarty, umoûliwiajâcy podejmowanie decyzji na bieûâco,
  24. uwzglëdnienie róûnych czynników czy wreszcie umoûliwiajâcy jego
  25. modyfikacjë w trakcie jego przebiegu. To wîaônie powoduje, ûe
  26. mózg czîowieka dîugo jeszcze bëdzie niedoôcignionym wzorem dla
  27. komputerów i oprogramowania. To wîaônie w nim zachodzâ wszystkie
  28. procesy podejmowania decyzji i uczenia sië na bîëdach. Nazywamy
  29. je adaptacyjnymi procesami sterowania. Dziëki nim potrafimy
  30. reagowaê na nieoczekiwane zdarzenia i podejmowaê optymalne
  31. decyzje.
  32.  
  33. Oczywiôcie sposób, w jaki pracuje nasz mózg, od dawna stanowi
  34. wyzwanie dla naukowców (któû nie sîyszaî o sztucznej
  35. inteligencji), którzy próbujâ ludzkie myôlenie upchnâê w szablony
  36. algorytmów postëpowania. Caîy czas prowadzone sâ próby stworzenia
  37. algorytmów, które zastosowane w komputerach umoûliwiîyby uczenie
  38. sië, podejmowanie decyzji oraz sterowanie róûnymi procesami.
  39. Dziëki osiâgniëciom w tej dziedzinie staîy sië moûliwe np. loty w
  40. kosmos. Tam czîowiek jest zbyt wolny, aby podejmowaê decyzje, od
  41. których moûe zaleûeê ûycie zaîogi. To musi robiê komputer. Musi
  42. on sterowaê wieloma procesami na raz i byê przygotowany do
  43. natychmiastowej reakcji na OCZEKIWANE sytuacje. Niestety, na
  44. razie tylko oczekiwane lub przynajmniej czëôciowo przewidywalne.
  45. W nieoczekiwanych sytuacjach, na które program komputerowy nie
  46. jest przygotowany, czîowiek musi decyzje podejmowaê sam. I to
  47. (choê oczywiôcie nie tylko) stanowi o jego wyûszoôci.
  48.  
  49. Oczywiôcie nie tylko my, ludzie, jesteômy tak cudownie
  50. wyposaûeni. Ewolucja wyposaûyîa teû zwierzëta w zdolnoôê
  51. podejmowania decyzji. Podobnie jak my potrafiâ one oceniaê
  52. sytuacjë, uczyê sië na bîëdach i podejmowaê decyzje w czasie
  53. rzeczywistym, tzn. wielokrotnie podczas danego procesu
  54. sterowania, nanoszâc poprawki do jego przebiegu. W wielu
  55. sytuacjach radzâ sobie z tym nawet lepiej (o wiele lepiej) od
  56. nas. Te niesamowite wrëcz czasem zdolnoôci okreôlamy jako
  57. instynkt. Jako przykîad procesu sterowania moûna przytoczyê
  58. nastëpujâcâ historyjkë. Jest sobie pies i zajâc.  W pewnym
  59. momencie pies dostrzega zajâca i rzuca sië za nim w poôcig. Zajâc
  60. oczywiôcie nie jest gîupi i zaczyna uciekaê.  Po jakim czasie
  61. pies dogoni zajâca i po jakiej trajektorii musi sië poruszaê w
  62. pogoni za celem, jeûeli znana jest prëdkoôê psa i zajâca i ich
  63. poczâtkowe poîoûenie?
  64.  
  65. Problem ten jest oczywiôcie rozwiâzywany analitycznie, czyli za
  66. pomocâ równaï matematycznych, z których moûna wyznaczyê dokîadnâ
  67. trajektorië poôcigu, jak i czas jego ukoïczenia. Jednak sposób
  68. otrzymania rozwiâzania, jak i samo równanie krzywej, jest
  69. niedostëpny i nieatrakcyjny dla kogoô nie obeznanego z wyûszâ
  70. matematykâ, i sâdzë, ûe raczej nie zainteresuje Czytelnika. Poza
  71. tym naczelny surowo zakazaî mi wszelkich teoretycznych wywodów.
  72.  
  73. Poniewaû nasz znajomy pies ani trochë nie zna sië na równaniach,
  74. a jednak bez problemu dogoni zajâca, spróbujmy zastanowiê sië nad
  75. jego postëpowaniem podczas poôcigu. Zastanówmy sië, jakie
  76. wielkoôci parametryzujâ nam caîy proces. Niewâtpliwie bëdâ to
  77. prëdkoôci poôcigu i ucieczki. Na pewno znaczenie ma teû
  78. poczâtkowe poîoûenie psa i zajâca. Ale jest jeszcze jedna waûna
  79. wielkoôê: czas reakcji psa na zmianë poîoûenia zajâca, czyli
  80. czas, po którym pies jest w stanie zauwaûyê znaczâcâ zmianë
  81. poîoûenia celu, na tyle znaczâcâ, ûe podejmie decyzjë zmiany
  82. kursu. Oznaczmy sobie ten czas przez >t0<.
  83.  
  84. Pies znajduje sië w punkcie >P0< w odlegîoôci >b< od myôliwego
  85. >M< (rys. 1). Zajâc znajduje sië w punkcie >Z0< w odlegîoôci >a<
  86. od myôliwego. Jak postâpi pies po ujrzeniu zajâca? Oczywiôcie
  87. zacznie biec w jego kierunku. Zaîóûmy dla uproszczenia, ûe
  88. prëdkoôci psa i zajâca sâ staîe i wynoszâ odpowiednio >vp< i
  89. >vz<, zajâc zaô ucieka po linii prostej. Nasz pies biegnie tak
  90. dîugo, aû stwierdzi, ûe zajâc oddaliî sië od poczâtkowego
  91. poîoûenia na tyle, ûe trzeba zmieniê kurs. Ma to miejsce, gdy
  92. pies jest juû w punkcie >P1<, a zajâc w punkcie >Z1<. Pies
  93. przebyî wiëc odcinek >P0P1<, a zajâc odcinek >Z0Z1<. Poniewaû
  94. odcinki te przebyte zostaîy w czasie równym czasowi reakcji psa,
  95. ich dîugoôci wynoszâ odpowiednio >vp*t0< oraz >vz*t0<. Wtedy
  96. dopiero pies bierze poprawkë na nowe poîoûenie zajâca i biegnie
  97. dalej do punktu >P2<, przebywajâc takâ samâ drogë, jak
  98. poprzednio. Tu znowu stwierdza, ûe zajâc jest trochë dalej --
  99. bierze wiëc kolejnâ poprawkë. I tak w kóîko, aû osiâgnie cel.
  100. Warto jeszcze zaznaczyê, ûe ostatni przebyty odcinek nie musi
  101. mieê wcale dîugoôci >vp*t0<, tylko moûe mieê mniejszâ -- pies
  102. moûe dopaôê zajâca w ostatniej fazie poôcigu w czasie krótszym od
  103. swojego czasu reakcji.
  104.  
  105. Przypatrzmy sië dokîadnie rysunkowi. Tak na prawdë, to pies nie
  106. biegnie po krzywej, tylko po ÎAMANEJ, o dîugoôci tworzâcego jâ
  107. odcinka równej >vp*t0<. Albo inaczej: do czasu zauwaûenia zmiany
  108. poîoûenia celu pies porusza sië po odcinku o dîugoôci wîaônie
  109. >vp*t0<. Zajâc wyrywa przed siebie caîy czas, poruszajâc sië po
  110. prostej i w czasie >t0< przebywajâc drogë równâ >vz*t0<.
  111. Zastanówmy sië teraz, ile moûe wynosiê czas reakcji psa. Jeôli
  112. czas ten wynosiîby np. 10 sekund, to wtedy trajektoria ruchu
  113. autentycznie byîaby îamanâ, bo do czasu reakcji na nowe poîoûenie
  114. celu pies przebiegîby kilkanaôcie metrów. Ale nasz znajomy nie
  115. jest anemikiem -- ten czas to w rzeczywistoôci uîamek sekundy --
  116. powiedzmy 0.1 sekundy lub mniej! W tym czasie pies nie
  117. przebiegnie wiëcej niû póî metra i w ten sposób îamana skîada sië
  118. z duûej liczby bardzo krótkich odcinków -- tym krótszych, im
  119. szybciej pies reaguje na zmiany poîoûenia zajâca. Moûna wiëc
  120. ômiaîo powiedzieê, ûe pies porusza sië po krzywej. Matematycy
  121. nadali jej nazwë "psia krzywa", a problem doczekaî sië peînych
  122. honorów zagadnienia matematycznego.
  123.  
  124. Jak juû wspomniaîem, rachunkowe rozwiâzanie problemu nie naleûy
  125. do prostych, ale przedstawionâ sytuacjë moûna bez problemu
  126. zasymulowaê na komputerze. Bëdzie to oczywiôcie Amiga, a uûytym
  127. jëzykiem programowania bëdzie C. Przepraszam wszystkich fanów
  128. AMOS-a, ale ja AMOS-a nie lubië (dlaczego, o tym moûe innym
  129. razem). Osobiôcie preferujë C, gîównie ze wzglëdu na jego
  130. prostotë i uniwersalnoôê. Poza tym, jeôli sië uwaûa, ûeby nie
  131. wleúê bezpoôrednio w system, to kody úródîowe w tym jëzyku moûna
  132. przenosiê bez problemów (ewentualnie z niewielkimi poprawkami)
  133. miëdzy Amigâ i pecetem. Poza tym kompilator C jest dostëpny w
  134. wersji dla Amigi i z jego zdobyciem nie ma ûadnych problemów
  135. (moûe inaczej: nie sâ to problemy wiëksze niû w wypadku jego
  136. niebieskiego odpowiednika...). Jest tego caîa kupa -- od
  137. komercyjnych (SAS, Aztec) do shareware (DICE) i podobno public
  138. domain.
  139.  
  140. Poniûej lub powyûej (zaleûy, gdzie wydrukujâ) przedstawiam
  141. kompletny listing programu, symulujâcego omówiony proces
  142. sterowania. Zakîadam, ûe:
  143.  
  144. 1. Czytelnik ma dostëp do kompilatora C. Proponujë SAS/C co
  145. najmniej w wersji 5.10, a najlepiej 6.5. Uûycie innych
  146. kompilatorów jest oczywiôcie moûliwe, jednak nie przetestowane
  147. przeze mnie. Mogâ sië wiëc pojawiê (niegroúne zazwyczaj)
  148. ostrzeûenia. Wiâûe sië to najczëôciej nie tyle z samym programem,
  149. ile z konwersjâ typów oraz ustawieniem ôrodowiska.  Niech nikt
  150. sië nie dziwi, ûe mu moje programy nie dziaîajâ, jak np. nie
  151. ustawi MATH=STANDARD w preferencjach.
  152.  
  153. 2. Czytelnik ma podstawowâ wiedzë dotyczâcâ programowania i wie,
  154. co to sâ pëtle (choêby z BASIC-a FOR ... NEXT) czy instrukcje
  155. warunkowe (IF).
  156.  
  157. 3. Czytelnik ma pojëcie o C, wiëc nie bëdë tîumaczyî, co robiâ
  158. nawiasy z dwoma ôrednikami przy 'for', albo po co dwa plusy koîo
  159. siebie.
  160.  
  161. Poniûej podajë zawartoôê pliku SCOPTIONS dla kompilatora
  162. SAS/C 6.5.
  163.  
  164. <l>MATH=STANDARD
  165.  
  166. ERRORREXX
  167.  
  168. OPTIMIZE
  169.  
  170. LINK
  171.  
  172. OPTIMIZERTIME
  173.  
  174. <txt>Jeûeli masz procesor, np. MC68020 (EC lub peîny), moûesz
  175. wpisaê jeszcze dodatkowâ linië:
  176.  
  177. <l>CPU=68020
  178.  
  179. <txt>Podajesz oczywiôcie ten, który posiadasz (MC68010, 68020,
  180. 68030 lub 68040).
  181.  
  182. Schemat algorytmu w zasadzie omówiîem -- dla peînej kultury
  183. przedstawiam go na rysunku 2.
  184.  
  185. Przejdúmy do samego programu.  Jest on niesamowicie uproszczony,
  186. wynika to jednak tylko z ograniczonego miejsca, jakim dysponujë.
  187. Na uwagë zasîuguje przede wszystkim fakt, ûe przed postawieniem
  188. punktu na ekranie trzeba odpowiednio przekonwertowaê wspóîrzëdne.
  189. Ukîad wspóîrzëdnych ekranu róûni sië bowiem od ukîadu
  190. kartezjaïskiego. Niezbëdnâ konwersjë przeprowadzajâ funkcje x()
  191. oraz y(). Sama symulacja polega na rysowaniu odcinków o
  192. odpowiedniej dîugoôci, ustawionych w odpowiednim kierunku.
  193. Trzeba stworzyê funkcjë, która narysuje nam odcinek o zadanej
  194. dîugoôci (równej vp*t0), o jednym koïcu w punkcie aktualnego
  195. poîoûenia psa. Odcinek musi byê oczywiôcie skierowany w stronë
  196. aktualnego poîoûenia zajâca. Wspóîrzëdne drugiego punktu trzeba
  197. policzyê i poîâczyê odcinkiem z aktualnym poîoûeniem psa. Jak
  198. policzyê wspóîrzëdne drugiego punktu? Twierdzenie Pitagorasa *
  199. twierdzenie Talesa * rachunek wektorowy z I klasy liceum.
  200.  
  201. W ostatecznoôci popatrz na listing programu. Robi to funkcja
  202. odcinekP(). Analogiczna funkcja dotyczâca zajâca to funkcja
  203. odcinekZ(), z tym ûe jest ona o tyle prostsza, ûe rysowane
  204. odcinki sâ caîy czas równolegîe. W wypadku stwierdzenia, ûe
  205. dîugoôê odcinka (vp*t0, czyli dîugoôê tworzâcej îamanâ) jest
  206. wiëksza niû odlegîoôê psa od zajâca, rysowany jest odcinek
  207. krótszy, îâczâcy bezpoôrednio punkty ich poîoûeï. Serce algorytmu
  208. to pëtla. Jest ona powtarzana tak dîugo, aû pies dogoni zajâca
  209. lub wylezie za ekran. Warto równieû zaznaczyê, ûe nic nie stoi na
  210. przeszkodzie, aby jeszcze zajâc goniî np. za ûabâ, ale byîaby
  211. heca, pies goni zajâca, zajâc ûabë, a ûaba wyrywa przed siebie.
  212. Funkcjë odcinekZ() trzeba by wówczas przerobiê na podobieïstowo
  213. funkcji odcinekP() z tym, ûe trzeba celowaê w ûabë, która
  214. przejmuje dotychczasowâ rolë zajâca. Dodatkowo trzeba stworzyê
  215. funkcjë odcinekÛ(), przejmujâcâ dotychczasowâ rolë funkcji
  216. odcinekZ(). Zajâc nie startuje, oczywiôcie, wtedy z osi X (tzn.
  217. moûe, ale nie bëdzie zabawy, bo bëdzie goniî ûabë po prostej).
  218. Modyfikacja programu to 3 minuty, z czego 2 na kompilacjë.
  219.  
  220. Na rysunkach 3. i 4. przedstawiam przykîadowe krzywe i parametry
  221. wywoîania. Zwróê uwagë, ûe na rysunku 3. wyraúnie widaê, iû w
  222. ostatniej fazie poôcigu pies wîaôciwie wlazî zajâcowi na ogon i
  223. koïcówkë przebyî, goniâc go po prostej.  Wyraúniej to widaê, gdy
  224. prëdkoôê psa jest nieznacznie tylko wiëksza od prëdkoôci zajâca.
  225. Na rysunku 4. pies dogoniî zajâca szybciej, gdyû zajâc byî bliûej
  226. niû poprzednio.
  227.  
  228. A moûe znajdâ sië odwaûni, gotowi wziâê swojâ Amy i zaprezentowaê
  229. program na lekcji matematyki czy informatyki w liceum? To nic nie
  230. kosztuje, a moûna chyba w ten sposób urozmaiciê trochë wiejâce
  231. nudâ lekcje matematyki czy zrobiê zajëcia z informatyki na
  232. komputerze, a nie na Meritum czy pececie z herculesem, stawiajâc
  233. na ekranie punkty o wielkoôci ziarna grochu. Napiszcie, co o tym
  234. sâdzicie.
  235.  
  236. A teraz zadanie domowe, zwiâzane z treôciâ artykuîu.  Wyobraúmy
  237. sobie N-kât foremny o boku >a< (np. 5-kât foremny lub 100-kât
  238. foremny). W kaûdym wierzchoîku umieszczona jest rakieta
  239. samonaprowadzajâca wycelowana w sâsiada. Wystrzelamy wszystkie
  240. rakiety jednoczeônie -- kaûda ma znanâ prëdkoôê >v<.  W jakim
  241. miejscu (he, he) i po jakim czasie (juû nie he, he) rakiety sië
  242. zderzâ? Zadanie, wbrew pozorom, moûliwe do rozwiâzania na
  243. poziomie liceum.
  244.  
  245. Tyle.
  246.  
  247.  
  248. --------------czy to podajemy? tak.------
  249.  
  250. Bolesîaw Szczerba
  251.  
  252. e-mail: zfjmgr@usctoux1.cto.us.edu.pl
  253.