Loðimø teorija
Praktinë uþduotis
Nuotakos uþdavinys - kompiuterio pirkimas
|
Atliko: |
Tomas Gudauskas |
|
Jolita Ðvambarytë |
Uþduotis
Pritaikant nuotakos uþdavinio sprendimo modelá, paraðyti programà kompiuterio pirkimui. Turint bendrus kompiuteriø duomenis, reikia surasti naudingumo funkcijos reikðmes perkant kompiuterá kiekvienu laikotarpiu.
Uþduoties analizë
Turime tokius duomenis:
Atsakymas turëtø bûti kritiniø áspûdþiø reikðmes. T.y. jei tam tikru laikotarpiu, kompiuterio áspûdis virðija atitinkamo lentelëje laikotarpio kritiná dydá, kompiuteris yra perkamas, jei ne - laukiama sekanèio laikotarpio. Atsakymai gaunami sprendþiant dinaminio programavimo uþdaviná.
Kiekvienà laikotarpá pirkëjas gali pirkti kompiuterá arba nepirkti. Bûtina sàlyga, kad kompiuteris turi bûti nupirktas ir tik vienà kartà. Pirkëjas þino laikotarpiø, kuriais jis galës rinktis kompiuterá, skaièiø. Jo uþdavinys yra padaryti optimalø sprendimà ir maksimizuoti iðloðimà, nupirkus kompiuterá.
Sprendimas pradedamas nuo paskutinio laikotarpio. Skaièiuojamas pirkëjo iðloðimas perkant kiekvienu laikotarpiu.
Turime penkiø laikotarpiø kompiuteriø kainas. Nusistatome tam tikrà kainos lygá, pagal kurá ið kiekvieno laikotarpio atrenkame po vienà kompiuterá. Savo uþdavinyje parinkome kompiuterius, kuriø kaina artimiausia 3500 Lt.
Turime tokius kompiuteriø duomenis: MHz, Mb, Gb, kLt. Pagal juos konstruojame kompiuteriø gerumus w(i) pagal tokià formulæ:
w(i) = a1*MHz+a2*Mb+a3*Gb+a4*kLt.
Analogiðkai konstruojame pirkëjo áspûdþius s(i) pagal tokià formulæ:
s(i) = b1*MHz+b2*Gb.
Pasirinkome tokias koeficientø reikðmes: a1=1, a2=5, a3=50, a4=-10, b1=0.5, b2=40. Sunormuojame w(i) ir s(i) intervale [-1; 1]. Kompiuteriø gerumo vidurká apskaièiuojame pagal formulæ:
Jaunikiø - kompiuteriø iðsibarstymas skaièiuojamas pagal formulæ: ![]()
Pirkëjo áspûdþio nuokrypá nuo kompiuterio gerumo ávertinome expertiðkai ir jo reikðmæ parinkome
Laukimo nuostoliai: c=0.01
Teorinë dalis
Ðis uþdavinys yra sprendþiamas dinaminiu programavimu pagal toká algoritmà:
1) Pirmas þingsnis
![]()
![]()
![]()

![]()
![]()

![]()
![]()
2) Antras þingsnis
![]()
![]()
![]()
![]()
..........................................
N) Paskutinis þingsnis
![]()
![]()
![]()
![]()
Instrukcija vartotojui
Vartotojui yra pateikiama jau paruoðta vykdyti programa. Kiekvienai UNIX atmainai reikia programà sukompiliuoti ið naujo, todël galima bûtø pateikti ne vykdomàjà programà, bet programos textà. Tuo atveju programà reikia sukompiliuoti:
gcc nuotaka.c -o bride -lm
Programa pradedama vykdyti ávedus
bride. Programa papraðo ávesti laikotarpiø kieká N, kompiuteriø gerumø vidurkáToliau programa skaièiuoja ir praneða koká naudoja gerumø intervalà, koká tikslumo þingsnelá ir kiek su ðiuo þingsneliu bus vykdoma iteracijø. Atlikus skaièiavimus, ekrane bus atspausdinta kritiniø gerumø lentelë kiekvienam laikotarpiui. Kadangi esant dideliam laikotarpiø kiekiui atvaizduota lentelë iðstums ávestas reikðmes ið ekrano, tai po lentele programa atspausdina kokie duomenys buvo ávesti.
Rezultatai
Hello, this is BRYDE's problem solution!!!
Co-workers: Tomas Gudauskas and Jolita Svambaryte
Enter the quantity of grooms N=5
Enter the average miu=0.26
Enter the scatter sigma0=0.368
Enter the brides slip sigma=0.1
Enter the waiting looses c=0.1
Gerumu intervalas [-0.844000, 1.364000], zingsnelis 0.100000, iteraciju kiekis 22
Skaiciuojame....
*********************************************************
* REZULTATU (gerumu) LENTELE *
*********************************************************
* Uz 1-o teka jei geresnis nei 0.056000 *
* Uz 2-o teka jei geresnis nei 0.056000 *
* Uz 3-o teka jei geresnis nei 0.056000 *
* Uz 4-o teka jei geresnis nei 0.056000 *
* Uz 5-o teka jei geresnis nei -0.844000 *
*********************************************************
Tai ivyko prie tokiu duomenu:
Ivedete N=5, miu=0.260000, sigma0=0.368000, sigma=0.100000, c=0.100000
Iðvados
Gavome rezultatus ne visai tokius, kokiø tikëjomës. Visuose þingsniuose, iðskyrus keletà paskutiniø, gauname vienodas kritines reikðmes. Mes nesame ásitikinæ savo uþdavinio sprendimo teisingumu, nes kritinës reikðmës turëtø skirtis. Galimos mûsø klaidos:
1) Realûs duomenys (kompiuteriø gerumai) buvo panaudoti tik skaièiuojant vidurká
ir iðsibarstymà
.
2) Aproximacijoje gerumø ir áspûdþiø reikðmës buvo paimtos vienodos (naudojant tuos paèius intervalo rëþius ir skaidant á tokias pat dalis).
Realiame gyvenime nuotakos modelis nelabai tinka kompiuterio pirkimui, nes nuotakos sàlyga yra ta, kad ji neþino bendro visø jaunikiø gerumo vidurkio, o mûsø sprendime pirkëjas turi þinoti bendrà kompiuteriø (tame tarpe ir ateities !!!) gerumo vidurká.
Priedas A
Duomenys
|
a1 |
a2 |
a3 |
a4 |
b1 |
b2 |
max |
|||
|
1 |
5 |
50 |
-10 |
0.5 |
40 |
494.71 |
|||
|
min |
|||||||||
|
244.84 |
|||||||||
|
97.06.04 |
MHz |
Mb |
Gb |
kLt |
W |
S |
Wnorm |
Snorm |
|
|
1 |
120 |
8 |
3.2 |
3.326 |
286.74 |
188 |
|||
|
2 |
133 |
8 |
2.1 |
3.316 |
244.84 |
150.5 |
|||
|
3 |
133 |
8 |
2.5 |
3.397 |
264.03 |
166.5 |
|||
|
4 |
133 |
8 |
3.2 |
3.558 |
297.42 |
194.5 |
|||
|
5 |
150 |
16 |
1.2 |
3.506 |
254.94 |
123 |
-0.920 |
-1.000 |
|
|
6 |
150 |
16 |
1.6 |
3.553 |
274.47 |
139 |
|||
|
7 |
150 |
16 |
2.1 |
3.648 |
298.52 |
159 |
|||
|
8 |
150 |
16 |
2.5 |
3.728 |
317.72 |
175 |
|||
|
9 |
166 |
16 |
1.2 |
3.828 |
267.72 |
131 |
|||
|
10 |
166 |
16 |
1.6 |
3.875 |
287.25 |
147 |
|||
|
97.07.24 |
MHz |
Mb |
Gb |
kLt |
|||||
|
1 |
120 |
8 |
3.2 |
3.113 |
288.87 |
188 |
|||
|
2 |
133 |
8 |
2.5 |
3.217 |
265.83 |
166.5 |
|||
|
3 |
133 |
8 |
3.2 |
3.326 |
299.74 |
194.5 |
|||
|
4 |
150 |
16 |
1.2 |
3.113 |
258.87 |
123 |
|||
|
5 |
150 |
16 |
2.5 |
3.364 |
321.36 |
175 |
|||
|
6 |
150 |
16 |
3.2 |
3.473 |
355.27 |
203 |
-0.116 |
-0.116 |
|
|
7 |
166 |
16 |
1.6 |
3.25 |
293.5 |
147 |
|||
|
8 |
166 |
16 |
2.1 |
3.369 |
317.31 |
167 |
|||
|
9 |
166 |
16 |
2.5 |
3.444 |
336.56 |
183 |
|||
|
10 |
166 |
16 |
3.2 |
3.553 |
370.47 |
211 |
|||
|
97.08.28 |
MHz |
Mb |
Gb |
kLt |
|||||
|
1 |
133 |
8 |
3.2 |
3.197 |
301.03 |
194.5 |
|||
|
2 |
150 |
16 |
2.1 |
3.31 |
301.9 |
159 |
|||
|
3 |
150 |
16 |
2.5 |
3.446 |
320.54 |
175 |
|||
|
4 |
150 |
8 |
3.2 |
3.493 |
315.07 |
203 |
|||
|
5 |
166 |
16 |
1.2 |
3.242 |
273.58 |
131 |
|||
|
6 |
166 |
16 |
1.6 |
3.283 |
293.17 |
147 |
|||
|
7 |
166 |
16 |
2.1 |
3.366 |
317.34 |
167 |
|||
|
8 |
166 |
16 |
2.5 |
3.502 |
335.98 |
183 |
-0.27 |
-0.338 |
|
|
9 |
166 |
16 |
3.2 |
3.549 |
370.51 |
211 |
|||
|
10 |
200 |
16 |
2.1 |
3.721 |
347.79 |
184 |
|||
|
97.9.30 |
MHz |
Mb |
Gb |
kLt |
|||||
|
1 |
150 |
16 |
2.5 |
3.099 |
324.01 |
175 |
|||
|
2 |
150 |
16 |
3.2 |
3.144 |
358.56 |
203 |
|||
|
3 |
166 |
16 |
1.2 |
3.021 |
275.79 |
131 |
|||
|
4 |
166 |
16 |
1.6 |
3.067 |
295.33 |
147 |
|||
|
5 |
166 |
16 |
2.1 |
3.173 |
319.27 |
167 |
|||
|
6 |
166 |
16 |
2.5 |
3.273 |
338.27 |
183 |
|||
|
7 |
166 |
16 |
3.2 |
3.318 |
372.82 |
211 |
|||
|
8 |
200 |
16 |
2.1 |
3.518 |
349.82 |
184 |
-0.16 |
-0.326 |
|
|
9 |
200 |
16 |
2.5 |
3.619 |
368.81 |
200 |
|||
|
10 |
200 |
16 |
3.2 |
3.663 |
403.37 |
228 |
|||
|
97.10.30 |
MHz |
Mb |
Gb |
kLt |
|||||
|
1 |
166 |
16 |
1.2 |
2.841 |
277.59 |
131 |
|||
|
2 |
166 |
16 |
1.6 |
2.884 |
297.16 |
147 |
|||
|
3 |
166 |
16 |
2 |
2.976 |
316.24 |
163 |
|||
|
4 |
166 |
16 |
2.5 |
3.06 |
340.4 |
183 |
|||
|
5 |
166 |
16 |
3.1 |
3.076 |
370.24 |
207 |
|||
|
6 |
200 |
16 |
2 |
3.327 |
346.73 |
180 |
|||
|
7 |
200 |
16 |
2.5 |
3.411 |
370.89 |
200 |
|||
|
8 |
200 |
16 |
3.1 |
3.428 |
400.72 |
224 |
0.248 |
0.116 |
|
|
9 |
200 |
16 |
4.2 |
3.706 |
452.94 |
268 |
|||
|
10 |
200 |
16 |
5.1 |
4.029 |
494.71 |
304 |