zadaniem programowania liniowego całkowitoliczbowego. nazywamy zadaniem programowania liniowego 0-1. Zatem, w

Podobne dokumenty
Programowanie liniowe całkowitoliczbowe

Programowanie liniowe całkowitoliczbowe

Metoda graficzna może być stosowana w przypadku gdy model zawiera dwie zmienne decyzyjne. Metoda składa się z dwóch kroków (zobacz pierwszy wykład):

Programowanie liniowe całkowitoliczbowe. Tadeusz Trzaskalik

Modelowanie całkowitoliczbowe

etody programowania całkowitoliczboweg

1 Przykładowe klasy zagadnień liniowych

Programowanie liniowe metoda sympleks

Programowanie liniowe metoda sympleks

Programowanie liniowe metoda sympleks

Sieć (graf skierowany)

Algorytmy i struktury danych.

Programowanie liniowe

Programowanie liniowe

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

) a j x j b; x j binarne (j N) całkowitoliczbowe; przyjmujemy (bez straty ogólności): c j > 0, 0 <a j b (j N), P n

ZAGADNIENIE TRANSPORTOWE(ZT)

Programowanie liniowe. Tadeusz Trzaskalik

Sieć (graf skierowany)

Programowanie dynamiczne i algorytmy zachłanne

Programowanie liniowe

OPTYMALIZACJA DYSKRETNA

Badania Operacyjne Ćwiczenia nr 5 (Materiały)

doc. dr Beata Pułska-Turyna Zarządzanie B506 mail: mgr Piotr J. Gadecki Zakład Badań Operacyjnych Zarządzania B 505.

Definicja problemu programowania matematycznego

Rozdział 2 PROGRAMOWANIE LINIOWE CAŁKOWITOLICZBOWE

Firma JCo wytwarza dwa wyroby na dwóch maszynach. Jednostka wyrobu 1 wymaga 2 godzin pracy na maszynie 1 i 1 godziny pracy na maszynie 2.

Badania operacyjne. Dr hab. inż. Adam Kasperski, prof. PWr. Pokój 509, budynek B4 Materiały do zajęć dostępne na stronie:

Zagadnienie transportowe

Programowanie liniowe

A. Kasperski, M. Kulej Badania Operacyjne- programowanie liniowe 1

1 Programowanie całkowitoliczbowe PLC

Wykład z modelowania matematycznego. Zagadnienie transportowe.

ZAGADNIENIE TRANSPORTOWE

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

A. Kasperski, M. Kulej, Badania operacyjne, Wykład 4, Zagadnienie transportowe1

Zadanie transportowe i problem komiwojażera. Tadeusz Trzaskalik

Metody Optymalizacji. Wstęp. Programowanie matematyczne. Dr hab. inż. Maciej Komosiński, mgr Agnieszka Mensfelt

Standardowe zadanie programowania liniowego. Gliwice 1

Rozdział 1 PROGRAMOWANIE LINIOWE

Optymalizacja liniowa w liczbach całkowitych (PLC)

Układy równań liniowych

Wielokryteriowa optymalizacja liniowa

Rozwiązanie Ad 1. Model zadania jest następujący:

Wstęp do programowania

Badania operacyjne. Dr Michał Kulej. Pokój 509, budynek B4 Forma zaliczenia wykładu: egzamin pisemny.

c j x x

PROGRAMOWANIE CAŁKOWITOLICZBOWE

Badania operacyjne. te praktyczne pytania, na które inne metody dają odpowiedzi jeszcze gorsze.

Optymalizacja. Algorytmy dokładne

Notatki do tematu Metody poszukiwania rozwiązań jednokryterialnych problemów decyzyjnych metody dla zagadnień liniowego programowania matematycznego

Metoda simpleks. Gliwice

0 + 0 = 0, = 1, = 1, = 0.

Zadania 1. Czas pracy przypadający na jednostkę wyrobu (w godz.) M 1. Wyroby

Kolejny krok iteracji polega na tym, że przechodzimy do następnego wierzchołka, znajdującego się na jednej krawędzi z odnalezionym już punktem, w

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Optymalizacja. Algorytmy dokładne

BADANIA OPERACYJNE pytania kontrolne

Metody Ilościowe w Socjologii

Elementy Modelowania Matematycznego

OPTYMALIZACJA W LOGISTYCE

Elementy Modelowania Matematycznego

Algorytm simplex i dualność

Klasyczne zagadnienie przydziału

METODY OBLICZENIOWE OPTYMALIZACJI zadania

Przykłady problemów optymalizacyjnych

Wykład na Politechnice Krakowskiej w dniu 18 stycznia 2012 r. ZADAŃ I ALGORYTMÓW W OPTYMALIZACJI DYSKRETNEJ

Wykład 7. Informatyka Stosowana. Magdalena Alama-Bućko. 16 kwietnia Magdalena Alama-Bućko Wykład 7 16 kwietnia / 23

5. Rozwiązywanie układów równań liniowych

Wprowadzenie do badań operacyjnych - wykład 2 i 3

[1] E. M. Reingold, J. Nievergelt, N. Deo Algorytmy kombinatoryczne PWN, 1985.

Elementy Modelowania Matematycznego Wykład 7 Programowanie nieliniowe i całkowitoliczbowe

Programowanie nieliniowe

Układy równań i nierówności liniowych

Rozwiązywanie problemów z użyciem Solvera programu Excel

Programowanie liniowe

Ćwiczenia laboratoryjne - 7. Problem (diety) mieszanek w hutnictwie programowanie liniowe. Logistyka w Hutnictwie Ćw. L. 7

Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe. P. F. Góra

Politechnika Wrocławska, Wydział Informatyki i Zarządzania. Optymalizacja

1.2. Rozwiązywanie zadań programowania liniowego metodą geometryczną

Metody wielokryterialne. Tadeusz Trzaskalik

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Optymalizacja systemów

ALGORYTMY EWOLUCYJNE W OPTYMALIZACJI JEDNOKRYTERIALNEJ

ZAGADNIENIE DUALNE Rozważmy zagadnienie liniowe(zagadnienie to nazywamy prymalnym) o postaci kanonicznej:

Badania Operacyjne Ćwiczenia nr 2 (Materiały)

Ćwiczenia laboratoryjne - Dobór optymalnego asortymentu produkcji programowanie liniowe. Logistyka w Hutnictwie Ćw. L.

OPTYMALIZACJA W LOGISTYCE

Temat: Algorytmy zachłanne

Przykład wykorzystania dodatku SOLVER 1 w arkuszu Excel do rozwiązywania zadań programowania matematycznego

Zagadnienie transportowe (badania operacyjne) Mgr inż. Aleksandra Radziejowska AGH Akademia Górniczo-Hutnicza w Krakowie

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Badania operacyjne egzamin

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Schemat programowania dynamicznego (ang. dynamic programming)

Rozdział 1 PROGRAMOWANIE LINIOWE

Adam Kasperski, Michał Kulej, Badania Operacyjne, Wykład 3, Programowanie całkowite(plc)1 PROGRAMOWANIE LINIOWE CAŁKOWITOLICZBOWE(DYSKRET- NE)

Algorytmy aproksymacyjne dla problemów stochastycznych

Programowanie liniowe

Transkrypt:

Sformułowanie problemu Zastosowania Programowanie liniowe całkowitoliczbowe Jeżeli w zadaniu programowania liniowego pewne (lub wszystkie) zmienne musza przyjmować wartości całkowite, to takie zadanie nazywamy zadaniem programowania liniowego całkowitoliczbowego. Jeżeli wszystkie zmienne musza przyjmować wartości 0 lub 1, to zadanie nazywamy zadaniem programowania liniowego 0-1. Zatem, w każdym takim zadaniu występuja ograniczenia postaci 0 apple x i apple 1ix i całkowite dla każdej zmiennej x i, co krótko oznaczamy jako x i 2{0, 1}.

Problem rozkroju Sformułowanie problemu Zastosowania Tartak posiada standardowe deski o szerokości 10 cali. Otrzymał zamówienie na 90 desek o szerokości 4 cale, 175 desek o szerokości 3 cale i 120 desek o szerokości 2 cali. Tartak chce wyznaczyć taki plan realizacji zamówienia, który zminimalizuje łaczny odpad wyrażony w calach. Możliwe sposoby cięcia deski 10 calowej podane sa w poniższej tabeli: Sposób deski 4-calowe deski 3-calowe deski 2-calowe Odpad 1 2 0 1 0 2 1 2 0 0 3 1 1 1 1 4 1 0 3 0 5 0 3 0 1 6 0 2 2 0 7 0 1 3 1 8 0 0 5 0

Problem rozkroju Sformułowanie problemu Zastosowania 1 Zmienne decyzyjne: x i - liczba standardowych desek ciętych i-tym sposobem y 1, y 2, y 3 - liczba desek 4, 3 i 2-calowych wyprodukowanych ponad zamówienie 2 Funkcja celu: 3 Ograniczenia: min z = Całkowity odpad= x 3 + x 5 + x 7 + 4y 1 + 3y 2 + 2y 3 2x 1 + x 2 + x 3 + x 4 y 1 = 90 [deski 4-calowe] 2x 2 + x 3 + 3x 5 + 2x 6 + x 7 y 2 = 175 [deski 3-calowe] x 1 + x 3 + 3x 4 + 2x 6 + 3x 7 + 5x 8 y 3 = 120 [deski 2-calowe] x 1,...,x 8, y 1, y 2, y 3 0 i całkowite. Optymalne rozwiazanie: x 1 = 24, x 2 = 42, x 6 = 45, x 7 = 2, y 2 = 1i całkowity odpad wynosi 5 cali.

Sformułowanie problemu Zastosowania Planowanie komunikacji miejskiej [Taha 2008] Progress City planuje usprawnienie komunikacji miejskiej. Przeprowadzono badania, z których wynika że minimalna liczba potrzebnych autobusów zmienia się w ciagu dnia. W kolejnych, 4-godzinnych oknach czasowych, jest ona pokazana na poniższym rysunku. Każdy autobus rozpoczyna pracę na poczatku czterogodzinnego okna czasowego i pracuje bez przerwy przez kolejne 8 godzin. Celem jest wyznaczenie minimalnej liczby autobusów, które spełnia zapotrzebowanie komunikacyjne mieszkańców.

Sformułowanie problemu Zastosowania Planowanie komunikacji miejskiej [Taha 2008] 1 Zmienne decyzyjne: x i - liczba autobusów zaczynajacych pracę o 00:01, 4:01, 8:01, 12:01, 16:01, 20:01. 2 Funkcja celu: 3 Ograniczenia: min z = Liczba autobusów= x 1 + x 2 + x 3 + x 4 + x 5 + x 6 x 1 + x 6 4 [0:01-4:00] x 1 + x 2 8 [4:01-8:00] x 2 + x 3 10 [8:01-12:00] x 3 + x 4 7 [12:01-16:00] x 4 + x 5 12 [16:01-20:00] x 5 + x 6 4 [20:01-24:00] x 1,...,x 6 0 i całkowite. Optymalne rozwiazanie: x 1 = 4, x 2 = 4, x 3 = 6, x 4 = 8, x 5 = 4, x 6 = 0i minimalna liczba autobusów wynosi 26.

Problem plecakowy Sformułowanie problemu Zastosowania Jan zamierza wybrać się na wycieczkę. Rozważa zapakowanie do plecaka siedmiu przedmiotów. Każdy z nich ma określona wagę i wartość. Niestety pojemność plecaka Jana jest ograniczona i można do niego załadować przedmioty o wadze nie większej niż 15. Które przedmioty Jan powinien zabrać? Przedmiot Waga Wartość 1 5 8 2 2 3 3 7 10 4 1 1 5 6 9 6 8 11 7 2 2

Problem plecakowy Sformułowanie problemu Zastosowania 1 Zmienne decyzyjne: 1 jeżeli przedmiot i jest zabrany x i =, i = 1,...,7. 0 w przeciwnym wypadku 2 Funkcja celu: max z = Wartość= 8x 1 + 3x 2 + 10x 3 + x 4 + 9x 5 + 11x 6 + 2x 7 3 Ograniczenia: 5x 1 + 2x 2 + 7x 3 + x 4 + 6x 5 + 8x 6 + 2x 7 apple 15 x i 2{0, 1}, i = 1,...,7. [Poj. plecaka] Optymalne rozwiazanie: x 1 = 1, x 2 = 1, x 6 = 1, czyli Jan powinien zabrać przedmioty 1, 2 i 6. Wartość plecaka wyniesie wówczas 22.

Problem lokalizacji Sformułowanie problemu Zastosowania W pewnym regionie znajduje się pięć miast. Władze regionu chca wybudować w miastach posterunki straży pożarnej tak aby czas dojazdu straży pożarnej do każdego miasta nie przekraczał 15 minut. Czasy przejazdu między miastami (w minutach) sa podane w poniższej tabeli. Miasto 1 Miasto 2 Miasto 3 Miasto 4 Miasto 5 Miasto 6 Miasto 1 0 10 20 30 30 20 Miasto 2 0 25 35 20 10 Miasto 3 0 15 30 20 Miasto 4 0 15 25 Miasto 5 0 14 Miasto 6 0 W których miastach należy wybudować posterunki straży pożarnej aby liczba tych posterunków była najmniejsza?

Problem lokalizacji Sformułowanie problemu Zastosowania 1 Zmienne decyzyjne: 1 jeżeli P.S. jest zbudowany w mieście i x i = 0 w przeciwnym wypadku 2 Funkcja celu:, i = 1,...,6. 3 Ograniczenia: min z = Liczba posterunków= x 1 + x 2 + x 3 + x 4 + x 5 + x 6 x 1 + x 2 1 [Miasto 1] x 1 + x 2 + x 6 1 [Miasto 2] x 3 + x 4 1 [Miasto 3] x 3 + x 4 + x 5 1 [Miasto 4] x 4 + x 5 + x 6 1 [Miasto 5] x 2 + x 5 + x 6 1 [Miasto 6] x i 2{0, 1}, i = 1,...,6. Optymalne rozwiazanie: x 2 = 1, x 4 = 1, czyli należy wybudować posterunki w miastach 2 i 4.

Warunki logiczne Sformułowanie problemu Zastosowania Rozpatrzmy ponownie problem plecakowy (Slajd 6) i załóżmy, że Jan ma następujace dodatkowe wymagania: 1 Chce zabrać przedmiot 1 lub 5: x 1 + x 5 1 [1 _ 5] 2 Nie chce zabrać jednocześnie przedmiotów 1 i 6: x 1 + x 6 apple 1 [ (1 ^ 6)] 3 Jeżeli zabierze przedmiot 3, to chce również zabrać przedmiot 4: x 3 apple x 4 [3 ) 4] 4 Chce zabrać albo przedmiot 5 albo przedmiot 6 (ale nie oba): x 5 + x 6 = 1 [5 6] Ponieważ x i 2{0, 1}, więc możemy identyfikować 1 z prawda a 0 z fałszem.

Sformułowanie problemu Zastosowania Ograniczenia dyzjunkcyjne i implikacje Firma DA wytwarza trzy typy samochodów: kompaktowe, średnie i duże. Wymagane zasoby oraz zyski jednostkowe ze sprzedaży sa podane w poniższej tabeli: Kompaktowy Średni Duży Wymagana stal (t./jedn.) 1.5 3 5 Nakład pracy (godz./jedn.) 30 25 40 Zysk ($/jedn.) 2000 3000 4000 Dostępnych jest 6000 ton stali i 60000 godzin pracy. Firma DA chce zmaksymalizować zysk. Model jest następujacy: max z = 2000x 1 + 3000x 2 + 4000x 3 1.5x 1 + 3x 2 + 5x 3 apple 6000 [Stal] 30x 1 + 25x 2 + 40x 3 apple 60000 [Praca] x 1, x 2, x 3 0 i całkowite

Sformułowanie problemu Zastosowania Ograniczenia dyzjunkcyjne i implikacje Jeżeli DA uruchomi produkcję samochodów kompaktowych, to co najmniej 1000 sztuk tych samochodów musi być produkowanych. Ograniczenie jest następujace: x 1 > 0 ) x 1 1000. lub równoważnie: x 1 apple 0 lub x 1 1000. Modelujemy to w następujacy sposób: x 1 apple My 1 1000 x 1 apple M(1 y 1 ) gdzie y 1 2{0, 1} i M jest duża stała (nie jest zmienna!).

Sformułowanie problemu Zastosowania Ograniczenia dyzjunkcyjne i implikacje Jeżeli liczba produkowanych dużych samochodów jest większa niż 500, to produkcja średnich samochodów musi być niewiększa niż 100 Ograniczenie jest następujace: x 3 > 500 ) x 2 apple 100. lub równoważnie: x 1 apple 500 lub x 2 apple 100 (x 1 500 apple 0 lub x 2 100 apple 0) Modelujemy to w następujacy sposób: gdzie M duża stała a y 2 2{0, 1} x 3 500 apple My 2 x 2 100 apple M(1 y 2 )

Sformułowanie problemu Zastosowania Ograniczenia dyzjunkcyjne i implikacje W ogólnym przypadku chcemy zamodelować alternatywę ograniczeń: f (x 1,...,x n) apple 0 _ g(x 1,...,x n) apple 0 Chcemy zapewnić, żeby przynajmniej jedno z dwóch ograniczeń było spełnione. Wprowadzamy dodatkowa zmienna binarna y 2{0, 1} i dodajemy do modelu następujace ograniczenia: f (x 1,...,x n) apple My g(x 1,...,x n) apple M(1 y) (1) gdzie M jest dostatecznie duża liczba taka, że warunki f (x 1,...,x n) apple M i g(x 1,...,x n) apple M sa prawdziwe dla wszystkich wartości zmiennych.

Sformułowanie problemu Zastosowania Ograniczenia dyzjunkcyjne i implikacje Implikację f (x 1,...,x n) > 0 ) g(x 1,...,x n) apple 0. zastępujemy równoważnym logicznie warunkiem: f (x 1,...,x n) apple 0 _ g(x 1,...,x n) apple 0. Implikację f (x 1,...,x n) > 0 ) g(x 1,...,x n) 0 zastępujemy równoważnym logicznie warunkiem: f (x 1,...,x n) apple 0 _ g(x 1,...,x n) apple 0,

Sformułowanie problemu Zastosowania Zastosowanie - problem Job Shop Zadany jest zbiór prac J = {J 1, J 2,...,J n }. Każda praca J i składa się z operacji O i1, O i2,...o ini, które musza być wykonywane w kolejności: O i1! O i2!!o ini Każda operacja O ij musi być wykonywana na zadanej maszynie ze zbioru maszyn {M 1,...,M m } i czas jej wykonania wynosi p ij. Należy wyznaczyć harmonogram o najkrótszym czasie wykonania wszystkich prac.

Przykład Programowanie liniowe całkowitoliczbowe Sformułowanie problemu Zastosowania Operacja Czas trwania Maszyna O 11 3 M 1 O 12 2 M 2 O 13 2 M 3 O 21 2 M 2 O 22 1 M 1 O 31 4 M 1 O 32 2 M 2 O 33 3 M 3 M1 M2 M3 O 11 O 21 O 31 O22 O 12 O 32 O 13 O 33 Przykładowy harmonogram o długości 12.

Model dla problemu Job Shop Sformułowanie problemu Zastosowania 1 Zmienne decyzyjne 2 Funkcja celu S ij - czas rozpoczęcie operacji O ij na odpowiedniej maszynie. min z = C 3 Ograniczenia S ij S ij 1 + p ij 1 dla każdej operacji O ij, j > 1. S ij S kl + p kl _ S kl S ij + p ij dla każdej pary operacji O ij, O kl wykonywanych na tej samej maszynie C S ij + p ij dla każdej operacji O ij Model liniowy otrzymujemy przekształcajac ograniczenia dyzjunkcyjne.

Sformułowanie problemu Zastosowania Modelowanie iloczynu zmiennych 0-1 Fabryka rozważa 5 miejsc w celu lokalizacji nowych magazynów. W miejscach tych można wybudować magazyny o pojemnościach odpowiednio 120, 200, 180, 150 i 300. Odległości pomiędzy każda para miejsc sa podane w poniższej tabeli: 1 2 3 4 5 1 0 12 3 9 20 2 0 9 2 12 3 0 6 8 4 9 11 5 0 Fabryka chce zbudować 3 magazyny o maksymalnej sumarycznej pojemności. Magazyny powinny być tak ulokowane aby odległość pomiędzy każda para magazynów była niewiększa niż 10.

Sformułowanie problemu Zastosowania Modelowanie iloczynu zmiennych 0-1 1 Zmienne decyzyjne: 1 jeżeli magazyn jest w miejscu i x i = 0 w przeciwnym wypadku 2 Funkcja celu:, i = 1,...,5. 3 Ograniczenia: max z = Pojemność = 120x 1 + 200x 2 + 180x 3 + 150x 4 + 300x 5 12x 1 x 2 apple 10 [Odległość między 1 i 2] 3x 1 x 3 apple 10 [Odległość między 1 i 3]... x i 2{0, 1}, i = 1,...,5. Ograniczenia nie sa liniowe!

Sformułowanie problemu Zastosowania Modelowanie iloczynu zmiennych 0-1 Ograniczenie 12x 1 x 2 apple 10 nie jest liniowe. Zmieniamy je na liniowe wprowadzajac zmienna y 12 2{0, 1} i zastępujac ograniczeniami: 12y 12 apple 10 y 12 apple x 1 y 12 apple x 2 y 12 x 1 + x 2 1

Maksymalny przekrój Sformułowanie problemu Zastosowania Zadany jest graf G =(V, A). Wyznacz podział zbioru wierzchołków V na dwa zbiory V 1 i V 2 tak aby liczba krawędzi prowadzacych z V 1 do V 2 była maksymalna.

Maksymalny przekrój Sformułowanie problemu Zastosowania 1 Zmienne decyzyjne: 1 jeżeli i 2 V1 x i =, i = 1,..., V. 0 jeżeli i 2 V 2 2 Funkcja celu: min z = 3 Ograniczenia: X {i,j}2e (x i x j ) 2 x i 2{0, 1}, i = 1,..., V. Cel przekształcamy korzystajac z faktu, że dla zmiennych binarnych zachodzi: (x i x j ) 2 = xi 2 2x i x j + xj 2 = x i 2x i x j + x j i stosujemy metodę dla iloczynu zmiennych binarnych.

Algorytm płaszczyzn odcinajacych [Algorytm 1.] Usuń warunki całkowitoliczbowości. Rozwiaż model algorytmem sympleksowym i zaokraglij wyniki do najbliższej liczby całkowitej. 3 x 2 2.5 2 1.5 max z = 21x1 + 12x2 7x1 + 4x2 < 13 x1, x2 > 0, integer 1 0.5 0 0.5 1.0 1.5 2.0 x 1 Optymalnym rozwiazaniem jest (13/7, 0). Zaokraglaj ac do (1, 0) otrzymujemy rozwiazanie nieoptymalne. Zaokraglaj ac do (2, 0) otrzymujemy rozwiazanie niedopuszczalne.

Algorytm płaszczyzn odcinajacych [Algorytm 2.] Wygeneruj wszystkie rozwiazania dopuszczalne i wybierz najlepsze z nich. Problem plecakowy ze zmiennymi binarnymi x 1,...,x n posiada nie więcej niż 2 n dopuszczalnych rozwiazań. Przypuśćmy, że jedno rozwiazanie można sprawdzić w czasie 10 6 sekundy. Jak długo potrwaja obliczenia? n 10 6 2 n 10 0.0001 s. 20 1.048 s. 50 35.7 lat 100 10 16 lat

Algorytm płaszczyzn odcinajacych Zadanie programowania liniowego całkowitoliczbowego jest dużo trudniejsze do rozwiazania niż zwykłe zadanie programowania liniowego. Do chwili obecnej nie jest znany szybki algorytm dla tej klasy problemów i uważa się, że taki algorytm nie istnieje. Do rozwiazania zadania programowania liniowego całkowitoliczbowego powszechnie stosuje się algorytm podziału i ograniczeń, który można traktować jako znacznie ulepszona wersję metody pełnego przegladu.

Liniowa relaksacja Algorytm płaszczyzn odcinajacych Jeżeli usuniemy ograniczenia na całkowitość zmiennych w problemie P, to otrzymamy zadanie programowania liniowego, które nazywamy relaksacja P. Dla problemu maksymalizacji, optymalna wartość funkcji celu relaksacji jest górnym ograniczeniem na wartość funkcji celu optymalnego rozwiazania P. 3 x 2 2.5 P: max z = 21x 1 + 12x2 7x 1 + 4x 2 < 13 x1, x2 > 0, integer 2 1.5 relaxation of P: max z = 21x1 + 12x2 7x 1 + 4x 2 < 13 x1, x2 > 0 1 0.5 0 0.5 1.0 1.5 2.0 x 1 Optymalnym rozwiazaniem P jest (0, 3), z = 36. Optymalnym rozwiazaniem relaksacji P jest (13/7, 0), z R = 39.

Algorytm płaszczyzn odcinajacych max z = 8x 1 + 5x 2 6x 1 + 10x 2 apple 45 9x 1 + 5x 2 apple 45 x 1, x 2 0, x 1, x 2 całkowite b 5 4 3 2 (3.75,2.25) 1 0 1 2 3 4 5 a Rozwiazuj ac relaksację otrzymujemy x 1 = 3.75, x 2 = 2.25, zr = 41.25.

Algorytm płaszczyzn odcinajacych x 1 apple 3 0 x 1 1 = 3, x 2 = 2.7 2 zr = 37.5 x 1 = 3.75, x 2 = 2.25 zr = 41.25 x 1 4 x 1 = 4, x 2 = 1.8 z R = 41 5 4 3 (3,2.7) 2 1 1 0 1 2 3 4 2 (4,1.8) 5 Wartość zmiennej x 1 = 3.75 nie jest całkowita. Rozpatrujemy dwa podproblemy 1 i 2 dodajac odpowiednio ograniczenia x 1 apple 3ix 1 4.

Algorytm płaszczyzn odcinajacych x 1 apple 3 0 x 1 = 3.75, x 2 = 2.25 z R = 41.25 x 1 4 x x 1 = 4, x 2 = 1.8 1 1 = 3, x 2 = 2.7 2 z zr R = 37.5 = 41 x 2 apple 1 x 2 2 x 3 1 = 4.44, x 2 = 1 4 zr = 40.55 sprzeczny W podproblemie 2 wartość zmiennej x 2 = 1.8 nie jest całkowita. Rozpatrujemy dwa kolejne podproblemy 3 i 4 dodajac odpowiednio ograniczenia x 2 apple 1 i x 2 2. Podproblem 4 jest sprzeczny, dlatego wierzchołek odpowiadajacy temu podproblemowi zamykamy.

Algorytm płaszczyzn odcinajacych x 1 apple 3 0 x 1 = 3.75, x 2 = 2.25 z R = 41.25 x 1 4 x x 1 = 4, x 2 = 1.8 1 1 = 3, x 2 = 2.7 2 z zr R = 37.5 = 41 x 2 apple 1 x 2 2 x 3 1 = 4.44, x 2 = 1 4 zr = 40.55 x 1 apple 4 x 1 5 x 5 1 = 4, x 2 = 1 x 6 1 = 5, x 2 = 0 zr = 37 zr = 40 sprzeczny W podproblemie 3 wartość zmiennej x 1 = 4.44 nie jest całkowita. Rozpatrujemy więc kolejne dwa podproblemy 5 i 6 dodajac ograniczenia x 1 apple 4i x 1 5. W obu podproblemach otrzymujemy optymalne rozwiazanie całkowite i zamykamy wierzchołki im odpowiadajace. Zamykamy też wierzchołek 1, ponieważ w problemie odpowiadajacym temu wierzchołkowi zr = 37.5 < 40. Optymalne rozwiazanie: xadam 1 = Kasperski 5, x 2 = 0, z Badania = 40. operacyjne (INS) 2015/2016

Algorytm płaszczyzn odcinajacych 1 Algorytm konstruuje binarne drzewo przeszukiwania. W każdym wierzchołku tego drzewa rozwiazywane jest zadanie programowania liniowego. 2 Istnieje kilka metod wyboru kolejnego wierzchołka do podziału. Jedna z najbardziej popularnych jest wybór wierzchołka z największa wartościa zr. 3 Wierzchołek drzewa zamykamy jeżeli: 1 rozwiazanie otrzymane w tym wierzchołku jest całkowitoliczbowe; 2 problem odpowiadajacy temu wierzchołkowi jest sprzeczny; 3 wartość funkcji celu optymalnego rozwiazania w tym wierzchołku jest niewiększa niż wartość funkcji celu dla pewnego znanego rozwiazania dopuszczalnego. 4 Jeżeli wszystkie wierzchołki sa zamknięte, to najlepsze znalezione rozwiazanie całkowitoliczbowe jest optymalne.

Algorytm płaszczyzn odcinajacych Mieszany problem liniowy całkowitoliczbowy Jeżeli w zadaniu programowania liniowego tylko niektóre zmienne musza być całkowite, to zadanie takie nazywamy mieszanym zadaniem programowania liniowego całkowitoliczbowego. max z = 2x 1 + x 2 5x 1 + 2x 2 apple 8 x 1 + x 2 apple 3 x 1, x 2 0, x 1 całkowite

Algorytm płaszczyzn odcinajacych Mieszany problem liniowy całkowitoliczbowy x 1 apple 0 0 x 1 = 0, x 2 = 3 zr = 3 x 1 = 2/3, x 2 = 7/3 zr = 11 x 1 1 1 2 x 1 = 1, x 2 = 3/2 z R = 7/2 Przy podziale bierzemy pod uwagę tylko zmienna x 1. Optymalne rozwiazanie wynosi x 1 = 1, x 2 = 3/2.

Problem plecakowy Algorytm płaszczyzn odcinajacych Relaksacja: max z = 5x 1 + 3x 2 + 6x 3 + 6x 4 + 2x 5 5x 1 + 4x 2 + 7x 3 + 6x 4 + 2x 5 apple 15, x 1,..,x 5 2{0, 1} max z = 5x 1 + 3x 2 + 6x 3 + 6x 4 + 2x 5 5x 1 + 4x 2 + 7x 3 + 6x 4 + 2x 5 apple 15, 0 apple x i apple 1, i = 1,...,5

Problem plecakowy Algorytm płaszczyzn odcinajacych Relaksacja może być efektywnie rozwiazana za pomoca algorytmu zachłannego: i c i w i c i /w i 1 5 5 1 2 3 4 3/4 3 6 7 6/7 4 6 6 1 5 2 2 1 Wybieramy przedmioty zgodnie z nieroznac a wartościa c i /w i. Zatem bierzemy całe przedmioty 1, 4, 5 i 2/7 przedmiotu 3. W optymalnym rozwiazaniu relaksacji co najwyżej jedna zmienna jest niecałkowita.

Problem plecakowy Algorytm płaszczyzn odcinajacych zr = 14 1 z 2 R = 14 1 2 (1, 1, 0, 1, 1) (1, 0, 1, 1, 0) 2 2 0 zr = 14 5 7 (1, 0, 2, 1, 1) 7 x 3 = 0 x 3 = 1 x 2 = 0 x 2 = 1 x 4 = 0 x 4 = 1 zr = 13 zr = 14 zr = 13 3 z 4 R = 14 3 4 5 6 (1, 0, 0, 1, 1) (1, 1, 0, 1, 0) (1, 1, 1, 0, 1) ( 2, 0, 1, 1, 0) 4 5 W każdym wierzchołku wybieramy zmienna niecałkowita x i i rozpatrujemy dwa przypadki x i = 1 (bierzemy przedmiot i) oraz x i = 0 (nie bierzemy przedmiotu i). Optymalne rozwiazanie znajduje się w wierzchołku 4. Zatem bierzemy przedmioty 1, 2 i 4.

Odcięcie Programowanie liniowe całkowitoliczbowe Algorytm płaszczyzn odcinajacych Odcięciem nazywamy dodatkowe ograniczenie dodane do zadania programowania liniowego, które: 1 sprawia, że bieżace niecałkowite rozwiazanie optymalne staje się niedopuszczalne; 2 nie usuwa żadnego rozwiazania całkowitoliczbowego ze zbioru dopuszczalnych rozwiazań. Idea algorytmu płaszczyzn odcinajacych polega na kolejnym dodawania kolejnych odcięć do modelu, dopóki otrzymane rozwiazanie optymalne nie jest całkowitoliczbowe.

Ilustracja algorytmu Algorytm płaszczyzn odcinajacych

Generowanie odcięć Algorytm płaszczyzn odcinajacych W optymalnej tablicy sympleksowej wybieramy zmienna bazowa x i, która jest niecałkowita. Oznaczmy prze N zbiór indeksów zmiennych niebazowych. Wówczas z optymalnej tablicy odczytujemy: x i + X aij 0 x j = ˆb i (2) j2n Niech [a] oznacza największa liczbę całkowita, niewiększa niż a. Wówczas: x i + X j2n[a 0 ij ]x j apple ˆb i (3) Każdy wektor całkowitoliczbowy, który spełnia (2) spełnia również (3). Zatem dla rozwiazań całkowitoliczbowych zachodzi x i + X j2n[a 0 ij ]x j apple [ˆb i ] (4) Po zbilansowaniu: x i + X j2n[a 0 ij ]x j + u i =[ˆb i ] (5) Odcięcie otrzymujemy odejmujac (2) od (5).

Generowanie odcięć Algorytm płaszczyzn odcinajacych Jeżeli a 0 ij =[a 0 ij]+f ij, ˆb i =[ˆb i ]+g i i g i > 0, to odcięcie ma postać: X f ij x j + u i = j2n g i 1 Wszystkie rozwiazania całkowitoliczbowe wyjściowego modelu spełniaja odcięcie. 2 Bieżace rozwiazanie optymalne nie spełnia odcięcia, ponieważ podsatwiajać x j = 0 dla j 2 N otrzymamy u i = g i < 0. Odcięcie dodajemy do modelu i stosujemy dualny algorytm sympleksowy aby przywrócić dopuszczalność rozwiazania.

Przykład Programowanie liniowe całkowitoliczbowe Algorytm płaszczyzn odcinajacych max z = 5x 1 + 6x 2 10x 1 + 3x 2 apple 52 2x 1 + 3x 2 apple 18 x 1, x 2 0, całk. x 1 x 2 s 1 s 2 1 15 z 0 0 8 8 1 1 x 1 1 0 8 8 x 2 0 1 1 12 5 12 161 4 17 4 19 6 Zmienna bazowa x 1 = 17 jest niecałkowita. Zatem generujemy odcięcie na 4 podstawie wiersza tablicy, który odpowiada x 1 : 1 8 s 1 7 8 s 2 + u 1 = 1 4

Przykład Programowanie liniowe całkowitoliczbowe Algorytm płaszczyzn odcinajacych Rozwiazujemy problem stosujac dualny algorytm sympleksowy: x 1 x 2 s 1 s 2 u 1 1 15 z 0 0 0 8 8 1 1 x 1 1 0 0 8 8 1 5 x 2 0 1 0 12 12 1 7 u 1 0 0 1 8 8 161 4 17 4 19 6 1 4 x 1 x 2 s 1 s 2 u 1 z 0 0 0 1 1 40 x 1 1 0 0 1 1 4 2 10 x 2 0 1 0 1 3 3 s 1 0 0 1 7 8 2 Zmienna bazowa x 2 = 10 jest niecałkowita. Zatem generujemy odcięcie na podstawie 3 wiersza tablicy, który odpowiada x 2 : 0s 2 1 3 u 1 + u 2 = 1 3

Przykład Programowanie liniowe całkowitoliczbowe Algorytm płaszczyzn odcinajacych u 1 x 1 x 2 s 1 s 2 u 1 u 2 z 0 0 0 1 1 0 40 x 1 1 0 0 1 1 0 4 2 10 x 2 0 1 0 1 0 3 3 s 1 0 0 1 7 8 0 2 u 2 0 0 0 0 1 u 2 1 3 x 1 x 2 s 1 s 2 u 1 u 2 z 0 0 0 1 0 3 39 x 1 1 0 0 1 0 3 3 x 2 0 1 0 1 0 2 4 s 1 0 0 1 7 0 24 10 u 1 0 0 0 0 1 3 1 Rozwiazanie jest całkowitoliczbowe, zatem algorytm kończy pracę. 1 3

Przykład Programowanie liniowe całkowitoliczbowe Algorytm płaszczyzn odcinajacych 1 8 s 1 Podstawiamy s 1 = 52 10x 1 3x 2 i s 2 = 18 2x 1 3x 2. Odcięcie 7 s 8 2 + u 1 = 1 ma postać x 1 4 1 + x 2 apple 22/3; odcięcie 0s 2 u 3 1 + u 2 = 1 ma 3 postać x 1 + x 2 apple 7.

Uwagi końcowe Algorytm płaszczyzn odcinajacych 1 W praktyce algorytm płaszczyzn odcinajacych jest mniej efektywny niż algorytm podziału i ograniczeń. 2 Nowoczesne solvery stosuja metodę podziału i ograniczeń połaczon a z metoda płaszczyzn odcinajacych. Taki zaawansowany algorytm nazywamy algorytmem branch and cut.