{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pulp" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def solveAndPrint(problem):\n", " print(problem)\n", " problem.solve()\n", " print(\"Status:\", pulp.LpStatus[problem.status])\n", " for v in problem.variables():\n", " print(v.name,\"=\",v.varValue)\n", " print(\"z = \",pulp.value(problem.objective))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1\\. Przedsiębiorca chce zainwestować najwyżej 10 000 zł w dwa fundusze: fundusz\n", "akcji i fundusz obligacji. Średni roczny zysk funduszu akcji wynosi 12%, zaś zysk funduszu\n", "obligacji 9%. Przedsiębiorca postanowił, że w fundusz obligacji zainwestuje co najmniej 2 000\n", "zł i nie więcej niż 6 000 zł w fundusz akcji. Ponadto przedsiębiorca nie chce zainwestować w\n", "fundusz akcji więcej niż w fundusz obligacji. Ile pieniędzy powinien on zainwestować w fundusz\n", "akcji, a ile w obligacji, aby osiągnąć maksymalny zysk w ciągu roku? Jakiego zysku może\n", "wówczas oczekiwać?" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "problem = pulp.LpProblem('Problem przedsiębiorcy', pulp.LpMaximize)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Zdefiniuj zmienne decyzyjne:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "a = pulp.LpVariable('akcje', lowBound=0, cat='Continuous')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "b = pulp.LpVariable('obligacje', lowBound=0, cat='Continuous')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dodaj funkcję celu:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "problem += 0.12*a + 0.09*b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dodaj ograniczenia:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "problem += (b >= 2000)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "problem += (a <= 6000)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "problem += (a <= b)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "problem += (a + b <= 10000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Zobacz zawartość zmiennej **problem**:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Problem przedsiębiorcy:\n", "MAXIMIZE\n", "0.12*akcje + 0.09*obligacje + 0.0\n", "SUBJECT TO\n", "_C1: obligacje >= 2000\n", "\n", "_C2: akcje <= 6000\n", "\n", "_C3: akcje - obligacje <= 0\n", "\n", "_C4: akcje + obligacje <= 10000\n", "\n", "VARIABLES\n", "akcje Continuous\n", "obligacje Continuous\n", "\n" ] } ], "source": [ "print(problem)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rozwiąż problem i sprawdź jego status:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "problem.solve()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Status: Optimal\n" ] } ], "source": [ "print(\"Status:\", pulp.LpStatus[problem.status])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wypisz optymalne wartości zmiennych decyzyjnych i funkcji celu:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "akcje = 5000.0 zł\n", "obligacje = 5000.0 zł\n" ] } ], "source": [ "for v in problem.variables():\n", " print(v.name,\"=\",v.varValue, \"zł\")" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Zysk = 1050.0 zł\n" ] } ], "source": [ "print(\"Zysk =\",pulp.value(problem.objective), \"zł\")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Problem przedsiębiorcy:\n", "MAXIMIZE\n", "0.12*akcje + 0.09*obligacje + 0.0\n", "SUBJECT TO\n", "_C1: obligacje >= 2000\n", "\n", "_C2: akcje <= 6000\n", "\n", "_C3: akcje - obligacje <= 0\n", "\n", "_C4: akcje + obligacje <= 10000\n", "\n", "VARIABLES\n", "akcje Continuous\n", "obligacje Continuous\n", "\n", "Status: Optimal\n", "akcje = 5000.0\n", "obligacje = 5000.0\n", "z = 1050.0 zł\n" ] } ], "source": [ "solveAndPrint(problem)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2\\. Badacz musi zrealizować projekt obejmujący badania EEG i eyetrackerem na tych samych osobach. Badanie ma obejmować 2 typy bodźców na EEG i 4 typy bodźców na eyetrackerze. Średnie czasy trwania bodźców wynoszą odpowiednio 6 i 12 sekund. Przygotowanie badania dla jednej osoby na EEG trwa 20 minut, a na eyetracker 7 minut. Badacz wie, że chce eksponować nie mniej niż 120 bodźców w trakcie obu badań jednej osoby. Wie ponadto, że całe badanie nie powinno trwać dłużej niż godzinę. Z założeń projektu wynika też, że powinnien zebrać minimum po 30 bodźców jednego typu w badaniach EEG i po 25 bodźców jednego typu w trakcie badania eyetrackingowym. Badacz chce zebrać jak najwięcej wartościowych wyników pamiętając, że 30 % reakcji z EEG i 20 % z reakcji z eyetrackingu to z reguły artefakty. " ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [], "source": [ "problem = pulp.LpProblem('Badanie', pulp.LpMaximize)\n", "eeg = pulp.LpVariable('eeg', lowBound=0, cat='Integer')\n", "eye = pulp.LpVariable('eye', lowBound=0, cat='Integer')\n", "problem += eeg - 0.3*eeg + eye - 0.2*eye\n", "problem += (20 + eeg*0.1 + 7 + eye*0.2 <=60), \"czas\"\n", "problem += (eeg + eye >= 120), \"suma bodźców\"\n", "problem += (eeg >= 30*2), \"typy EEG\"\n", "problem += (eye >= 25*4), \"typy eyetracker\"" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Badanie:\n", "MAXIMIZE\n", "0.7*eeg + 0.8*eye + 0.0\n", "SUBJECT TO\n", "czas: 0.1 eeg + 0.2 eye <= 33\n", "\n", "suma_bodźców: eeg + eye >= 120\n", "\n", "typy_EEG: eeg >= 60\n", "\n", "typy_eyetracker: eye >= 100\n", "\n", "VARIABLES\n", "0 <= eeg Integer\n", "0 <= eye Integer\n", "\n", "Status: Optimal\n", "eeg = 130.0\n", "eye = 100.0\n", "z = 171.0\n" ] } ], "source": [ "solveAndPrint(problem)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3\\. Planujemy badanie podłużne. Co miesiąc należy monitorować postępy dzieci biorących udział w badaniu w nauce czytania w zależności od metody czytania tekstu zaproponowanej nauczycielowi. Wymagają one aby co miesiąc badanie obejmowało: 20 godzin nagrań głośnego czytania, 30 godzin rejestrowania pracy z tekstem na lekcjach oraz 30 godzin nagrań czytania na głos przez nauczycieli.\n", "Każdorazowe zajęcia z czytania w szkołach objętych badaniem obejmują po:\n", "10 minut głośnego czytania, 20 minut pracy z tekstem i 15 minut czytania przez nauczycieli w szkole nr. 1;\n", "10 minut głośnego czytania, 10 minut pracy z tekstem i 25 minut czytania przez nauczycieli w szkole nr. 2;\n", "15 minut głośnego czytania, 15 minut pracy z tekstem i 15 minut czytania przez nauczycieli w szkole nr. 3.\n", "Każdorazowa wizyta w szkole kosztuje badaczy (dojazdy oraz wynagrodzenie dla szkoły) 50 zł w szkole nr. 1, 30 zł w szkole nr. 2 oraz 40 zł w szkole n. 3.\n", "Ile razy powinni badacze odwiedzić każdą ze szkół, aby uzyskać odpowiednią ilość nagrań najmniejszym kosztem?" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": true }, "outputs": [], "source": [ "problem = pulp.LpProblem('Badanie podłużne', pulp.LpMinimize)\n", "s1 = pulp.LpVariable('szkola1', lowBound=0, cat='Integer')\n", "s2 = pulp.LpVariable('szkoła2', lowBound=0, cat='Integer')\n", "s3 = pulp.LpVariable('szkoła3', lowBound=0, cat='Integer')\n", "problem += s1*50 + s2*30 + s3*40\n", "problem += (s1*10 + s2*10 + s3*15 >= 20*60), \"czytanie dzieci\"\n", "problem += (s1*20 + s2*10 + s3*15 >= 30*60), \"praca z tekstem\"\n", "problem += (s1*15 + s2*25 + s3*15 >= 30*60), \"czytanie nauczyciele\"" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Badanie podłużne:\n", "MINIMIZE\n", "50*szkola1 + 30*szkoła2 + 40*szkoła3 + 0\n", "SUBJECT TO\n", "czytanie_dzieci: 10 szkola1 + 10 szkoła2 + 15 szkoła3 >= 1200\n", "\n", "praca_z_tekstem: 20 szkola1 + 10 szkoła2 + 15 szkoła3 >= 1800\n", "\n", "czytanie_nauczyciele: 15 szkola1 + 25 szkoła2 + 15 szkoła3 >= 1800\n", "\n", "VARIABLES\n", "0 <= szkola1 Integer\n", "0 <= szkoła2 Integer\n", "0 <= szkoła3 Integer\n", "\n", "Status: Optimal\n", "szkola1 = 59.0\n", "szkoła2 = 20.0\n", "szkoła3 = 28.0\n", "z = 4670.0\n" ] } ], "source": [ "solveAndPrint(problem)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "4\\. Problem plecakowy – mamy 7 elementów, z których każdy ma pewną wagę\n", "(wypisaną w tabelce) oraz zysk. Jakie elementy (mamy do dyspozycji po jednej sztuce\n", "każdego) należy włożyć do plecaka, aby maksymalizować zysk, przy czym do plecaka może się\n", "zmieścić ilość przedmiotów o całkowitej wadze nie przekraczającej 20.\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Element nrWagaZysk
144
2710
333
41013
556
657
71520
" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": true }, "outputs": [], "source": [ "problem = pulp.LpProblem('Problem plecakowy', pulp.LpMaximize)\n", "wagi = [4,7,3,10,5,5,15]\n", "zyski = [4,10,3,13,6,7,20]\n", "zmienne = []\n", "\n", "for i in range(1,8):\n", " zmienne.append(pulp.LpVariable('element'+str(i), lowBound=0, cat='Binary'))\n", " \n", "problem += pulp.lpSum([zmienna * zysk for zmienna,zysk in zip(zmienne, zyski)])\n", "problem += (pulp.lpSum([zmienna * waga for zmienna,waga in zip(zmienne, wagi)]) <= 20)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Problem plecakowy:\n", "MAXIMIZE\n", "4*element1 + 10*element2 + 3*element3 + 13*element4 + 6*element5 + 7*element6 + 20*element7 + 0\n", "SUBJECT TO\n", "_C1: 4 element1 + 7 element2 + 3 element3 + 10 element4 + 5 element5\n", " + 5 element6 + 15 element7 <= 20\n", "\n", "VARIABLES\n", "0 <= element1 <= 1 Integer\n", "0 <= element2 <= 1 Integer\n", "0 <= element3 <= 1 Integer\n", "0 <= element4 <= 1 Integer\n", "0 <= element5 <= 1 Integer\n", "0 <= element6 <= 1 Integer\n", "0 <= element7 <= 1 Integer\n", "\n", "Status: Optimal\n", "element1 = 0.0\n", "element2 = 0.0\n", "element3 = 0.0\n", "element4 = 0.0\n", "element5 = 0.0\n", "element6 = 1.0\n", "element7 = 1.0\n", "z = 27.0\n" ] } ], "source": [ "solveAndPrint(problem)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "5\\. Mamy grupę ludzi, którzy mają zostać wybrani do pracy w firmie informatycznej.\n", "Każdy z nich oczekuje też pewnej konkretnej pensji.\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ImięPensja
Jan Kowalski5000
Anna Nowak4500
Tomasz Niewiadomski6000
Ewa Kaczmarek3500
\n", "\n", "Posiadają oni następujące umiejętności:\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NazwaJ.K.A.N.T.N.E.K.
J. Angielski+--+
J. Niemiecki+-+-
Prawo jazdy-+++
Dyspozycyjność w weekend-+++
Zdolności kierownicze++--
Programowanie+++-
Znajomość marketingu--++
Obsługa sieci komputerowej++--
Techniki optymalizacji--++
\n", "\n", "Jakie osoby należy wybrać tak, aby była przynajmniej jedna osoba, która posiada każdą z\n", "umiejętności?" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [], "source": [ "problem = pulp.LpProblem('Problem HR', pulp.LpMinimize)\n", "jk = pulp.LpVariable('Jan Kowalski', lowBound=0, cat='Binary')\n", "an = pulp.LpVariable('Anna Nowak', lowBound=0, cat='Binary')\n", "tn = pulp.LpVariable('Tomasz Niewiadomski', lowBound=0, cat='Binary')\n", "ek = pulp.LpVariable('Ewa Kaczmarek', lowBound=0, cat='Binary')\n", "\n", "problem += 5000*jk + 4500*an + 6000*tn + 3500*ek\n", "problem += (jk + ek >= 1), \"angielski\"\n", "problem += (jk + tn >= 1), \"niemiecki\"\n", "problem += (an + tn + ek >= 1), \"prawo jazdy, dyspozycyjność\"\n", "problem += (jk + an >= 1), \"zdolności kierownicze, obsługa sieci\"\n", "problem += (jk + an + tn >= 1), \"programowanie\"\n", "problem += (tn + ek >= 1), \"znajomość marketingu, techniki optymalizacji\"" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Problem HR:\n", "MINIMIZE\n", "4500*Anna_Nowak + 3500*Ewa_Kaczmarek + 5000*Jan_Kowalski + 6000*Tomasz_Niewiadomski + 0\n", "SUBJECT TO\n", "angielski: Ewa_Kaczmarek + Jan_Kowalski >= 1\n", "\n", "niemiecki: Jan_Kowalski + Tomasz_Niewiadomski >= 1\n", "\n", "prawo_jazdy,_dyspozycyjność: Anna_Nowak + Ewa_Kaczmarek + Tomasz_Niewiadomski\n", " >= 1\n", "\n", "zdolności_kierownicze,_obsługa_sieci: Anna_Nowak + Jan_Kowalski >= 1\n", "\n", "programowanie: Anna_Nowak + Jan_Kowalski + Tomasz_Niewiadomski >= 1\n", "\n", "znajomość_marketingu,_techniki_optymalizacji: Ewa_Kaczmarek\n", " + Tomasz_Niewiadomski >= 1\n", "\n", "VARIABLES\n", "0 <= Anna_Nowak <= 1 Integer\n", "0 <= Ewa_Kaczmarek <= 1 Integer\n", "0 <= Jan_Kowalski <= 1 Integer\n", "0 <= Tomasz_Niewiadomski <= 1 Integer\n", "\n", "Status: Optimal\n", "Anna_Nowak = 0.0\n", "Ewa_Kaczmarek = 1.0\n", "Jan_Kowalski = 1.0\n", "Tomasz_Niewiadomski = 0.0\n", "z = 8500.0\n" ] } ], "source": [ "solveAndPrint(problem)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "6\\. Mamy trzy magazyny w różnych miastach (Detroit, Pittsburgh i Buffalo), w których\n", "znajduje się odpowiednio 250, 130 i 235 ton papieru. Są cztery wydawnictwa ( Boston, New\n", "York, Chicago i Indianapolis), które potrzebują odpowiednio 75, 230, 240 i 70 ton papieru aby\n", "produkować nowe książki. Mamy następujące koszty transportu z miasta do miasta (za tonę\n", "papieru):\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
From \\ ToBoston (BS)New York (NY)Chicago (CH)Indianapolis (IN)
Detroit (DT)15201621
Pittsburgh (PT)2513511
Buffalo (BF) 1515717
\n", "\n", "Zaplanuj transport papieru tak, aby koszt był jak najmniejszy." ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false }, "outputs": [], "source": [ "problem = pulp.LpProblem('Problem transportowy', pulp.LpMinimize)\n", "koszty = [15, 20, 16, 21, 25, 13, 5, 11, 15, 15, 7, 17]\n", "magazyny = ['Detroit', 'Pittsburgh', 'Buffalo']\n", "wydawnictwa = ['Boston', 'New York', 'Chicago', 'Indianapolis']\n", "zapasy = [250, 130, 235]\n", "potrzeby = [75, 230, 240, 70]\n", "zmienne = []\n", "\n", "for magazyn in magazyny:\n", " for wydawnictwo in wydawnictwa:\n", " zmienne.append(pulp.LpVariable('z'+magazyn+'do'+wydawnictwo, lowBound=0, cat='Integer'))\n", " \n", "problem += pulp.lpSum([zmienna*koszt for zmienna, koszt in zip(zmienne, koszty)])\n", "for i in range(3):\n", " problem += (pulp.lpSum(zmienne[i*4:i*4+4]) <= zapasy[i], \"Zapasy \" + magazyny[i])\n", "for i in range(4):\n", " problem += (pulp.lpSum(zmienne[i:i+9:4]) >= potrzeby[i], \"Potrzeby \" + wydawnictwa[i])" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Problem transportowy:\n", "MINIMIZE\n", "15*zBuffalodoBoston + 7*zBuffalodoChicago + 17*zBuffalodoIndianapolis + 15*zBuffalodoNew_York + 15*zDetroitdoBoston + 16*zDetroitdoChicago + 21*zDetroitdoIndianapolis + 20*zDetroitdoNew_York + 25*zPittsburghdoBoston + 5*zPittsburghdoChicago + 11*zPittsburghdoIndianapolis + 13*zPittsburghdoNew_York + 0\n", "SUBJECT TO\n", "Zapasy_Detroit: zDetroitdoBoston + zDetroitdoChicago + zDetroitdoIndianapolis\n", " + zDetroitdoNew_York <= 250\n", "\n", "Zapasy_Pittsburgh: zPittsburghdoBoston + zPittsburghdoChicago\n", " + zPittsburghdoIndianapolis + zPittsburghdoNew_York <= 130\n", "\n", "Zapasy_Buffalo: zBuffalodoBoston + zBuffalodoChicago + zBuffalodoIndianapolis\n", " + zBuffalodoNew_York <= 235\n", "\n", "Potrzeby_Boston: zBuffalodoBoston + zDetroitdoBoston + zPittsburghdoBoston\n", " >= 75\n", "\n", "Potrzeby_New_York: zBuffalodoNew_York + zDetroitdoNew_York\n", " + zPittsburghdoNew_York >= 230\n", "\n", "Potrzeby_Chicago: zBuffalodoChicago + zDetroitdoChicago + zPittsburghdoChicago\n", " >= 240\n", "\n", "Potrzeby_Indianapolis: zBuffalodoIndianapolis + zDetroitdoIndianapolis\n", " + zPittsburghdoIndianapolis >= 70\n", "\n", "VARIABLES\n", "0 <= zBuffalodoBoston Integer\n", "0 <= zBuffalodoChicago Integer\n", "0 <= zBuffalodoIndianapolis Integer\n", "0 <= zBuffalodoNew_York Integer\n", "0 <= zDetroitdoBoston Integer\n", "0 <= zDetroitdoChicago Integer\n", "0 <= zDetroitdoIndianapolis Integer\n", "0 <= zDetroitdoNew_York Integer\n", "0 <= zPittsburghdoBoston Integer\n", "0 <= zPittsburghdoChicago Integer\n", "0 <= zPittsburghdoIndianapolis Integer\n", "0 <= zPittsburghdoNew_York Integer\n", "\n", "Status: Optimal\n", "zBuffalodoBoston = 0.0\n", "zBuffalodoChicago = 235.0\n", "zBuffalodoIndianapolis = 0.0\n", "zBuffalodoNew_York = 0.0\n", "zDetroitdoBoston = 75.0\n", "zDetroitdoChicago = 0.0\n", "zDetroitdoIndianapolis = 0.0\n", "zDetroitdoNew_York = 175.0\n", "zPittsburghdoBoston = 0.0\n", "zPittsburghdoChicago = 5.0\n", "zPittsburghdoIndianapolis = 70.0\n", "zPittsburghdoNew_York = 55.0\n", "z = 7780.0\n" ] } ], "source": [ "solveAndPrint(problem)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 1 }