DMBO Sieci.

Slides:



Advertisements
Podobne prezentacje
ANALIZA SIECIOWA PRZEDSIĘWZIĘĆ konstrukcja harmonogramu
Advertisements

DOMINOWANIE W GRAFACH Magdalena Lemańska.
Wybrane zastosowania programowania liniowego
Grażyna Mirkowska PJWSTK 15 listopad 2000
Metoda simpleks Simpleks jest uniwersalną metodą rozwiązywania zadań programowania liniowego. Jest to metoda iteracyjnego poprawiania wstępnego rozwiązania.
Programowanie sieciowe
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
Badania operacyjne. Wykład 1
Badania operacyjne. Wykład 2
ALGORYTMY I STRUKTURY DANYCH
Materiały pochodzą z Platformy Edukacyjnej Portalu
Ciągi de Bruijna generowanie, własności
Zliczanie III.
WYKŁAD 7. Spójność i rozpięte drzewa
WYKŁAD 8. Siła spójności Wierzchołek v nazywamy wierzchołkiem cięcia grafu G, gdy podgraf G-v ma więcej składowych spójności niż G. Krawędź e nazywamy.
WĘDRÓWKI PO GRAFACH Obchody Eulera Cykle Hamiltona.
WYKŁAD 8. Siła spójności A,B – dowolne podzbiory V(G)
Zagadnienie transportowe
Modele problemów decyzyjnych – przykłady
Komputerowe Wspomaganie Decyzji 2007/2008 Modele problemów decyzyjnych – przykłady II Dr hab. inż. Kazimierz Duzinkiewicz, Katedra Inżynierii Systemów.
Wykład 2: Upraszczanie, optymalizacja i implikacja
Metoda simpleks opracowanie na podstawie „Metody wspomagające podejmowanie decyzji w zarządzaniu” D. Witkowska, Menadżer Łódź Simpleks jest uniwersalną.
Problem transportowy opracowanie na podstawie „Metody wspomagające podejmowanie decyzji w zarządzaniu” D. Witkowska, Menadżer Łódź 2000.
Wstęp do interpretacji algorytmów
Algorytmy genetyczne.
WYKŁAD 7. Spójność i rozpięte drzewa Graf jest spójny, gdy dla każdego podziału V na dwa rozłączne podzbiory A i B istnieje krawędź z A do B. Definicja.
Minimalne drzewa rozpinające
Przepływy w sieciach. Twierdzenie minimaksowe.
SKIEROWANE Marek Bil Krzysztof Fitrzyk Krzysztof Godek.
Graf - jest to zbiór wierzchołków, który na rysunku przedstawiamy za pomocą kropek oraz krawędzi łączących wierzchołki. Czasami dopuszcza się krawędzie.
Algorytmy i struktury danych
Optymalizacja liniowa
Badania operacyjne Wykład 5.
II Zadanie programowania liniowego PL
Badania operacyjne Wykład 6.
Modelowanie populacji i przepływu opinii pomiędzy aktorami sztucznej inteligencji za pomocą sieci społecznej Wojciech Toman.
Zadanie programowania liniowego PL dla ograniczeń mniejszościowych
Zagadnienie transportowe
Języki i automaty część 3.
Wspomaganie Decyzji II
DMBO Branch and bound.
MS Excel - wspomaganie decyzji
II Zadanie programowania liniowego PL
Algorytmy i Struktury Danych
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Zagadnienie i algorytm transportowy
Drogi i cykle Eulera w grafach nieskierowanych
WĘDRÓWKI PO GRAFACH Obchody Eulera Cykle Hamiltona.
GRA CHOMP. Czym jest chomp? Jest to gra dla dwóch osób, rozgrywana na prostokątnej tablicy, zwanej „tabliczką czekolady”
Rodzaje Liczb JESZCZE SA TAKIE
Rodzaje liczb.
Autor: Michał Salewski
Wstęp do interpretacji algorytmów
Grafy.
Zarządzanie projektami
Modelowanie matematyczne – złożoność obliczeniowa, teoria a praktyka
Pojęcia podstawowe c.d. Rachunek podziałów Elementy teorii grafów
Treść dzisiejszego wykładu l Metoda kar. l Podsumowanie przekształcania zadań programowania liniowego do postaci tabelarycznej. l Specjalne przypadki –sprzeczność,
Metody Badań Operacyjnych Michał Suchanek Katedra Ekonomiki i Funkcjonowania Przedsiębiorstw Transportowych.
Zagadnienia transportowe Katedra Ekonomiki i Funkcjonowania Przedsiębiorstw Transportowych.
Treść dzisiejszego wykładu l Postać standardowa zadania PL. l Zmienne dodatkowe w zadaniu PL. l Metoda simpleks –wymagania metody simpleks, –tablica simpleksowa.
Metody programowania sieciowego w zarządzaniu przedsięwzięciami Programowanie sieciowe stanowi specyficzną grupę zagadnień programowania matematycznego.
Rozpatrzmy następujące zadanie programowania liniowego:
Metody optymalizacji Materiał wykładowy /2017
Elementy analizy sieciowej
Problem ustalania grafiku ciąg dalszy
Algorytmy i struktury danych
ALGORYTMY I STRUKTURY DANYCH
Zarządzanie projektami
Zapis prezentacji:

DMBO Sieci

Wprowadzenie do grafów: Mosty w Koenigsbergu Leonard Euler zastanawiał się, czy można przejść przez każdy most tylko raz (1736)

Konceptualizacja - węzły

Konceptualizacja - krawędzie

Czy istnieje spacer po wszystkich mostach, tak aby żaden się nie powtórzył?

Gdyby tak zbudować dwa dodatkowe mosty.

Każdy taki spacer musi wejść i wyjść z każdego wierzchołka dokładnie raz. Czyli stopień każdego wierzchołka musi być parzysty.

Cykl Eulera Cykl Hamiltona Problem komiwojażera

Problem komiwojażera – objazd cykl Czas trwania: 2 d 7 h 2 m Długość trasy: 3615 km

Problem komiwojażera – objazd ścieżka Czas trwania: 2 d 4 h 37 m Długość trasy: 3436 km

Problem komiwojażera – prawdziwy spacer Czas trwania: 29 d 11 h 21 m Długość trasy: 3485 km

Problem komiwojażera (travelling salesman problem TSP) Problem można zapisać matematycznie jako Zmienna decyzyjna xij równa się 1, gdy komiwojażer przejeżdża z miasta i do miasta j, 0 w przeciwnym przypadku Możliwość przejazdu z danego miasta do tego samego miasta jest zabroniona

Problem komiwojażera Koszt przejazdu z miasta do miasta to dij Funkcja celu to łączny koszt przejazdu trasy Pierwsze ograniczenie oznacza, że komiwojażer musi opuścić każde miasto dokładnie raz Drugie ograniczenie oznacza, że komiwojażer musi wjechać do każdego miasta dokładnie raz Czy to już wszystko? Załóżmy, że w problemie z 5 miastami rozwiązanie optymalne to x12=x23=x31=x45=x54=1 To rozwiązanie spełnia powyższe ograniczenia i może być optymalne. Jednak zawiera podtrasy (subtours) – rozłączne pętle o rozmiarze mniejszym niż wszystkie miasta Trzeba wprowadzić dodatkowe ograniczenia

Eliminacja podtras Pętle dla dwóch miast Pętle dla trzech miast Pętle dla czterech miast Itd. Jednak w praktycznej implementacji takich ograniczeń byłoby stanowczo za dużo – w problemie z 30 miastami byłoby 870 ograniczeń likwidujących tylko pętle dla dwóch miast

Eliminacja podtras – drugie podejście Wprowadzamy dodatkowe nieujemne zmienne ciągłe ui: Podtrasy są wyeliminowane Ile jest takich ograniczeń? (N-1)2-N, czyli w problemie z 30 miastami wszystkich ograniczeń byłoby 812, a wcześniej tylko ograniczeń dla pętl o długości dwa było 870.

Gra http://www.tsp.gatech.edu/games/index.html

Centra teleinformatyczne Wprowadzenie do sieci Dwa główne elementy: Łuki (krawędzie) [arcs/edges] Wierzchołki [nodes] Graf [graph] to struktura, którą buduje się poprzez łączenie wierzchołków łukami Graf skierowany [directed graph] (digraf [digraph]) jest grafem, w którym łuki mają określony kierunek Sieć [network] to graf (lub digraf), w którym łuki mają przyporządkowany przepływ [flow] Oto parę prostych przykładów sieci: Wierzchołki Łuki Przepływ Miasta Autostrady Samochody Centra teleinformatyczne Przewody Przekazywane pakiety Łączenia rurociągów Rury Woda

Wprowadzenie do sieci Łańcuch [chain] to ciąg łuków łączących dwa wierzchołki i i j, np. ABCE, ADCE Ścieżka [path] to ciąg skierowanych łuków łączących dwa wierzchołki, np. ABDE, ale nie ABCE Cykl [cycle] to łańcuch który łączy wierzchołek z samym sobą bez żadnego powtarzania [retracing], np. ABCEDA, ale nie ABCDECBA Graf/sieć spójny/a [connected graph/network] ma tylko jedną część graf graf skierowany

Wprowadzenie do sieci Drzewo [tree] – graf spójny nie mający cyklów. Drzewo rozpinające [spanning tree] to drzewo wybrane spośród łuków w grafie lub w sieci tak, aby wszystkie wierzchołki w drzewie były połączone dwa drzewa rozpinające dwa drzewa Zdolność przepływowa [flow capacity] – górna (czasem też dolna) granica ilości przepływu danego łuku w sieci, np. maksymalna ilość wody w rurociągu Źródło [source] to wierzchołek który wprowadza przeływ do sieci Zlew [sink] to wierzchołek, który wyprowadza przepływ z sieci

Problem najkrótszej trasy [The shortest route problem] Sformułowanie: Dla danego grafu, w którym każdy łuk oznaczony jest poprzez dystans pomiędzy wierzchołkami, które on łączy, jaka jest najkrótsza trasa pomiędzy wierzchołkiem i i innym wierzchołkiem j. Na przykład: Jaka jest najkrótsza trasa pomiędzy A i H? Wyliczenie wszystkich możliwości [enumeration] – niepraktyczne Algorytm Dijkstra

Algorytm Dijkstra http://optlab-server.sce.carleton.ca/POAnimations2007/DijkstrasAlgo.html

Problem najmniejszego drzewa rozpinającego [minimum spanning tree] Sformułowanie: Dla danego grafu, w którym łuki są oznaczone poprzez odległości pomiędzy wierzchołkami, które łączą, znajdź drzewo rozpinające, które ma najmniejszą łączną długość Na przykład: Znajdź minimalną długość kabla, aby połączyć wszystkie biura w budynku mając dane wszystkie dopuszczalne trasy kabli Algorytm: http://optlab-server.sce.carleton.ca/POAnimations2007/MinSpanTree.html Przykład zachłannego algorytmu [greedy algorithm] – robi co jest najlepsze w danym kroku nie patrząc na resztę problemu (zazwyczaj nieefektywne – tutaj TAK!) Można też robić maksymalne drzewo rozpinające w ten sam sposób

Maksymalny przepływ i minimalne cięcie [maximum flow and the minimum cut] Sformułowanie: Jaki jest maksymalny przepływ pomiędzy danym wierzchołkiem a jakimś innym wierzchołkiem w sieci? Na przykład: Znajdź maksymalny przepływ samochodów z parkingu podziemnego w centrum miasta do wyjazdu na autostradę? Każdemy łukowi przyporządkowujemy maksymalny możliwy jednoczesny przepływ pomiędzy dwoma wierzchołkami, które ten łuk łączy. Przepływ może się różnic w zależności od kierunku (np. jednokierunkowe ulice) 4 samochody na minutę na trasie A-D-E-G 3 samochody na minutę na trasie A-B-E-G {jednoczesny przepływ na łuku E-G wynosi teraz 7} 4 samochody na minutę na trasie A-C-F-G Przepływ łączny 11 samochodów na minutę z A do G

Maksymalny przepływ i minimalne cięcie [maximum flow and the minimum cut] Algorytm: Ford and Fulkerson (Canadian Journal of Mathematics 1956) http://optlab-server.sce.carleton.ca/POAnimations2007/MaxFlow.html

Maksymalny przepływ i minimalne cięcie [maximum flow and the minimum cut] Dlaczego potrzeba dodawać przepływy w odwrotnym kierunku? Konwencja rachunków, aby zaznaczyć przepływ, który, jeśli trzeba, można cofnąć.

Maksymalny przepływ i minimalne cięcie [maximum flow and the minimum cut] Maksymalny przepływ jest związany z minimalnym cięciem: Cięcie [cut] to każdy zbiór skierowanych łuków zawierający przynajmniej jeden łuk w każdej ścieżce ze źródła do zlewu (przeznaczenia). Jeśli usuniemy łuki z danego cięcia, to przepływ jest zupełnie odcięty. Wartość cięcia [cut value] to suma wszystkich zdolności przepływowych w kierunku od źródła do przeznaczenia dla wszystkich łuków w cięciu. Możliwe cięcia z zaznaczonymi wartościami tych cięć

Twierdzenie Max-flow/min-cut Twierdzenie: Dla każdej sieci z jednym źródłem i jednym zlewem, maksymalny możliwy przepływ ze źródła do przeznaczenia równa się minimalnej wartości cięcia dla wszystkich cięć w tej sieci. Intuicja: Maksymalny przepływ przez serię rur, równy jest ograniczony przez wąskie gardło. Minimalne cięcie to rodzaj rozłożonego wąskiego gardła, czyli wąskiego gardła dla całej sieci w przeciwieństwie do wąskiego gardła dla serii rur. Czyli do znalezienia minimalnego cięcia można posłużyć się również algorytmem Forda-Fulkersona. Jak już zakończy działanie algorytm, zaznacz łuki, które ciągną przepływ równy ich maksymalnej możliwości przepływu. Wtedy poszukaj cięcia, które składa się tylko z zaznaczonych łuków i żadnych innych.

Maksymalny przepływ i minimalne cięcie [maximum flow and the minimum cut] Minimalne cięcie z wartością w kierunku do przodu równą 14. 4 drogi B-E, D-E, F-E oraz F-G to wąskie gardło sieci i powinno się je poszerzyć w pierwszej kolejności Ale możesz nie dostać 1 jednostki powiększenia przepływu na każdą jednostkę dodanej zdolności przepływowej w łuku z minimalnego cięcia. Tak się dzieje, ponieważ zwiększony przepływ przez ten łuk może aktywować nowe wąskie gardło w górze bądź w dole rzeki licząc od tego łuku. Zdolności przepływu mogą oznaczać koszty. Wówczas minimalne cięcie oznacza minimalny koszt zablokowania przepływu w całej rzece.

Programowanie przepływów sieciowych [Network flow programming] Formułowanie i rozwiązywanie problemów sieciowych poprzez programowanie liniowe nazywamy programowaniem przepływów sieciowych. Każdy problem przepływów sieciowych może być przedstawiony jako program przepływów sieciowych minimalnego kosztu [Minimum-cost network flow program]: Zmienne: nieznane przepływy przyporządkowane łukom Zachowanie przepływu w wierzchołkach: Źródło [source] lub zlew [sink] :

Programowanie przepływów sieciowych [Network flow programming] Ograniczenia przepływów na łukach: mogą być dolne (np. minimalny wskaźnik produkcji w fabryce) {bazowa wartość 0} bądź górne (np. maksymalny przepływ przez rurę) {bazowa wartość +∞} przepływy nie powinny być ujemne (traci się przejrzystość przedstawienia sieci) Koszt jednostki przepływu {wartość bazowa 0}: (jeśli ujemny to jest to przychód) Funkcja celu: Są trzy parametry dla każdego łuku: [l, u, c] Ograniczenie dolne l Ograniczenie górne u Koszt jednostki przepływu c

Diagram a program liniowy Relacja 1:1 Od teraz odpowiednio oznaczony diagram uważać będziemy za równoważny sformułowaniu programu liniowego.

Właściwości Współczynniki przy zmiennych występujących po lewej stronie ograniczeń przyjmują wartości -1,0 lub 1 Wszystkie operacje pivot w algorytmie simplex składają się li tylko z dodawania i odejmowania (nie ma potrzeby mnożenia) Jeszcze lepiej: operacje dodawania i odejmowania mogą być zastąpione poprzez operacje logiczne w sieciowym algorytmie sympleks [Network simplex algorithm] Jeśli po prawej stronie wszystkich ograniczeń są liczby całkowite i wszystkie operacje pivot są operacjami dodawania i odejmowania, to zmienne decyzyjne w optymalnym rozwiązaniu też będą całkowite – właściwość unimodularności [unimodularity property] Bardzo użyteczne w rozwiązywaniu wielu zadań programowania całkowitoliczbowego, np. zadań przyporządkowania [assignment problem]

Problem transportowy Prosty, ale bardzo przydatny w praktyce Składa się ze zbioru źródeł produktów (np. fabryki), które są bezpośrednio połączone z punktami przeznaczenia (np. rynki w różnych miastach). Każdemu połączeniu przyporządkowany jest koszt na jednostkę przepływu Podaż nie większa niż zdolność danej fabryki Popyt dokładnie równy dostarczonym produktom Każdy łuk ma bazowe dolne i górne ograniczenie i koszt (w nawiasie)

Problem przyporządkowania [assignment problem] Pojawia się również jako problem programowania całkowitoliczbowego. Przyporządkowanie zbioru ludzi do zbioru zadań tak, aby zminimalizować łączny czas wykonania zadań. Każda osoba potrzebuje pewną ilość czasu na wykonanie danego zadania albo nie jest w stanie w ogóle tego zadania wykonać. Każda osoba może być przyporządkowana do dokładnie jednego zadania.

Problem przyporządkowania [assignment problem] Problem przyporządkowania może być sformułowany w postaci sieci transportowej: Każda osoba to wierzchołek źródłowy, który wprowadza dokładnie jedną jednostkę przepływu do sieci (jeśli jest więcej osób niż zadań: nie więcej niż jedną jednostkę) Każde zadanie to wierzchołek przeznaczenia, który usuwa z sieci dokładnie jedną jednostkę przepływu Koszt przepływu na każdym łuku to ilość minut danej osoby/dane zadanie Optymalne przepływy w łukach będą równe dokładnie 0 lub dokładnie 1 Z powodu własności unimodularności będą liczbami całkowitymi Ponieważ źródła i punkty przeznaczenia mają przypływy i odpływy równe dokładnie 1

Problem transportowy z przeładunkami [transshipment problem] Tak jak problem transportowy, ale dodatkowo: są wierzchołki, które zachowują przepływ [flow conserving nodes] – punkty przeładunku wierzchołki źródłowe i przeznaczenia mogą również służyć za punkty przeładunku B jest jednocześnie źródłem i punktem przeładunku G jest jednocześnie punktem przeznaczenia i punktem przeładunku D i E są tylko punktami przeładunku

Problem najkrótszej trasy [shortest route problem] Zamiast algorytmu Dijkstra można rozwiązać programowaniem sieciowym Postępowanie jest następujące: Stwórz diagram sieciowy Zapisz etykiety łuków: ograniczenie dolne 0, ograniczenie górne +∞, koszt = długość łuku, np. [0, ∞,12] Punkt początkowy jest wierzchołkiem źródłowym z dokładnie jedną jednostką przepływu bez kosztu za jednostkę przepływu, zatem [1,1,0] Punkt końcowy jest wierzchołkiem przeznaczenia z dokładnie jedną jednostką przepływu bez kosztu za jednostkę przepływu, a więc [1,1,0] Łuki z dodatnim przepływem będą na najkrótszej trasie. Dzięki własności unimodularności przepływ na łuku będzie 0 albo 1.

Problem drzewa najkrótszej trasy [shortest route tree problem] Tak samo jak problem najkrótszej trasy tylko, że wierzchołków przeznaczenia może być wiele (jeśli nie wszystkie) Problem to znalezienie najkrótszej trasy z punktu początkowego do każdego punktu końcowego Można rozwiązać wiele problemów najkrótszej trasy zmieniając punkt końcowy, ale prostszy sposób to rozwiązać to za pomocą jednego problemu. Załóżmy, że jest n wierzchołków przeznaczenia. Postępowanie: Stwórz diagram sieciowy Zapisz etykiety łuków: ograniczenie dolne 0, ograniczenie górne +∞, koszt = długość łuku, np. [0, ∞,12] Punkt początkowy jest wierzchołkiem źródłowym z dokładnie n jednostkami przepływu bez kosztu za jednostkę przepływu, zatem [n,n,0] Punkt końcowy jest wierzchołkiem przeznaczenia z dokładnie jedną jednostką przepływu bez kosztu za jednostkę przepływu, a więc [1,1,0] W optimum tylko całkowite przepływy (unimodularność). Należy zaznaczyć wszystkie łuki, które mają dodatni przepływ. Najkrótszą trasę znajdujemy od tyłu. Począwszy od danego wierzchołka końcowego poruszamy się zaznaczonymi łukami w kierunku wierzchołka początkowego.

Maksymalny przepływ / Minimalne cięcie [Max flow / Min cut problem] Zamiast algorytmu Forda-Fulkersona możemy zastosować programowanie sieciowe – problem przepływu sieciowego o minimalnym koszcie. Postępowanie jest następujące: Stwórz diagram sieciowy Stwórz etykiety dla każdego łuku: dolne ograniczenie 0, górne ograniczenie równe maksymalnemu przepływowi dla tego łuku i koszt przepływu 0, np. [0,25,0] Stwórz wierzchołek początkowy z bardzo wysokim górnym ograniczeniem bez kosztu za przepływ, a więc [0,M,0], gdzie M jest bardzo dużą liczbą Niech każdy wierzchołek końcowy będzie potencjalnym odpływem [sink node] z bardzo wysoką zdolnością przepływową i z kosztem na jednostkę przepływu równym -1, a więc [0,M,-1], gdzie M jest bardzo dużą liczbą W optimum: rozważmy wierzchołek przeznaczenia. Ma on koszt na jednostkę -1. Funkcja celu to minimalizacja kosztu, zatem program będzie chciał przepuścić jak najwięcej przez ten wierzchołek. W wierzchołku źródłowym będzie również chciał przepuścić jak najwięcej. Ograniczeniem będzie przepustowość sieci (czyli jej poszczególnych łuków)

Maksymalny przepływ / Minimalne cięcie [Max flow / Min cut problem] Rozwiązanie problemu przepływu o najniższym koszcie dostarczy następujących informacji: Odpływ z sieci w wierzchołku przeznaczenia równa się maksymalnemu przepływowi sieci Przepływy w poszczególnych łukach tworzą schemat przepływów w maksymalnym przepływie sieci Minimalne cięcie znajdujemy tak samo, jak po skończeniu algorytmu Forda-Fulkersona: Zaznacz łuki, które wykorzystują całą swoją zdolność przepływu. Znajdź cięcie wykorzystujące wyłącznie zaznaczone łuki. Jaka jest dobra wartość M? Nie za mała – musi być na pewno większa niż maksymalny przepływ, którego szukamy Nie za duża – żeby uniknąć problemów numerycznych Dobra propozycja – wartość przypadkowego cięcia w sieci, ponieważ wiemy z twierdzenia max flow/min cut, że wartość cięcia będzie nie mniejsza niż wartość maksymalnego przepływu w sieci

Sieci uogólnione [generalized networks], sieci z ograniczeniami pomocniczymi [network with side constraints] oraz sieci procesowe [processing networks] W sieci uogólnionej, łuki mają współczynniki przyrostu [gain factors]: czyli liczby, które wymnaża się przepływ wchodzący do danego łuku, aby uzyskać przepływ wychodzący z łuku Np. współczynnik przyrostu (a raczej obniżenia) 0,9 może oznaczać nieszczelny rurociąg Np. współczynnik przyrostu 1,1 może oznaczać wzrost wartości obiektu w sieci transportowej z wartością obiektu jako przepływami Sieci z ograniczeniami pomocniczymi – może zajść potrzeba dodania dodatkowego ograniczenia, które nie jest sieciowe (współczynniki przy zmiennych -1, 0 i 1), np. Specjalistyczne algorytmy dla sieci z ograniczeniami pomocniczymi (część sieciowa rozwiązywana za pomocą szybkiego algorytmu sieciowego a reszta normalnie i potem te rozwiązania są łączone) Sieci procesowe – bardzo przydatne do modelowania systemów inżynierskich bądź firm, takie sieci mają dodatkowo wierzchołki procesujące [processing nodes], w których przepływy w sąsiadujących łukach muszą występować w ściśle określonych proporcjach względem siebie

Model z 1963 roku Mamy dwie fabryki (Seattle i San Diego) i trzy rynki zbytu (New York, Chicago i Topeka) Uwzględniając popyt rynków zbytu oraz podaż fabryk celem jest minimalizacja kosztów transportu homogenicznego towaru pomiędzy fabrykami a rynkami zbytu

Cel: minimalizacja całkowitego kosztu transportu Decyzja: jak dużo przewieźć z fabryki A do rynku zbytu B Subskrypty: i: fabryki j: rynki zbytu Dane: Podaż towaru w fabryce i (w skrzyniach): Popyt na towar na rynku j (w skrzyniach): Koszt na przewozu jednej skrzyni z fabryki i do rynku j: Zmienne decyzyjne – liczba skrzyń przewożonych pomiędzy i a j Ograniczenia Ograniczona podaż: Trzeba zaspokoić popyt:

1) Echo Print

1) Echo Print cd. 3) Equation Listing 2) Error Messages normalnie są tutaj i tutaj się kończy wtedy 3) Equation Listing

3) Equation Listing cd.

4) Model Statistics 5) Status Report: Solver i Model Status

6) Solution Reports

6) Solution Reports cd. 7) Report summary

8) Execution i Display

Sets Deklaracja i przypisanie Data: Parameters Tables Scalars

Variables: Deklaracja i przypisanie typu Equations: Deklaracja i definicja Komendy Model i Solve Opcjonalnie Display

Deklaracja – stwierdzenie istnienia czegoś i nadanie temu czemuś nazwy Przypisanie/definicja – nadanie czemuś konkretnej wartości lub formy