Matlab-Sympleksy_s.DOC

(59 KB) Pobierz
GRAFY I SIECI

1

Zastosowanie Matlaba – programowanie liniowe - studenci

Zastosowanie Matlaba –zadanie programowania liniowego ZPL.

Zadanie programowania liniowego:

Znajdź min funkcji ,                            przy ograniczeniach:                            .

gdzie macierze,              wektory.

 

Wykorzystujemy funkcję linprog.

 

Składnia

x = linprog(c,A,b)                           

x = linprog(c,A,b,Aeq,beq)                           

x = linprog(c,A,b,Aeq,beq,lb,ub)

 

Funkcjia linprog rozwiązuje zagadnienie programowania liniowego (ZPL).
x = linprog(c,A,b) rozwiązuje zdania: , z ograniczeniami typu .

 

x = linprog(c,A,b,Aeq,beq) rozwiązuje powyższe zadanie z dodatkowymi ograniczeniami równościowymi: . Jeśli nie występują ograniczenia nierównościowe wstawiamy A=[] oraz b=[] .
 

x = linprog(c,A,b,Aeq,beq,lb,ub) pozwala określić zakresy dopuszczalnych wartości dla zmiennych decyzyjnych x, wtedy rozwiązanie spełnia warunek

. Jeśli nie występują ograniczenia równościowe wstawiamy Aeq=[] oraz beq=[] .

 

[x,z] = linprog(...) zwraca wartość funkcji celu dla uzyskanego rozwiązania
 


Zastosowanie programu Matlab

 

Zad.1. Wyznacz wartość funkcji  à max

przy ograniczeniach bilansowych:                            i              brzegowych .
Odp. Wykorzystamy do obliczeń funkcję linprog o składni:

[x, fval] = linprog(c, A, b, Aeq, beq, lb, ub)

w wyniku jej działania otrzymamy wektor x z rozwiązaniem oraz zysk pod zmienną fval.

Przygotujmy dane wejściowe do funkcji linprog:

1)              wektor c              wektor współczynników funkcji celu: c = [ 1 3 2 ];

2)              macierz A              macierz współczynników lewej strony nierówności:             

A=[ 1 2 11 1 1; 0 1 2 ];

3)               wektor b              wektor liczb znajdujących się po prawej stronie:              b = [ 5 ,    4,       1];

4)              Macierz Aeq i wektor beq dotyczy równości w naszym wypadku pozostawiamy je                        puste:                            Aeq = [];                            beq = [];
5)              Wektor lb:              Wektor ograniczeń dolnych rozwiązania. Każda zmienna rozwiązania ma być większa od 0:               lb = [ 0 0 0 ];
6) Wektor ub:   Wektor ograniczeń górnych rozwiązania. Nie nakładamy ograniczeń górnych na zmienne rozwiązania: ub = [] lub  ub = [inf inf inf]; inf nieskończenie duża liczba.

 

Wstawienie danych do funkcji linprog:

Zapis [x, fval] możemy zastąpić [x, z] , wtedy zapisujemy wywołanie w postaci:

[x, z] = linprog(–c, A, b, Aeq, beq, lb, ub)
Ponieważ standardowo funkcja linprog liczy minimum funkcji celu, musimy wektor c wstawić ze znakiem minus wówczas funkcja wyliczy minimum funkcji .  Wynik z funkcji:              x =[3.0000 , 1.0000, 0.0000]                 = 6.0000
Wstawiliśmy znak minus przed wektor c dzięki czemu uzyskaliśmy minimum funkcji celu ale dlatego też uzyskaliśmy zysk ze znakiem minus. Licząc maximum funkcji celu czytamy wartość z pomijając minus: ,              zysk = 6.

Wygodnie jest wywołać funkcję następującą:               [x, z]= linprog(–c, A, b, Aeq, beq, lb, ub)
 

Zgłoś jeśli naruszono regulamin