SCIPY Liniowe programowanie

SCIPY Liniowe programowanie

W dzisiejszym świecie, w którym każde inne zadanie wymaga wysokiej siły obliczeniowej lub siły roboczej, sztucznie inteligentne systemy zajmują miejsce pracy fizycznej. Stąd każde inne codzienne zadanie życiowe jest przekonwertowane na systemy autonomiczne. Aby utworzyć takie autonomiczne systemy, musimy stworzyć interakcję z komputerami, aby uczyć się, jak wykonywać program i podejmować decyzje. Używamy niektórych języków, które można zrozumieć, określane również jako języki programowania, aby umożliwić tę interakcję.

Spośród wszystkich obecnie używanych języków komputerowych Python jest jednym z najbardziej znanych. Język jest zbudowany z kilku bibliotek, które umożliwiają funkcjonowanie kilku zadań przy użyciu wbudowanych modułów i funkcji. Python jest również uznawany za język przyjazny dla początkujących ze względu na łatwy do zrozumienia scenariusz, ponieważ scenariusz Pythona jest napisany głównie w języku angielskim. Scipy to słynna biblioteka Pytonów zbudowana na innej słynnej bibliotece „Numpy”, autor: Python. SCIPY działa poprzez dostarczanie wbudowanych funkcji i modułów dla zadań, w których pracujemy przy szkoleniu głębokiego uczenia się sztucznych sieci neuronowych i algorytmów uczenia maszynowego do celów matematycznych i obliczeniowych oraz optymalizacji.

Moduł „programowania liniowego” Scipy reprezentuje te narzędzia i techniki używane jako narzędzia matematyczne do matematycznych optymalizacji do rozwiązywania równań systemu liniowego, w tym zarówno równości, jak i nierówności. Pomaga w maksymalizacji lub minimalizacji systemu lub funkcji liniowej. Systemy liniowe mogą mieć wiele roztworów, więc używamy programowania liniowego, dzięki czemu znaleźliśmy jedno konkretne rozwiązanie systemu nierówności.

Procedura:

W tym artykule zawiera wprowadzenie tematu programowania liniowego Scipy. Następnie otrzymamy znajomość składni dla deklaracji tej funkcji w skrypcie Pythona z jego wszechobecnymi parametrami. A następnie funkcja jest wdrażana za pomocą przykładów.

Składnia:

Składnia funkcji programowania liniowego Scipy w skrypcie Python można zapisać w następujący sposób:

$ scipy.optymalizować.linprog (c, a_ub = brak, b_ub = brak, a_eq = brak, b_eq = brak, granice = brak, metoda = 'highs', callback = brak, opcje = brak, x0 = none, integralność = brak)


W wcześniej wspomnianej funkcji parametr „C” jest 1-wymiarową tablicą, która zawiera informacje o współczynnikach tej funkcji liniowej, którą chcemy zminimalizować poprzez programowanie liniowe. Następne parametry, „A_UB” i „B_UB”, są opcjonalnymi parametrami. Oba są odpowiednio dwuwymiarowymi i 1-wymiarowymi tablicami, w których A_UB mówi o macierzy ograniczeń nierówności na zmiennej „x” układu równań liniowych. Podczas gdy B-UB jest wektorem ograniczenia nierówności dla wartości A_UB w korespondencji do x.

Parametr „sekwencji” pokazuje górną granicę i dolną granicę maksymalizacji lub minimalizację każdego elementu w x. Ostatecznym parametrem jest „metoda”, która jest opcjonalna, ale określa standardowy algorytm do rozwiązania problemu. Jego wartość jest domyślnie „wysoka”.

Wartość zwracana:

Funkcja programowania liniowego zwraca wartości jako jednowymiarową tablicę, która jest wynikiem konkretnego rozwiązania w celu zminimalizowania funkcji celu po spełnieniu możliwych ograniczeń funkcji.

Przykład 1:

Rozwiążmy liniowy system nierówności i użyj programowania liniowego SCIPY, aby znaleźć rozwiązanie, aby zminimalizować funkcję celu tego systemu. Przed przejściem do napisania kodu, pamiętaj, że napiszemy program w „Google COLLAB”, który jest uznawany za platformę Python z open source ze wszystkimi wstępnie zainstalowanymi pakietami Python.

Zacznijmy od utworzenia nowego notebooka w programie. Przed napisaniem programu musimy zdefiniować lub przyjąć układ równań liniowych. W tym celu bierzemy następujący system liniowy i pracujemy, aby zminimalizować tę funkcję ze wszystkimi jej ograniczeniami przy użyciu programowania liniowego:

Zminimalizować y = 5x1 + 10x2 +15x3

tak, że:


Musimy zminimalizować „y” ze wszystkimi jego ograniczeniami. Jesteśmy zobowiązani do zaimportowania informacji istotnych do programowania liniowego i tablicy do naszego programu. W tym celu importujemy dwa ważne pakiety z T „Numpy”, które dotyczą definicji i funkcji tablicy. Drugi to „atrybut optymalizowania” Scipy, z którego importujemy funkcję „linprog”.

Kiedy skończymy z tymi bibliotekami, deklarujemy i definiujemy równania wcześniej wspomnianego systemu liniowego jeden po drugim. Przede wszystkim definiujemy „y”, który działa jako współczynnik dla wektora obiektywnego liniowego, „y”. Zadzwoń do „NP. tablica ”i przekazuj wszystkie współczynniki y do elementów tablicy jako„ NP. tablica ([5, 10, 15]) ”.

Teraz definiujemy macierz ograniczeń nierówności dla tego układu liniowego. To jest zdefiniowane w formie za pomocą „NP Numpy. metoda tablicy ([]) ”. Ta macierz ma elementy jako „NP. tablica ([-1, -1, -1], [-1, 1, 0], [0, 0, 15], [-1, 0, 0], [0, -1, 0], [0 , 0, -1]) ”. Zapisujemy tę tablicę jako „A_UB”. Następnie definiujemy „B_UB”. Wartości B_ub to „NP.tablica ([-1050, 0, -340, 0, 0, 0]) ”. Aby znaleźć optymalne rozwiązanie dla tego przykładu, nazywamy funkcję „programowanie liniowe ()” i przekazujemy macierz „A_UB”, wektor „B_ub” i współczynnik „C” do parametru funkcji jako „linprog (C, A_UB, B_UB) ”. Następnie wyświetlamy wyniki. Program dla tego przykładu jest napisany w postaci kodu Pythona z jego wyjściem w następujący sposób:

importować Numpy jako NP
od Scipy.Zoptymalizuj import linprog
C = NP.tablica ([10, 15, 25])
a_ub = np.tablica ([[ -1, -1, -1], [-1, 2, 0], [0, 0, -1], [-1, 0, 0], [0, -1, 0], [0, 0, -1]])
b_ub = np.tablica ([ -1000, 0, -340, 0, 0, 0])
wynik = linprog (c, a_ub, b_ub)
Drukuj („Wartość optymalna:”, okrąg.zabawa, ndigits = 2),
„\ nx wartości:”, wynik.X,
„\ nnnumber of Iterations:”, wynik.gnida,
„\ nstatus:”, wynik.wiadomość)


Wniosek

W tym artykule redakcyjnym omówiliśmy temat „Scipy Linear Programming”. Omówiliśmy, czym jest programowanie liniowe i dlaczego go potrzebujemy. Następnie rozmawialiśmy o składni dla tej funkcji i zastosowaliśmy tę funkcję do liniowego systemu nierówności, aby znaleźć jego zoptymalizowane rozwiązanie.