2.2 laboratoriya mashg’uloti.
Mavzu: Chiziqli dasturlash masalasi uchun yechim, optimal yechim, uni topishda geometrik usul
Ishning maqsadi: Chiziqli dasturlash masalasini geometric usulda yechish, yechimni tahlil qilish.
Kerakli jihozlar: kompyuter, C++ dasturlash muhiti, proyektor.
Nazariy qism
CHiziqli dasturlash masalasining umumlashgan matematik modeli formasining yozilishi quyidagi ko‘rinishga ega.
Matematik modelning birinchi formulasi iqtisodiy ma’noda izlananayotgan miqdorlarga qo‘yiladigan cheklanishlarni ifodalaydi, ular resurslar miqdori, ma’lum talablarni qondirish zarurati, texnologiya sharoiti va boshqa iqtisodiy hamda texnikaviy faktorlardan kelib chiqadi. Ikkinchi shart - o‘zgaruvchilarning, yaьni izlanayotgan miqdorlarning manfiy bo‘lmaslik sharti bo‘lib hisoblanadi. Uchinchisi maqsad funksiyasi deyilib, izlanayotgan miqdorning biror bog‘lanishini ifodalaydi.
Chiziqli dasturlash masalasiga keluvchi quyidagi masalani qaraymiz.
Fabrika ikki xil A va V tikuv maxsulti ishlab chiqaradi. Bu mahsulotlarni ishlab chiqarishda uch xil N1,N2,N3 turdagi materiallarni ishlatadi. N1-materialdan 15 m., N2-materialdan 16 m., N3-materialdan 18 m. mavjud.
M1- mahsulotni ishlab chiqarish uchun N1-dan 2m., N2-dan 1m., N3-dan 3m. ishlatadi.
M2- mahsulotni ishlab chiqarish uchun N1-dan 3m., N2-dan 4m., N3-dan 0m. ishlatadi.
M1- mahsulotning bir birligidan keladigan foyda 10 so‘mni, M2 - mahsulotdan keladigan foyda 5 so‘mni tashkil qiladi.
Ishlab chiqarishning shunday planini tuzish kerakki fabrika maksimal foyda olsin. Masalaning matematik modelini tuzamiz:
Mathcadda chiziqli dasturlash masalasi echishda maximize va minimize funksiyalaridan foydalanish mumkin. Bu funksiyalar umumiy holda quyidagi ko‘rinishda yoziladi:
Maximize(F,)
Minimize(F,)
1-masala. Quyidagi chiziqli dasturlash masalasini yechimini tahlil qiling
Ko'rib chiqilayotgan masalaning optimal yechimi vektor hisoblanadi
2-masala.
Z = 2x + 3y maqsad funksiyasining maksimum qiymatini toping.
Chegaraviy shartlar quyidagicha berilgan:
x + y 30, y 3, 0 y 12, x - y 0, va 0 x 20.
Yechish
Birinchi navbatda koordinatalar sistemasida x 0, y 0 ekanligini belgilab olamiz.
Koordinatalar sistemasida x + y 30, y 3, y 12, x y va x 20, chegaralarni belgilab, ABCDE shaklni aniqlaymiz.
Shakl uchlaridagi nuqtalar A(3, 3), B (20, 3), C(20, 10), D(18, 12) va E(12, 12) bo’ladi.
Shakl uchlaridagi Z ning qiymatlari Z(A) = 15, Z(B) = 49, Z(C)= 70, Z(D)=72, va Z(E) = 60
D nuqtada Z maksimum qiymatga erishadi. Z(D)=72. Bu nuqtada x va y ning qiymatlari x = 18, y = 12 ga teng.
Dastur kodi
#include
#include
using namespace std;
int main(){
int i,j,n;
double c,c1;
cout<<"Zeydel usulida hisoblash\nTenglamalar sonini kiriting\n n=";
cin>>n;
float a[n+1][n+1],b[n+1],x[n+1],x1[n+1],l[n+1],z=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
cout<<"a["<>a[i][j];
}
for(i=1;i<=n;i++)
{ cout<<"b["<>b[i];
}
cout<<"maqsad funksiyadagi noma`lumlarning oldidagi koeffitsiyentlarni kiriting.";
for(i=1;i<=n;i++)
{ cout<<"l["<>l[i];
}
for(i=1;i<=n;i++){
c=a[i][i];
for(j=1;j<=n;j++)
a[i][j]=a[i][j]/c;
b[i]=b[i]/c;
x[i]=b[i];
}
L1: for(i=1;i<=n;i++) a[i][i]=0;
for(i=1;i<=n;i++)
{ c1=0;
for(j=1;j<=n;j++) c1+=a[i][j]*x[j];
x1[i]=b[i]-c1;
}
for(i=1;i<=n;i++)
if(fabs(x[i]-x1[i])>0.01) goto L2;
goto L3;
L2: for(i=1;i<=n;i++) x[i]=x1[i];
goto L1;
L3: cout<<"tenglamalar sistemasining yechimlari\n";
for(i=1;i<=n;i++){ cout<
z+=l[i]*x[i];}
cout<<"maqsad funksiya="<
return 0; }
Do'stlaringiz bilan baham: |