• Natijalar
  • Chiziqli dasturlash masalasining matematik modeli




    Download 0,53 Mb.
    bet2/2
    Sana19.06.2024
    Hajmi0,53 Mb.
    #264322
    1   2
    Bog'liq
    4.1 amaliy algoritim-loyihalash Iteratsiya usuli

    Chiziqli dasturlash masalasining matematik modeli
    1. O'zgaruvchilarni aniqlash:

    2. Maqsad funksiyasi:
    Aviakompaniya foydasini maksimal qilish kerak. Foyda quyidagicha aniqlanadi:

    • Birinchi klass chipta narxi: 400 AQSH dollar

    • Ekonom-klass chipta narxi: 300 AQSH dollar

    Maqsad funksiyasi: MaksimalZ=400x+300y\text{Maksimal} \quad Z = 400x + 300yMaksimalZ=400x+300y
    3. Chegaraviy shartlar:

    1. Samolyotda jami yo'lovchilar soni 200 tadan oshmasligi kerak: x+y≤200x + y \leq 200x+y≤200

    2. Birinchi klass uchun kamida 20 ta joy ajratilishi kerak: x≥20x \geq 20x≥20

    3. Ekonom-klassdagi yo'lovchilar soni birinchi klass yo'lovchilar sonidan 4 marta ko'p bo'lishi kerak: y=4xy = 4xy=4x

    4. Manfiy bo'lmagan shartlar: x≥0x \geq 0x≥0 y≥0y \geq 0y≥0

    4. Masalaning chiziqli dasturlash modeli:
    MaksimalZ=400x+300y\text{Maksimal} \quad Z = 400x + 300yMaksimalZ=400x+300y shartlar\text{shartlar}shartlar x+y≤200x + y \leq 200x+y≤200 x≥20x \geq 20x≥20 y=4xy = 4xy=4x x≥0x \geq 0x≥0 y≥0y \geq 0y≥0
    Simpleks usuli yordamida yechish
    Simpleks usuli bilan yechish uchun birinchi navbatda tenglamalar tizimini standarti ko'rinishga keltirish kerak. Ushbu masalada tenglamani tizim sifatida yozamiz va qo'shimcha o'zgaruvchi kiritamiz.

    1. Chegaraviy shartni standart ko'rinishga keltirish: x+y≤200x + y \leq 200x+y≤200

    Bu tenglamani tenglikka aylantirish uchun qo'shimcha o'zgaruvchi sss (slack variable) kiritamiz: x+y+s=200x + y + s = 200x+y+s=200

    1. Maqsad funksiyasini maksimal qilish uchun Simpleks jadvalini tuzamiz.

    Simpleks jadvali:
    Simpleks jadvalini tuzish va yechish uchun quyidagi Python kodidan foydalanamiz:
    Dastur kodi:
    # -*- coding: utf-8 -*-
    """
    Created on Fri May 31 18:53:28 2024

    @author: kamoliddin


    """

    from scipy.optimize import linprog

    # Maqsad funksiyasi koeffitsiyentlari (salbiy ko'paytirilgan, chunki scipy linprog minimalizatsiyani amalga oshiradi)
    c = [-400, -300]

    # Chegaraviy shartlar koeffitsiyentlari


    A = [
    [1, 1],
    [-1, 0],
    [-4, 1]
    ]

    # Chegaraviy shartlar tenglamasi


    b = [200, -20, 0]

    # Simpleks usuli yordamida yechish


    result = linprog(c, A_ub=A, b_ub=b, bounds=(0, None), method='simplex')

    # Natijalarni chiqarish


    print(f"Birinchi klass chiptalari soni (x): {result.x[0]}")
    print(f"Ekonom-klass chiptalari soni (y): {result.x[1]}")
    print(f"Maksimal foyda (Z): {-result.fun}")

    Natija:


    Natijalar:


    Ushbu dastur orqali biz birinchi va ekonom-klass chiptalari sonini hamda maksimal foydani aniqlashimiz mumkin. Dasturda scipy kutubxonasidagi linprog funksiyasi yordamida chiziqli dasturlash masalasini Simpleks usulida yechamiz.

    Xulosa:


    Ushbu masala chiziqli dasturlash masalasining standart ko'rinishiga keltirildi va Simpleks usuli yordamida yechildi. Natijada, aviakompaniya foydasini maksimal qilish uchun har bir klassdan qancha chipta sotishi kerakligi aniqlandi.
    Download 0,53 Mb.
    1   2




    Download 0,53 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Chiziqli dasturlash masalasining matematik modeli

    Download 0,53 Mb.