root/doc/issues/user_info/diskuse.lyx @ 269

Revision 121, 12.3 kB (checked in by smidl, 16 years ago)

dikuse k userinfum

  • Property svn:eol-style set to native
Line 
1#LyX 1.5.5 created this file. For more info see http://www.lyx.org/
2\lyxformat 276
3\begin_document
4\begin_header
5\textclass scrartcl
6\language english
7\inputencoding auto
8\font_roman ae
9\font_sans default
10\font_typewriter default
11\font_default_family rmdefault
12\font_sc false
13\font_osf false
14\font_sf_scale 100
15\font_tt_scale 100
16\graphics default
17\paperfontsize default
18\spacing single
19\papersize default
20\use_geometry false
21\use_amsmath 1
22\use_esint 1
23\cite_engine basic
24\use_bibtopic false
25\paperorientation portrait
26\secnumdepth 3
27\tocdepth 3
28\paragraph_separation indent
29\defskip medskip
30\quotes_language english
31\papercolumns 1
32\papersides 1
33\paperpagestyle default
34\tracking_changes false
35\output_changes false
36\author ""
37\author ""
38\end_header
39
40\begin_body
41
42\begin_layout Title
43Podklady k diskusi na zadavani experimentu
44\end_layout
45
46\begin_layout Author
47Václav Šmídl
48\end_layout
49
50\begin_layout Date
5128.
52 května 2008
53\end_layout
54
55\begin_layout Section
56Cíl: uživatelsky přítulné a efektivní zadávání experimentů
57\end_layout
58
59\begin_layout Standard
60Mělo by být snadné zadat a použít následující typy experimentů a jejich
61 kombinací:
62\end_layout
63
64\begin_layout Subsection
65Trivial: odhadnutí ARX modelu z dat
66\end_layout
67
68\begin_layout Standard
69Uživatel zadá
70\end_layout
71
72\begin_layout Itemize
73datový soubor,
74\end_layout
75
76\begin_layout Itemize
77strukturu regresoru
78\end_layout
79
80\begin_layout Itemize
81způsob jakým se dozví výsledky.
82\end_layout
83
84\begin_layout Standard
85Mělo by být na úrovni předpřipraveného úkolu.
86\end_layout
87
88\begin_layout Subsection
89Iterators: cyklus přes několik možností
90\end_layout
91
92\begin_layout Standard
93Uživatel zadá
94\end_layout
95
96\begin_layout Itemize
97datový soubor,
98\end_layout
99
100\begin_layout Itemize
101výčet možných struktur regresorů (pole)
102\end_layout
103
104\begin_layout Itemize
105způsob vyhodnocení (pole?)
106\end_layout
107
108\begin_layout Standard
109Pro nestandardní typy výstupů může být třeba něco doprogramovat.
110\end_layout
111
112\begin_layout Subsection
113Shared parts: Agenti
114\end_layout
115
116\begin_layout Standard
117Uživatel zadá
118\end_layout
119
120\begin_layout Itemize
121vzorový popis agenta
122\end_layout
123
124\begin_layout Itemize
125pro každého dalšího agenta se načte ten vzorový a provedou se změny
126\end_layout
127
128\begin_layout Subsection
129Inheritance: výběr potomka
130\end_layout
131
132\begin_layout Standard
133Uživatel má (např.
134 v dialogu) na výběr z několika různých variant algoritmu.
135 V případě, že se liší parametrem se problém redukuje na triviální.
136\end_layout
137
138\begin_layout Standard
139Pokud varianty algoritmů jsou implementovány jako různé objekty pak by měl
140 dostat na výběr nejnižšího přípustného, kterého je možné specializovat
141 na jednotlivé potomky.
142\end_layout
143
144\begin_layout Standard
145Při změně potomka je třeba změnit zadání parametrů.
146 Uchovávání společných nastavení by bylo hezké, ale není nutné.
147\end_layout
148
149\begin_layout Section
150Úrovně řešení
151\end_layout
152
153\begin_layout Standard
154Problém je rozvrstven do několika úrovní, přičemž na každé z nich lze provádět
155 různě složité úkoly.
156 Přehled:
157\end_layout
158
159\begin_layout Standard
160\begin_inset Tabular
161<lyxtabular version="3" rows="4" columns="2">
162<features>
163<column alignment="center" valignment="top" leftline="true" width="0">
164<column alignment="left" valignment="top" leftline="true" rightline="true" width="70text%">
165<row topline="true">
166<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
167\begin_inset Text
168
169\begin_layout Standard
170GUI
171\end_layout
172
173\end_inset
174</cell>
175<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
176\begin_inset Text
177
178\begin_layout Standard
179Uživatelsky příjemná
180\begin_inset Quotes eld
181\end_inset
182
183klikací varianta
184\begin_inset Quotes erd
185\end_inset
186
187
188\end_layout
189
190\end_inset
191</cell>
192</row>
193<row topline="true">
194<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
195\begin_inset Text
196
197\begin_layout Standard
198UserInfo
199\end_layout
200
201\end_inset
202</cell>
203<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
204\begin_inset Text
205
206\begin_layout Standard
207Naklikané výsledky jsou uloženy ve formě textových souborů, které se dají
208 editovat.
209 (Textový editor může být efektivnější než klikátka, např.
210 global Replace)
211\end_layout
212
213\end_inset
214</cell>
215</row>
216<row topline="true">
217<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
218\begin_inset Text
219
220\begin_layout Standard
221Experiment
222\end_layout
223
224\end_inset
225</cell>
226<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
227\begin_inset Text
228
229\begin_layout Standard
230Zadané UserInfo se otestuje na platnost a vyrobí se spustitelný kód.
231 Na této úrovni je třeba ošetřit iterátory atp.
232\end_layout
233
234\end_inset
235</cell>
236</row>
237<row topline="true" bottomline="true">
238<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
239\begin_inset Text
240
241\begin_layout Standard
242Library
243\end_layout
244
245\end_inset
246</cell>
247<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
248\begin_inset Text
249
250\begin_layout Standard
251Sada funkcí a objektů které jsou experimentem volány.
252\end_layout
253
254\end_inset
255</cell>
256</row>
257</lyxtabular>
258
259\end_inset
260
261
262\end_layout
263
264\begin_layout Standard
265Obecně tento přístup máme naimplementován ve dvou variantách:
266\end_layout
267
268\begin_layout Subsection
269Jobcontrol
270\end_layout
271
272\begin_layout Standard
273Je výsledkem vývoje
274\begin_inset Quotes eld
275\end_inset
276
277zdola-nahoru
278\begin_inset Quotes erd
279\end_inset
280
281 proto napíšu obráceně:
282\end_layout
283
284\begin_layout Description
285Library knihovna mixtools
286\end_layout
287
288\begin_layout Description
289Experiment z experimentů ve formě m-filů, které prováděl Ivan postupně vykrystal
290izovala obecná šablona, ve které se pouze zaškrtávalo provést/neprovést.
291\end_layout
292
293\begin_layout Description
294UserInfo projekt jobcontrol měl za úkol usnadnit zadávání této šablony tím,
295 že se napíšou pouze relevantní parametry a automaticky se sestaví vzorový
296 m-file.
297\end_layout
298
299\begin_layout Description
300GUI po ustabilizování struktury UserInfa se napsalo GUI, které je šité výsledkům
301 na míru.
302\end_layout
303
304\begin_layout Subsection
305Mix3k
306\end_layout
307
308\begin_layout Standard
309Systém byl od začátku navrhován tak, aby umožňoval automatické zadávání
310 experimentu.
311 Klíčovou roli hrají objekty:
312\end_layout
313
314\begin_layout Description
315Library knihovna se skládá z několika
316\begin_inset Quotes eld
317\end_inset
318
319výpočetních
320\begin_inset Quotes erd
321\end_inset
322
323 objektů.
324 Například objekt ARENA má atributy:
325\end_layout
326
327\begin_deeper
328\begin_layout Description
329environment: model prostředí (které může například přehrávat uložená data),
330 a
331\end_layout
332
333\begin_layout Description
334participants: seznam aktivních objektů, které se umí v prostředí pohybovat.
335\end_layout
336
337\begin_layout Standard
338Kromě toho, má ARENA ma metodu run, která cyklicky volá metody environment.step()
339 a participant(i).run().
340\end_layout
341
342\end_deeper
343\begin_layout Description
344Experiment může být samostaný m-file vytvořený z prvků knihovny, nebo může
345 být vygenerován z UserInfa.
346 V extrémním případě může být
347\begin_inset listings
348lstparams "basicstyle={\ttfamily},language=Matlab"
349inline false
350status open
351
352\begin_layout Standard
353
354load UserInfo
355\end_layout
356
357\begin_layout Standard
358
359ARENA=build(UserInfo)
360\end_layout
361
362\begin_layout Standard
363
364run(ARENA)
365\end_layout
366
367\end_inset
368
369
370\end_layout
371
372\begin_layout Description
373UserInfo je klíčovou částí systému, je jednoznačnou parametrizací jednoho
374 výpočetního objektu tj, má jeho parametry jako atributy a má metody:
375\end_layout
376
377\begin_deeper
378\begin_layout Description
379build která generuje výpočetní objekt
380\end_layout
381
382\begin_layout Description
383askuser která je zodpovědná za interakci s uživatelem,
384\end_layout
385
386\begin_layout Standard
387Kličové je, že
388\series bold
389atributem userinfa můžou být jiná UserInfa
390\series default
391.
392\end_layout
393
394\end_deeper
395\begin_layout Description
396GUI je automaticky generováno voláním metody askuser.
397 V základní verzi se vytvoří prázdné UIExperiment a na něj se zavolá metoda
398 askuser().
399\end_layout
400
401\begin_layout Section
402Řešení základních scénářů v M3k
403\end_layout
404
405\begin_layout Subsection
406Trivial:
407\end_layout
408
409\begin_layout Standard
410Je definován ARXparticipant, který umí odhadovat ARX model a interagovat
411 s prostředím pomocí DataSource.
412\end_layout
413
414\begin_layout Standard
415Je definováno UIarxparticipant, který se umí zeptat na parametry ARX modelu.
416\end_layout
417
418\begin_layout Standard
419Tj.
420 při volání standardního Experimentu se vloží
421\end_layout
422
423\begin_layout Description
424environment typu čtení dat ze souboru
425\end_layout
426
427\begin_layout Description
428participant 1x UIarxparticipant.
429\end_layout
430
431\begin_layout Standard
432Po stisknutí tlačítka RUN se vygeneruje odpovídající ARENA.
433\end_layout
434
435\begin_layout Subsection
436Iterators
437\end_layout
438
439\begin_layout Standard
440Je podporováno pouze na úrovni Experiment.
441 Tj.
442 uživatel nakliká první experiment a vyrobí m-file:
443\begin_inset listings
444lstparams "basicstyle={\ttfamily},language=Matlab"
445inline false
446status collapsed
447
448\begin_layout Standard
449
450load UserInfo
451\end_layout
452
453\begin_layout Standard
454
455for i=1:5
456\end_layout
457
458\begin_layout Standard
459
460  ARENA.UIparticipants{i}.str = 1:i
461\end_layout
462
463\begin_layout Standard
464
465end
466\end_layout
467
468\begin_layout Standard
469
470ARENA=build(UserInfo)
471\end_layout
472
473\begin_layout Standard
474
475run(ARENA)
476\end_layout
477
478\end_inset
479
480
481\end_layout
482
483\begin_layout Standard
484Tj.
485 přímé vkládání v GUI není podporováno.
486 Informace o tom co a kdy změnit je třeba psát přímo do skriptu.
487\end_layout
488
489\begin_layout Standard
490Je možné navrhnout kombinaci, která vezme jiné userinfo a zpracuje ho:
491\end_layout
492
493\begin_layout Standard
494\begin_inset listings
495lstparams "basicstyle={\ttfamily},language=Matlab"
496inline false
497status collapsed
498
499\begin_layout Standard
500
501load UserInfo
502\end_layout
503
504\begin_layout Standard
505
506load Structures
507\end_layout
508
509\begin_layout Standard
510
511for i=1:5
512\end_layout
513
514\begin_layout Standard
515
516  ARENA.UIparticipants{i}.str = Structures{i}
517\end_layout
518
519\begin_layout Standard
520
521end
522\end_layout
523
524\begin_layout Standard
525
526ARENA=build(UserInfo)
527\end_layout
528
529\begin_layout Standard
530
531run(ARENA)
532\end_layout
533
534\end_inset
535
536
537\end_layout
538
539\begin_layout Subsection
540Shared parts
541\end_layout
542
543\begin_layout Standard
544Je možné dosáhnout použitím stejného přístupu jako v předchozím případě.
545 V UserInfu by byl jen jeden agent a ve for cyklu by se měnil.
546\end_layout
547
548\begin_layout Standard
549Další přístup, ketrý je udělán na úrovni GUI je save/load mechanismus, UserInfo
550 vytvořené pro jednoho agenta se uloží na disk a pak se načte jako jiný
551 agent.
552 
553\end_layout
554
555\begin_layout Description
556Nevýhoda: Ztrácí se spojení s původním objektem.
557 Pokud se ten změní tak se to nedozvíme...
558\end_layout
559
560\begin_layout Subsection
561Inheritance
562\end_layout
563
564\begin_layout Standard
565Je řešeno manuálně v UI objektu, který dané objekty používá.
566 Tj.
567 v UIExperiment.ask() jsou vyjmenovány všechny UI enviromentů a participantů,
568 které známe.
569\end_layout
570
571\begin_layout Description
572Nevýhoda: Pracné a neefektivná.
573\end_layout
574
575\begin_layout Section
576Nové XML rozhraní
577\end_layout
578
579\begin_layout Standard
580Co od toho očekávám:
581\end_layout
582
583\begin_layout Itemize
584Popis UserInfa v XML (nebo snad XSD?),
585\end_layout
586
587\begin_layout Itemize
588vylepšení možností scénářů iterators, inheritance a shared parts.
589\end_layout
590
591\begin_layout Itemize
592GUI editovatelnost ala
593\begin_inset LatexCommand url
594name "KXMLeditor"
595target "http://kxmleditor.sourceforge.net/screenshots/screenshots.html"
596
597\end_inset
598
599, který se ale už nevyvíjí...
600\end_layout
601
602\begin_layout Standard
603Čeho se bojím
604\end_layout
605
606\begin_layout Itemize
607Automatického GUI, kromě výše zmíněného KXMLeditoru jsem nic podobného nenašel...
608\end_layout
609
610\begin_layout Itemize
611Definice UserInfa přes XSD není zrovna jednoduché
612\end_layout
613
614\begin_layout Itemize
615Původní metoda build by se dala udělat přes metodu
616\emph on
617post_hello()
618\emph default
619, ale co a askuser? Dá se to zakomponovat do XSD?
620\end_layout
621
622\end_body
623\end_document
Note: See TracBrowser for help on using the browser.