O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI SAMARQAND FILIALI
"Dasturiy injiniring" kafedrasi
Algoritmlarni loyihalash fanidan
№ 5 мustaqil ta’lim ish hisoboti
Guruh 102-guruh
Talaba Oqilov O.
Rahbar BOYNAZAROV I. M.
Samarqand-2022
Mavzu: Chiziqli dasturlash masalasi. Egizak masala, uning iqtisodiy tahlili. Ikkilanganlik sharti
Reja
Chiziqli dasturlash
Optimal yechim
Geometrik usullar
Chiziqli dasturlash (ChD) – birinchi va puxta o'rganilgan matematik dasturlash bo'limlaridan biri. Bu "matematik dasturlash" fanining o'zi rivojlana boshlagan chiziqli dasturlash edi. Ushbu fan nomidagi "dasturlash" atamasi "kompyuter uchun dasturlash (ya'ni dastur tuzish)" atamasi bilan hech qanday aloqasi yo'q, chunki "chiziqli dasturlash" intizomi kompyuterlardan matematik, muhandislik, iqtisodiy va boshqa muammolarni echishda keng foydalanila boshlangan vaqtdan oldin ham paydo bo'lgan.
"Chiziqli dasturlash" atamasi ingliz tilidagi "chiziqli dasturlash" ning noto'g'ri tarjimasidan kelib chiqqan. "Dasturlash" so'zining ma'nolaridan biri bu rejalashtirish, rejalashtirishdir.
Shuning uchun ingliz tilidagi "chiziqli dasturlash" ning to'g'ri tarjimasi "chiziqli dasturlash" emas, balki "chiziqli rejalashtirish" bo'lishi kerak, bu esa fanning mazmunini aniq aks ettiradi. Shu bilan birga, chiziqli dasturlash, nochiziqli dasturlash, matematik dasturlash va boshqalar. adabiyotimizda umumiy qabul qilingan va shuning uchun saqlanib qoladi.
Shunday qilib, chiziqli dasturlash Ikkinchi Jahon Urushidan keyin paydo bo'ldi va matematiklar, iqtisodchilar va muhandislarning e'tiborini keng amaliy qo'llash imkoniyati va matematik uyg'unlik tufayli jalb qildi va tez rivojlana boshladi.
Chiziqli dasturlash masalalari. Haqiqiy olamning chiziqli tasviri gipotezasiga asoslanishi mumkin bo'lgan chiziqli dasturlash o'sha jarayonlar va tizimlarning matematik modellarini echishda qo'llaniladi.
Amaliy qism
Masalaning qo’yilishi
Quyigi chiziqli dasturlash masalalarini simpleksusuli bilan yeching.
Dastur kodi
#include
#include
#include
using namespace std;
#define ND 3
#define NS 3
#define N (ND+NS)
#define N1 (NS*(N+1))
void init(float x[],int n)
{
int i;
for(i=0;i
x[i]=0;
}
int main()
{
int i,j,k,ki,kj,bas[NS];
float a[NS][N+1],c[N],cb[NS],th[NS];
float x[ND],cj,z,t,b,min,max;
init(c,N);
init(cb,NS);
init(th,NS);
init(x,ND);
for(i=0;i
init(a[i],N+1);
for(i=0;ia[i][i+ND]=1.0;
for(i=0;i
bas[i]=ND+i;
for(i=0;i{
for(j=0;jcin>>a[i][j];
cin>>a[i][N];
}
for(j=0;jcin>>c[j];
cout<//Now calculate cj and identify the incoming variables
while(1)
{
max=0;
kj=0;
for(j=0;j
{
z=0;
for(i=0;iz += cb[i]*a[i][j];
cj=c[j]-z;
if(cj>max)
{
max=cj;
kj=j;
}
}
if(max <= 0)
break;
max=0;
for(i=0;iif(a[i][kj] != 0)
{
th[i]=a[i][N]/a[i][kj];
if(th[i]>max)
max=th[i];
}
if(max <= 0)
{
cout<<"Unbonded solution";
return 1;
}
min=max;
ki=0;
for(i=0;iif((th[i] < min) && (th[i] != 0))
{
min=th[i];
ki=i;
}
t=a[ki][kj];
for(j=0;ja[ki][j] /= t;
for(i=0;i
if(i != ki)
{
b=a[i][kj];
for(k=0;ka[i][k] -= a[ki][k]*b;
}
cb[ki]=c[kj];
bas[ki]=kj;
}
for(i=0;i
if((bas[i] >= 0) && (bas[i]x[bas[i]]=a[i][N];
z=0;
for(i=0;iz += c[i]*x[i];
cout<<"Optimal value="<
cout<return 0;
}
Dastur ishlashi
Do'stlaringiz bilan baham: |