{
"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",
" Element nr | \n",
" Waga | \n",
" Zysk | \n",
"
\n",
" \n",
" 1 | \n",
" 4 | \n",
" 4 | \n",
"
\n",
" \n",
" 2 | \n",
" 7 | \n",
" 10 | \n",
"
\n",
" \n",
" 3 | \n",
" 3 | \n",
" 3 | \n",
"
\n",
" \n",
" 4 | \n",
" 10 | \n",
" 13 | \n",
"
\n",
" \n",
" 5 | \n",
" 5 | \n",
" 6 | \n",
"
\n",
" \n",
" 6 | \n",
" 5 | \n",
" 7 | \n",
"
\n",
" \n",
" 7 | \n",
" 15 | \n",
" 20 | \n",
"
\n",
"
"
]
},
{
"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",
" Imię | \n",
" Pensja | \n",
"
\n",
" \n",
" Jan Kowalski | \n",
" 5000 | \n",
"
\n",
" \n",
" Anna Nowak | \n",
" 4500 | \n",
"
\n",
" \n",
" Tomasz Niewiadomski | \n",
" 6000 | \n",
"
\n",
" \n",
" Ewa Kaczmarek | \n",
" 3500 | \n",
"
\n",
"
\n",
"\n",
"Posiadają oni następujące umiejętności:\n",
"\n",
"\n",
" \n",
" Nazwa | \n",
" J.K. | \n",
" A.N. | \n",
" T.N. | \n",
" E.K. | \n",
"
\n",
" \n",
" J. Angielski | \n",
" + | \n",
" - | \n",
" - | \n",
" + | \n",
"
\n",
" \n",
" J. Niemiecki | \n",
" + | \n",
" - | \n",
" + | \n",
" - | \n",
"
\n",
" \n",
" Prawo jazdy | \n",
" - | \n",
" + | \n",
" + | \n",
" + | \n",
"
\n",
" \n",
" Dyspozycyjność w weekend | \n",
" - | \n",
" + | \n",
" + | \n",
" + | \n",
"
\n",
" \n",
" Zdolności kierownicze | \n",
" + | \n",
" + | \n",
" - | \n",
" - | \n",
"
\n",
" \n",
" Programowanie | \n",
" + | \n",
" + | \n",
" + | \n",
" - | \n",
"
\n",
" \n",
" Znajomość marketingu | \n",
" - | \n",
" - | \n",
" + | \n",
" + | \n",
"
\n",
" \n",
" Obsługa sieci komputerowej | \n",
" + | \n",
" + | \n",
" - | \n",
" - | \n",
"
\n",
" \n",
" Techniki optymalizacji | \n",
" - | \n",
" - | \n",
" + | \n",
" + | \n",
"
\n",
"
\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",
" From \\ To | \n",
" Boston (BS) | \n",
" New York (NY) | \n",
" Chicago (CH) | \n",
" Indianapolis (IN) | \n",
"
\n",
" \n",
" Detroit (DT) | \n",
" 15 | \n",
" 20 | \n",
" 16 | \n",
" 21 | \n",
"
\n",
" \n",
" Pittsburgh (PT) | \n",
" 25 | \n",
" 13 | \n",
" 5 | \n",
" 11 | \n",
"
\n",
" \n",
" Buffalo (BF) | \n",
" 15 | \n",
" 15 | \n",
" 7 | \n",
" 17 | \n",
"
\n",
"
\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
}