Simpleks usulining asosiy g`oyasi Reja



Download 76,89 Kb.
bet1/2
Sana26.05.2022
Hajmi76,89 Kb.
#610130
  1   2
Bog'liq
Simpleks usulining asosiy g`oyasi


Simpleks usulining asosiy g`oyasi


Reja



  1. Simpleks usulining dasturiy ta’minoti.

  2. Stringrid jadvalini formaga tashlash.

  3. StringGrid jadval xossalarini o’zgartirish.



Simpleks usulining dasturiy ta’minoti.
Oldingi paragraflarda biz chiziqli dasturlash masalalari, chiziqli dasturlash masalasini echishning simpleks usuli, uning algoritmi bilan tanishgan edik. Endi ana shu simpleks usuli algoritmiga asosan uning dasturiy ta’minotini hosil qilishni ko’rib chiqamiz.
Ma’lumki, simpleks usuli bo’yicha bir nechta jadvallar hosil qilinadi. Ana shu jadvallarda simpleks usuli uchun kerakli ma’lumotlar kiritiladi. Masalan, 3 ta no’malumli bo’lgan holdagi chiziqli dasturlash masalasi quyidagi ko’rinishga ega:


Zmах =c1x1+c2x2+ c3 x3

a11x1 + a12x2 + a13 x b1 ,

a21x1 + a22x2 + a23 x3  b2 (2.3.1)

a31x1 + a32x2 + a33 x3  b3 ,

х1 , 2 ,3  0
Ushbu tengsizliklar sistemasini tenglamalar sistemasiga keltirish uchun qo’shimcha o’zgaruvchilar kiritganda so’ng u quyidagi ko’rinishga ega bo’ladi:


a11x1 + a12x2 + a13 xy1 = b1 ,

a21x1 + a22x2 +a23 x3 y2 = b2 ,

a31x1 + a32x2 + a33 xy3 = b3 . (2.3.2)

Zmах = c1x1+c2x2+ c3 x3 +c4 y1+c5 y2+ c6 y3 =

=c1x1+c2x2+ c3 x3 +0y1+0y2+0y3 .
Endi (2.3.2) da berilganlarni simpleks jadvalga joylashtirsak, u quyidagi ko’rinishga keladi :
2.3.1-jadval




Bazis o’zgaruv-chilar


Cj


Bi


х1


х2


x3





с1


с2


c3


Y1


С4


b1


a11


a12


a13




Y2


с 5


b2


a21


a22


a23




Y3


С6


b3


a31


a32


a33




Z- Cj


0


- с1


- с2


- сn



Ana shu jadvalni biz DELPHI formasida yaratamiz. Buning uchun Delphining Additional komponentlar palitrasidagi Stringgrid komponentasidan foydalanamiz. Dasturda ishlayotganda o’zgaruvchilar o’rnida aniq sonlar qo’yiladi. Shuning uchun quyidagi misolni qaraymiz.


Zmах =x1+2x2+ 3x3

x1 + 2x2 + 3 x 14 ,

2x1 + 2x2 +3 x3  21 (2.3.3)

x1 + x2 + 2 x3  22,

х1 , 2 ,3  0
Endi Delphi ekranida shu tenglamalar sistemasi va 2.3.1-jadvaldan foydalanib jadval hosil qilamiz. Buning uchun Stringgrid komponentasi yordamida jadval tashlab, unda 7 ta ustun, 6 ta satr hosil qilamiz.


2.3.1-chizma. Stringrid jadvalini formaga tashlash.


Ma’lumki, simpleks usulida bir necha jadvallar hosil qilinadi. Biz hozir 1-chi jadvaldan ishni boshlayapmiz. Endi 2.3.1-jadvaldagi ko’rinishni ushbu jadvalda hosil qilamiz. Buning uchun jadval kataklariga kerakli so’zlarni kiritib, sonlarni kiritish uchun quyidagi dastur qismini yozamiz:
BAZIS[1]:='Y1';BAZIS[2]:='Y2';BAZIS[3]:='Y3';XB[1]:='X[1]'; XB[2]:='X[2]';XB[3]:='X[3]'; FOR I:=1 TO 3 D BEGIN
STRINGGRID1.Cells[0,1+I]:=BAZIS[I];STRINGGRID1.Cells[2+I,0]:=XB[I]; END; STRINGGRID1.Cells[6,0]:='B[I]/A[I,J]';
STRINGGRID1.Cells[0,0]:='BAZIS'; STRINGGRID1.Cells[1,0]:='C[J]';
STRINGGRID1.Cells[2,0]:='B[J]';STRINGGRID2.Cells[6,0]:='B[I]/A[I,J]';
STRINGGRID2.Cells[0,0]:='BAZIS'; STRINGGRID2.Cells[1,0]:='C[J]';
STRINGGRID2.Cells[2,0]:='B[J]';X[1]:='1';X[2]:='2';X[3]:='3'; C[1]:='0';C[2]:='0'; C[3]:='0'; B[1]:=14; B[2]:=21; B[3]:=22;
FOR I:=1 TO 3 DO BEGIN
STRINGGRID1.Cells[2+I,1]:=X[I];STRINGGRID1.Cells[1,1+I]:=C[I];
STRINGGRID1.Cells[2,1+I]:=FLOATTOSTR(B[I]); END;
A[0,0]:=B[1];A[1,0]:=1; A[2,0]:=2; A[3,0]:=3;
A[0,1]:=B[2];A[1,1]:=2; A[2,1]:=2; A[3,1]:=5;
A[0,2]:=B[3];A[1,2]:=1; A[2,2]:=1; A[3,2]:=2;A[0,3]:=0;
A[1,3]:=-STRTOFLOAT(X[1]);A[2,3]:=-STRTOFLOAT(X[2]);A[3,3]:=-STRTOFLOAT(X[3]);
FOR I:=0 TO 3 DO FOR J:=0 TO 3 DO
STRINGGRID1.Cells[2+J,2+I]:=FLOATTOSTR(A[J,I]);


Ushbu dastur qismi ishlaganda 2.3.1-chizmadagi chizma quyidagi ko’rinishni oladi:


2.3.2-chizma. Jadval ma’lumotlar bilan to’ldirilgan hol.
Bu yerda biz bir va ikki o’lchovli massivlardan foydalandik. Simpleks usulining algoritmi bo’yicha oxirgi, maqsad satrini qaraymiz. Jadval ana shu satrda manfiy element qolmaguncha qayta hisoblab boriladi. Maqsad satr, ya’ni jadvaldagi oxirgi satrdan absolyut qiymati bo’yicha eng kattasini topishimiz kerak. Bizning misolda bu -3, ya’ni x[3] satri. Bu bilan biz hal qiluvchi satrni topgan bo’lamiz. Buning uchun quyidagi dastur qismini yozamiz:
ShowMessagePos('HAL QILUVCHI USTUNNI TOPISH', 600,500);
P:=0; J_USTUN:=0; FOR I:=1 TO 3 DO
IF P>A[I,3] THEN BEGIN P:=A[I,3];J_USTUN:=I; END;
MEMO1.Lines.Add('HAL QILUVCHI USTUN');
MEMO1.Lines.Add(FLOATTOSTR(P)+' '+INTTOSTR(J_USTUN));
Bu dastur qismi yordamida hal qiluvchi ustun nomeri aniqlanadi. Keyingi ish bu hal qiluvchi satrni topish. Buning uchun tenglamalar sistemasidagi ozod hadlar ustunidagi sonlar hal qiluvchi ustun elementlariga bo’linib chiqilib, B[i]/A[I,j] sarlavhali ustunga yoziladi. Ana shu ishlar uchun yozilgan dastur qismi quyidagicha:
ShowMessagePos('HAL QILUVCHI SATRNI TOPISH', 600,500);
//satr:=inputbox('A','B','HAL QILUVCHI SATRNI TOPISH');
FOR J:=0 TO 2 DO BEGIN
Stringgrid1.Cells[6,2+J]:=FLOATTOSTRF(A[0,J]/A[J_USTUN,J],ffFixed,5,2);
FOR I:=1 TO 2 DO
IF ABS(P)>ABS(BA[I]) THEN BEGIN P:=BA[I];J_SATR:=I; END;
Topilgan qiymatlar jadvalga yoziladi. Bu holdagi jadval ko’rinishi quyidagicha:


2.3.3-chizma. Hal qiluvchi satr va hal qiluvchi elementni aniqlash.


Ushbu chizmadan ko’rinadiki, hal qiluvchi satr 4,20 soni turgan satr va hal qiluvchi element 5, ya’ni hal qiluvchi ustun va hal qiluvchi satr kesishgan katakdagi son.
Algoritm bo’yicha keyingi ish hal qiluvchi satrdagi elementlar hal qiluvchi elementga bo’lib chiqiladi, hal qiluvchi ustun elementlar esa 0 bilan to’ldiriladi. Ushbu ishlarni bajarish uchun dastur qismi quyidagicha:
BUFER:=X[J_USTUN];C[J_SATR+1]:=BUFER; BUFER:=XB[J_USTUN];
XB[J_USTUN]:=BAZIS[J_SATR+1]; BAZIS[J_SATR+1]:=BUFER;
FOR I:=1 TO 3 DO BEGIN
STRINGGRID2.Cells[0,1+I]:=BAZIS[I]; STRINGGRID2.Cells[2+I,0]:=XB[I];
STRINGGRID2.Cells[1,1+I]:=C[I];
Bu ishlar endi keying 2-jadvalda bajariladi. Bu yerda hal qiluvchi ustundagi x[3] basis ustunidagi Y2 bilan almashtiriladi. Jadvalning qolgan elementlari Jordan-Gauss almashtirishi bilan topiladi. Jordan-Gauss almashtirish formulasi quyidagi ko’rinishga ega:

(2.3.4)


Ushbu formulalar bilan qiymatlarni hisoblash uchun quyidagi dastur qismini yozamiz:
FOR R:=0 TO 3 DO BEGIN FOR K:=0 TO 3 DO BEGIN
IF SITA[ITA]<>K THEN BEGIN IF J_SATR<>R THEN BEGIN
B1[R,K]:=(A[R,K]*A[J_SATR,J_USTUN]-A[R,J_USTUN]*A[J_SATR,K])/A[J_SATR,J_USTUN];
END; end; end;
Dastur bajarilib, qiymatlar jadvalga yozilgandan so’ng hosil bo’lgan ko’rinish quyidagicha:

Endi 2.3.4-chizmadagi jadvalning maqsad, ya’ni oxirgi satriga qarasak, bitta manfiy element qolgan. Demak yana jadval almashtirishini bajarishimiz kerak. Buning uchun 2-jadvaldan foydalanib hal qiluvchi ustunni aniqlaymiz. Bu ustun x[2] ustuni ekani ko’rinib turibdi, lekin uni dasturda ham aniqlaymiz. So’ng B[J] ustunidagi elementlarni shu hal qiluvchi ustun elementlariga ketma-ket bo’lib chiqamiz. Bo’lib chiqish natijalari 2.3.4-chizmada ko’rsatilgan. Jadvaldan ko’rinadiki, hal qiluvchi satr bu 1,75 soni turgan satr, buni dastur orqali ham aniqlaymiz. Demak, hal qiluvchi element bu 0,80. Demak,ushbu ustunni 0 bilan to’ldirib, satr elementlarini esa hal qiluvchi elementga bo’lib chiqamiz. Hal qiluvchi ustun sarlavhasi X[2] ni hal qiluvchi satr sarlavhasi Y1 bilan almashtiramiz. Jadvalning qolgan elementlarini Jordan-Gauss chiqarish algoritmi orqali hisoblaymiz. Ushbu barcha o’zgarishlarni endi 3-jadvalga joylashtiramiz. Agar barcha ishlarni bajarsak, 3-jadval quyidagicha bo’ladi:

2.3.5-chizma. 3-jadval elementlari to’ldirilgan hol.


Endi ushbu jadval maqsad satriga qarasak, manfiy elementlar qolmagan. Demak optimal echim topilgan, uning qiymati 14 ga teng. Buni C[J] ustunidagi elementlarni B[J] ustunidagi elementlarga ko’paytirib qo’shib chiqsak ham, shu son chiqishidan ko’rishimiz mumkin:
2*1,75+3*3,50=3,5+10,5=14.
Sunday qilib, optimal echim topildi. Optimal echimni topishda biz 3 ta jadval hosil qildik. Demak, biz Delphi formasiga 3 ta Stringgrid jadvalini tashlar ekanmiz. Undan tashqari sarlavhalarni yozish uchun Label komponentasidan foydalanamiz. Birinchi jadvalda asosan boshlang'ich ma'l’motlar’yoziladi. Ularni tahrirlash imkoniyatini berish uchun StringGrid1 komponentasining Properties xossasi Options bo’limini aktivlashtirib, Goediting satridagi FALSE so’zini TRUE so’zi bilan almashtiramiz.
Ushbu ishdan talabalarga “Iqtisodiy-matematik usullar” va “Jarayonlar tadqiqoti” fanlarini o’tishda ko’rgazmali vosita sifatida foydalanish mumkin. Talabalarga tushunarli bo’lishi uchun ana shu 3 ta jadvalni bitta ekranda joylashtiramiz. Bunda 1-jadvalda boshlang’ich ma’lumotlar joylashtirilgan va hal qiluvchi ustun va hal qiluvchi satr topilgan. 2-jadvalda endi hal qiluvchi ustun 0 va 1 lar bilan to’ldirilgan. Bunday Delphi muhiti endi quyidagi ko’rinishlarni oladi:



2.3.6-chizma. StringGrid jadval xossalarini o’zgartirish.


2.3.7-chizma. Barcha jadvallarni bitta ekran boylab joylashtirish.


Tuzilgan dastur grafik interfeysi talabalarga tushunarli bo’lishi uchun bitta ekranda bir necha jadvallar hosil qilindi. Ajratilgan ustun, satr ko’zga tezda tashlanishi uchun ularni ranglash effektidan ham foydalanish mumkin.

Download 76,89 Kb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish