Chiziqli dasturlash masalalari va ularni yechish algoritmlari
3-Shaxsiy topshiriqni bajarish bo‘yicha qo‘llanma (30-variant misolida):
1. CHDM umumiy va variant berilishi bo‘yicha matematik modeli
keltirilsin, variant yuqorida ko‘rsatilgani kabi hisoblab chiqilsin.
15 x1 10 x2 5 x3 35n1 35n2 20n3
10 x1 4 x2 12 x3 32n1 18n2 28n3
4 x 15 x 10 x 18n 34n 35n
2
3
1
2
3
1
x1 , x2 , x3 0
L 1800 x1 2000 x2 1500 x3 max
CHDM umumiy matematik modeli:
𝑛
∑ 𝑎𝑖𝑗 𝑥𝑗 ≤ 𝑏𝑖 ,
𝑖 = 1,2, … , 𝑚,
𝑗=1
𝑥𝑗 ≥ 0,
𝑗 = 1,2, … , 𝑛,
𝑛
𝐹(𝑥) = ∑ 𝑐𝑗 𝑥𝑗 → max.
{
𝑗=1
CHDMni variant berilishi bo‘yicha matematik modeli:
Talabani raqami N=30 bo’lsa, n1={30%3}+1=0+1=1, n2={30%5}+1= 0+1=1,
n3={30%7}+1=2+1=3. Shunda: n1=1, n2=1, n3=3.
15𝑥1 + 10𝑥2 + 5𝑥3 ≤ 35 ∙ 1 + 35 ∙ 1 + 20 ∙ 3
{10𝑥1 + 4𝑥2 + 12𝑥3 ≤ 32 ∙ 1 + 18 ∙ 1 + 28 ∙ 3
4𝑥1 + 15𝑥2 + 10𝑥3 ≤ 18 ∙ 1 + 34 ∙ 1 + 35 ∙ 3
30-variant misoli quyidagi ko‘rinishda bo‘ladi:
15𝑥1 + 10𝑥2 + 5𝑥3 ≤ 130
{10𝑥1 + 4𝑥2 + 12𝑥3 ≤ 134
4𝑥1 + 15𝑥2 + 10𝑥3 ≤ 157
𝑥1 , 𝑥2 , 𝑥3 ≥ 0
𝐹(𝑥) = 1800𝑥1 + 2000𝑥2 + 1500𝑥3 → 𝑚𝑎𝑥
Variantga mos iqtisodiy masala tuzish:
Uch xil turdagi meva sharbatlarini ishlab chiqaruvchi hususiy kichik korxona bor.
Korxonada 130 kg olcha, 134 kg olma, 157 kg shakar bor. Birinchi turdagi 1 banka
sharbat ishlab chiqarish uchun 15 kg olcha, 10 kg olma, 4 kg shakar kerak. Ikkinchi
turdagi 1 banka sharbat ishlab chiqarish uchun 10 kg olcha, 4 kg olma, 15 kg shakar
kerak. Uchinchi turdagi 1 banka sharbat ishlab chiqarish uchun 5 kg olcha, 12 kg
olma, 10 kg shakar kerak. Birinchi turdagi 1 banka sharbat narxi 1800 so‘m.
Ikkinchi turdagi 1 banka sharbat narxi 2000 so‘m, Uchinchi turdagi 1 banka sharbat
narxi 1500 so‘m bo‘lsa, Ishlab chiqarish optimal rejasini aniqlang, ya’ni korxona
daromadi maksimal bo‘lishi uchun ishlab chiqarilishi kerak bo‘ladigan birinchi,
ikkinchi va uchinchi turdagi sharbatlar sonini aniqlang.
2. Berilgan masala uchun egizak masala qurilsin.
Ixtiyoriy ko‘rinishdagi CHDMga egizak masala qurish mumkin. Uning
ko‘rinishi (umumiy modeli) quyidagicha:
𝑚
∑ 𝑎𝑖𝑗 𝑦𝑖 ≥ 𝑐𝑗 ,
𝑗 = 1,2, … , 𝑛,
𝑖=1
𝑦𝑖 ≥ 0,
{
𝑖 = 1,2, … , 𝑚,
𝑚
𝑄(𝑦) = ∑ 𝑏𝑖 𝑦𝑖 → 𝑚𝑖𝑛.
𝑖=1
Bunda 𝐹𝑚𝑎𝑥 = 𝑄𝑚𝑖𝑛 tenglik o‘rinli.
30-variant egizak masalasi quyidagi ko‘rinishda bo‘ladi:
15𝑦1 + 10𝑦2 + 4𝑦3 ≥ 1800
{10𝑦1 + 4𝑦2 + 15𝑦3 ≥ 2000
5𝑦1 + 12𝑦2 + 10𝑦3 ≥ 1500
𝑦1 , 𝑦2 , 𝑦3 ≥ 0
𝑄(𝑦) = 130𝑦1 + 134𝑦2 + 157𝑦3 → 𝑚𝑖𝑛
3. Variant bo‘yicha tuzilgan matematik model kanonik ko‘rinishga
keltirilsin va unga mos simpleks jadval tuzilsin.
30-variant uchun kanonik ko‘rinishi:
15𝑥1 + 10𝑥2 + 5𝑥3 + 𝑥4 = 130
{10𝑥1 + 4𝑥2 + 12𝑥3 + 𝑥5 = 134
4𝑥1 + 15𝑥2 + 10𝑥3 + 𝑥6 = 157
𝐹(𝑥) = 1800𝑥1 + 2000𝑥2 + 1500𝑥3 → 𝑚𝑎𝑥
Simpleks jadval:
C
0
0
0
Bazis
x4
x5
x6
1800
x1
15
10
4
-1800
2000
x2
10
4
15
-2000
1500
x3
5
12
10
-1500
0
x4
1
0
0
0
0
x5
0
1
0
0
0
X6
0
0
1
0
B
130
134
157
4. Masalani yechishning simpleks usulini umumiy algoritmini keltirilsin.
5. Masala simpleks usulda yechilsin (Excel dasturi yordamida yoki
qo‘lda).
Masalani Excel dasturi yordamida yechish (30-variant uchun):
Simpleks usulida simpleks jadval tuzib olingandan so‘ng birinchi navbatda optimallikka
tekshiriladi. Buning uchun maqsad funksiyasi qiymatlari kiritilgan qator (oxirgi qator)da
manfiy elementlari qolmagan bo‘lishi kerak. Birinchi jadvalda hammasi manfiy bo‘ladi (biz
yechayotgan variantda: -1800, -2000, -1500). Agar manfiy elementlar mavjud bo‘lsa eng
kichigi turgan ustun kalit ustun bo‘ladi. Kalit ustun aniqlab olingandan keyin kalit qator
aniqlanadi. Buning uchun B (zaxira) elementi turgan usutdagi qiymatlar mas ravishda kalit
ustun turgan qiymatlarga bo‘linadi va eng kichik musbat qiymat chiqqan qator kalit qator
hisoblanadi. Kalit ustun va kalit qator (jadvalda havorangda belgilangan) kesishgan joydagi
element kalit element hisoblanadi. (Birinchi jadvalda kalit element 15 - sariq rangda
belgilangan).
Resurs-1
Resurs-2
Resurs-3
bazis
x4
x5
x6
Fx
Tovar-1
x1
15
10
4
-1800
Tovar-2
x2
10
4
15
-2000
Tovar-3
x3
5
12
10
-1500
x4
1
0
0
0
x5
0
1
0
0
x6
0
0
1
0
bazis
x4
x5
x2
Fx
x1
12.33333
8.933333
0.266667
-1266.67
x2
0
0
1
0
x3
-1.66667
9.333333
0.666667
-166.667
x4
1
0
0
0
x5
0
1
0
0
x6
-0.66667
-0.26667
0.066667
133.3333
B
25.33333 2.054054
92.13333 10.31343
10.46667
39.25
20933.33
bazis
x1
x5
x2
Fx
x1
1
0
0
0
x2
0
0
1
0
x3
x4
-0.13514 0.081081
10.54054 -0.72432
0.702703 -0.02162
-337.838 102.7027
x5
0
1
0
0
x6
-0.05405
0.216216
0.081081
64.86486
B
2.054054
-15.2
73.78378
7
9.918919 14.11538
23535.14
bazis
x1
x3
x2
Fx
x1
1
0
0
0
x2
0
0
1
0
x3
0
1
0
0
x4
x5
x6
0.071795 0.012821 -0.05128
-0.06872 0.094872 0.020513
0.026667 -0.06667 0.066667
79.48718 32.05128 71.79487
Zaxira
B
130
134
157
13
33.5
10.46667
B
3
7
5
25900
𝑎𝑟𝑗
) ∙ 𝑎𝑖𝑘
Yangi jadvalni to‘ldirishda
formuladan foydalanamiz. Yangi
𝑎𝑟𝑘
jadvalni tuzish oxirgi (Fx) qatorda manfiy element qolmaguncha davom ettiriladi. B
ustunda x1, x2, x3 - optimal qiymatlari hosil bo‘ladi.
𝑎𝑖𝑗 − (
6. Masalani simpleks usulda yechish dasturi yozilsin va natija (yechim)
olinsin.
Masalni simpleks usulda yechish uchun Python dasturlash tilida yozilgan
dastur. Kirish qiymatlari 30-variant uchun:
from scipy.optimize import linprog
# Maqsad funksiyasi koeffitsiyentlari (max Z -> min -Z)
c = [-1800 , -2000, -1500] # Maksimizatsiyani minimizatsiyaga o'girish
uchun manfiy belgili
# Cheklovlar (Ax ≤ b)
A=[
[15, 10, 5],
[10, 4, 12],
[4, 15, 10]
]
b = [130, 134, 157]
# O'zgaruvchilar uchun chegaralar (barcha x_i >= 0)
x_bounds = [(0, None), (0, None), (0, None)]
# Simpleks metodi yordamida yechim topish
res = linprog(c, A_ub=A, b_ub=b, bounds=x_bounds, method="highs")
# Natijani chiqarish
if res.success:
print(f"Optimal qiymatlar: x1 = {res.x[0]}, x2 = {res.x[1]}, x3 =
{res.x[2]}")
print(f"Optimal maqsad funksiyasi qiymati: {-res.fun}") # Negativ
bo'lgani uchun
else:
print("Yechim topilmadi!")
30-variant uchun natijasi:
7. Xulosa
Mazkur ishda chiziqli dasturlash masalasi simpleks metodi orqali yechildi.
Excelda
va
Dasturda
olingan
natijalarni
onlayn
kalkulyatorda
(https://programforyou.ru/calculators/simplex-method) olingan natijalar bilan
tekshirib solishtirib ko‘ramiz:
Ko‘rinib turibdiki onlayn kalkulyator, excel hamda dastur yordamida olingan
natijalar bir xil, masala simpleks metodida to‘g‘ri yechildi, optimal yechimlar
topilib, olish mumkin bo‘lgan maksimal daromad qiymati aniqlandi.
Olingan natijalarga ko‘ra optimal yechim x1=3, x2=5, x3=7 ekanligi ma’lum
bo‘ldi. Maqsad funksiyasi max qiymati: F(x)=1800*3+2000*5+1500*7=25900
ekan. Demak, sarf-xarajat mavjud resurslar zahirasidan oshmagan holda maksimal
daromad olishi uchun 1-mahsulotdan 3 ta, 2-mahsulotdan 5 ta uchinchi mahsulotdan
esa 7 ta ishlab chiqarishi kerak ekan.
Mazkur ishni bajarish davomida, chiziqli dasturlash masalasi va unga egizak
masala hamda ularning matematik modellari, ChDMni geometrik usulda yechish,
tayanch va optimal yechimlarni topish. ChDM simpleks usuli yordamida qo‘lda va
excelda yechish, masalani yechishni algoritmi va dasturini tuzish hamda natijalarni
olishni o‘rgandik.