Zapsání modelu úlohy celočíselného programování do jazyka Mosel

50
celočíselného programování do jazyka Mosel Deklarace seznamu indexů, polí a jejich naplnění koeficienty modelu, Deklarace rozhodovacích proměnných, Definice účelové funkce, Zápis strukturálních podmínek, Zápis obligatorních podmínek, Příkaz optimalizace, Určení formy výstupu. Jen zde se liší zápis od úlohy lineárního programování!

description

Zapsání modelu úlohy celočíselného programování do jazyka Mosel. Deklarace seznamu index ů , polí a jejich naplnění koeficienty modelu, Deklarace rozhodovacích proměnných , Definice účelové funkce, Zápis strukturálních podmínek, Zápis obligatorních podmínek, Příkaz optimalizace, - PowerPoint PPT Presentation

Transcript of Zapsání modelu úlohy celočíselného programování do jazyka Mosel

Page 1: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Zapsání modelu úlohy celočíselného programování do jazyka Mosel

Deklarace seznamu indexů, polí a jejich naplnění koeficienty modelu,

Deklarace rozhodovacích proměnných, Definice účelové funkce, Zápis strukturálních podmínek, Zápis obligatorních podmínek, Příkaz optimalizace, Určení formy výstupu.

Jen zde se liší zápis od úlohy

lineárního programování!

Page 2: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha plánování výrobys nedělitelností

Podnikatel vyrábí a prodává bramborové lupínky a hranolky pořadě za ceny 120 a 76 peněžních jednotek za kilogram produktu, přičemž lupínky může prodávat pouze v 15 kg baleních a hranolky v 30 kg baleních. Na výrobu 1 kg lupínků je zapotřebí 2 kg brambor a 0.4 kg oleje, na výrobu 1 kg hranolků je třeba 1.5 kg brambor a 0.2 kg oleje. Podnikatel nakoupil před zahájením výroby 100 kg brambor a 16 kg oleje za regulované ceny 12 a 40 peněžních jednotek za kilogram. Jaká množství jednotlivých produktů má podnikatel vyrábět a prodávat, aby maximalizoval svůj zisk při respektování omezených množství obou surovin, které má k dispozici?

Page 3: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Jednotkový zisk z výroby a prodeje jednotlivých produktů

...prodává lupínky a hranolky pořadě za ceny 120 a 76 peněžních jednotek za kilogram. Na výrobu 1 kg lupínků je zapotřebí 2 kg brambor a 0.4 kg oleje, na výrobu 1 kg hranolků je třeba 1.5 kg brambor a 0.2 kg oleje. Podnikatel nakoupil brambory a olej za 12 a 40 peněžních jednotek za kilogram.

Náklady na 1 kg lupínků

2 kg brambor

0.4 kg oleje

40 Sk za kilogram

12 Sk za kilogram + ==

=122+400.4=40

Zisk z 1 kg: 120-40=80

Zisk z 15 kg balení c1=15*80=1200

Page 4: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Jednotkový zisk z výroby a prodeje jednotlivých produktů

...prodává lupínky a hranolky pořadě za ceny 120 a 76 peněžních jednotek za kilogram. Na výrobu 1 kg lupínků je zapotřebí 2 kg brambor a 0.4 kg oleje, na výrobu 1 kg hranolků je třeba 1.5 kg brambor a 0.2 kg oleje. Podnikatel nakoupil brambory a olej za 12 a 40 peněžních jednotek za kilogram.

Náklady na 1 kg hranolků

1.5 kg brambor

0.2 kg oleje

40 Sk za kilogram

12 Sk za kilogram + ==

=121.5+400.2=26

Zisk z 1 kg: 76-26=50

Zisk z 30 kg balení c2=30*50=1500

Page 5: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Model úlohy plánování výroby s nedělitelností

2,1jforZx

16x30*2.0x15*4.0

100x30*5.1x15*2toSubject

x1500x1200Max

j

21

21

21

16x6x6

100x45x30toSubject

21

21

Page 6: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Model úlohy plánování výroby s nedělitelností

21

1666

1004530

15001200

21

21

21

,jforZx

xx

xxtoSubject

xxMax

j

Page 7: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Model úlohy plánování výroby s nedělitelností

(Pole s koeficienty úlohy)

UNITPROF: [1200, 1500] CONSOFPOT: [30, 45] CONSOFOIL: [6, 6]

21

1666

1004530

15001200

21

21

21

,jforZx

xx

xxtoSubject

xxMax

j

Page 8: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Deklarace množiny indexů a polí v jazyku MOSEL

model "Chips and Frenchfries Production" uses "mmxprs" declarations PRODUCTS=1..2 CONSOFPOT:array(PRODUCTS) of real CONSOFOIL:array(PRODUCTS) of real UNITPROF:array(PRODUCTS) of real end-declarations

…end-model

Úvodní klíčové slovo deklarace

Koncové klíčové slovo deklarace

Page 9: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Inicializace polí v jazyku MOSEL

model "Chips and Frenchfries Production" uses "mmxprs" declarations PRODUCTS=1..2 CONSOFPOT:array(PRODUCTS) of real CONSOFOIL:array(PRODUCTS) of real UNITPROF:array(PRODUCTS) of real end-declarations

CONSOFPOT:=[30, 45] CONSOFOIL:=[6, 6] UNITPROF:=[1200, 1500]end-model

Page 10: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Deklarace rozhodovacích proměnných v jazyku MOSEL

model "Chips and Frenchfries Production" uses "mmxprs" declarations PRODUCTS=1..2 CONSOFPOT:array(PRODUCTS) of real CONSOFOIL:array(PRODUCTS) of real UNITPROF:array(PRODUCTS) of real X:array(PRODUCTS) of mpvar end-declarations

***end-model

Deklarace proměnných X(1), X(2)

Page 11: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Zápis účelové funkce v jazyku MOSEL

model "Chips and Frenchfries Production" uses "mmxprs" declarations PRODUCTS=1..2 *** X:array(PRODUCTS) of mpvar end-declarations

*** Profit:=sum(j in PRODUCTS) UNITPROF(j)*X(j) ***end-model

Proměnná, která představuje zisk

21 15001200 xx

Page 12: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Zápis strukturálních podmínek v jazyku MOSEL

model "Chips and Frenchfries Production" uses "mmxprs" declarations *** end-declarations *** Profit:=sum(j in PRODUCTS) UNITPROF(j)*X(j) sum(j in PRODUCTS)CONSOFPOT(j)*X(j) <=100 sum(j in PRODUCTS)CONSOFOIL(j)*X(j) <=16

end-model

Page 13: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Deklarace celočíselných proměnných v jazyku MOSEL

model "Chips and Frenchfries Production" uses "mmxprs" declarations *** end-declarations *** Profit:=sum(j in PRODUCTS) UNITPROF(j)*X(j) sum(j in PRODUCTS)CONSOFPOT(j)*X(j) <=100 sum(j in PRODUCTS)CONSOFOIL(j)*X(j) <=16 forall (j in PRODUCTS) X(j) is_integerend-model

Toto jsou obligatorní podmínky celočíselnosti

Page 14: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Příkaz optimalizace v jazyku MOSEL

model "Chips and Frenchfries Production" uses "mmxprs" declarations *** end-declarations *** Profit:=sum(j in PRODUCTS) UNITPROF(j)*X(j) sum(j in PRODUCTS)CONSOFPOT(j)*X(j) <=100 sum(j in PRODUCTS)CONSOFOIL(j)*X(j) <=16 maximize(Profit)end-model

Page 15: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o batohu(Knapsack Problem)

Do batohu je možno uložit náklad o hmotnosti 21 kg. Tento náklad je možno složit z předmětů 1, 2, 3, 4, 5 a 6, které mají pořadě hmotnosti 12, 11, 10, 9, 9 a 8 a které není možno dělit. S přepravou jednotlivých předmětů jsou spojeny následující zisky 16, 14, 13, 10, 9 a 6. Úlohou je maximalizovat celkový zisk z přepravy předmětů, když s batohem je možno absolvovat jen jedinou cestu.

Page 16: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o batohu(Knapsack Problem)

maximalizujte x0 = 16 x1+ 14 x2+ 13 x3+ 10 x4 +9 x5 + 6 x6

za podmínek 12 x1+ 11 x2+ 10 x3 + 9 x4 +9 x5 + 8 x6 21

xj {0, 1} pro j = 1, ..., 6.

Page 17: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o batohu-vstupní údaje(Knapsack Problem)

maximalizujte x0 = 16 x1+ 14 x2+ 13 x3+ 10 x4 +9 x5 + 6 x6

za podmínek 12 x1+ 11 x2+ 10 x3 + 9 x4 +9 x5 + 8 x6 21

xj {0, 1} pro j = 1, ..., 6.

Koeficienty cj jsou uloženy v textovém souboru KP_c.txt a koeficienty aj v textovém souboru KP_a.txt v následujícím tvaru:N resp. Nc1 a1

c2 a2

: :cN aN

Page 18: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o batohu(Knapsack Problem)

model "Knapsack Problem"

uses "mmxprs"

declarations

N:integer

end-declarations

! Reading from a text file

fopen("KP_c.txt", F_INPUT)

readln(N)

fclose(F_INPUT)

end-model

Otevření souboru KP_c.txt

Uzavření souboru

Načtení první položky souboru do N

Page 19: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o batohu(Knapsack Problem)

declarations c:array(1..N) of integer a:array(1..N) of integer X:array(1..N) of mpvar end-declarations ! Reading from a text file fopen("KP_c.txt", F_INPUT) readln forall(j in 1..N) readln(c(j)) fclose(F_INPUT)

Vynechání první položky souboru

Načtení cj v cyklu

Page 20: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o batohu(Knapsack Problem)

fopen("KP_a.txt", F_INPUT)

readln

forall(j in 1..N) readln(a(j))

fclose(F_INPUT)

Profit:=sum(j in 1..N) c(j)*X(j)

sum(j in 1..N) a(j)*X(j)<=21

forall(j in 1..N) X(j) is_binary

maximize(Profit)Definování 0-1 proměnných

Page 21: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o batohu(Knapsack Problem)

Profit:=sum(j in 1..N) c(j)*X(j)

sum(j in 1..N) a(j)*X(j)<=21

forall(j in 1..N) X(j) is_binary

maximize(Profit)

writeln("Profit := ", getobjval)

forall(j in 1..N) writeln("X( ",j,") := ", getsol(X(j)))

end-model

Page 22: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o batohu-výsledky(Knapsack Problem)

Profit := 27

X( 1) := 0

X( 2) := 1

X( 3) := 1

X( 4) := 0

X( 5) := 0

X( 6) := 0

Page 23: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Přiřazovací úloha

V dopravní síti se v místech t1, t2, t3 a t4 nacházejí taxíky.

Dispečer taxislužby obdržel objednávku od čtyř zákazníků, kteří se nacházejí v jiných čtyřech místech z1, z2, z3 a z4.

Vzdálenosti mezi stanovišti taxíků a zákazníky udává {cij}.

Je třeba určit, který taxík má obsloužit kterého zákazníka (být mu přiřazen), aby celková vzdálenost kterou taxíky projedou na prázdno, tj. ze svého stanoviště k zákazníkovi, byla co nejmenší. Je třeba respektovat podmínku, že každý zákazník musí být obsloužen a že jeden taxík nemůže uspokojit více než jednoho z těchto zákazníků.

Page 24: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Přiřazovací úloha(Prezentace v grafu)

2

11

3

2

3

4

11x

12x

13x

14x

xij {0, 1} „Jet či nejet, to je otázka“.

4

Page 25: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Přiřazovací úloha

414110

411

411

4

1

4

1

4

1

4

1

..j,..ifor,x

..jforx

..iforxtoSubject

xcjteMinimalizu

ij

iij

jij

i jijij

Page 26: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Alokační úloha(Allocation Problem)

Firma disponuje třemi velkými sklady v své distribuční síti. Z těchto skladů, které mají pořadě kapacity ai = 5000, 7000 a 6000 tun zboží, pokrývají požadavky deseti velkoodběratelů. Jejich požadavky jsou pořadě bj = 2000, 1000, 800, 700, 900, 2200, 1800, 1700, 1100 a 1200 tun. Vzdálenosti skladů od velkoodběratelů jsou dány koeficienty {dij}Určete který velkoodběratel bude odkud zásobován tak, aby celkové dopravní náklady byly minimální, když víte že náklady na přepravu jedné jednotky zboží z i na místo j jsou lineárně závislé na vzdálenosti těchto míst. Je třeba dodržet podmínku, že každý velkoodběratel musí dostat celý svůj požadavek z jediného skladu.

Page 27: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Alokační úloha(Allocation Problem)

zákaznícizij{0, 1}

Sklady j=1, 2, 32 31

b2b1

b3

b5b4

b6 b7

b9

b10b8

a2 a3a1

3

1

10

1i jijjij z)bd(min

3

1

1011i

ij ..jforzst

10

1

31j

iijj ..iforazb

Page 28: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o rozmístění dopravní flotily

Školní správa zabezpečuje svoz dětí do škol od 7:00 do 8:00 po třech trasách j = 1, 2, 3. Zajištění přepravy obdržel jako zakázku za pevnou cenu dopravní podnik. V dané době podnik může na zakázku nasadit autobusy dvou typů i = 1, 2 s různými parametry. Doby jízdy na jednotlivých trasách v min. a náklady na jejich projetí udávají matice koeficientů {tij } a {cij }. Aby byli žáci svezeni do škol, je třeba, aby první trasu projely 4 druhou trasu 3 a třetí trasu 5 autobusů. Dopravní podnik v uvedené době může z časového fondu autobusů prvního typu čerpat celkem až 180 min a z časového fondu autobusů druhého typu nejvýše 120 min. Jak má podnik zabezpečit zakázku, aby jeho zisk byl co největší.

Page 29: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o rozmístění dopravní flotily

Doby jízdy na jednotlivých trasách v min. a náklady na jejich projetí udávají matice koeficientů {tij } a {cij }.

Typ_2 120 min

z1jZ+

Škola

Typ_1 180 min

Trasa_3 5

Trasa_2 3

Trasa_1 4

Kolikrát typ 1 bude nasazen na trasu j

Page 30: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o rozmístění dopravní flotilyúčelová funkce

Typ_2 120 min

z1jZ+

Škola

Typ_1 180 min

Trasa_3 5

Trasa_2 3

Trasa_1 4

Kolikrát typ 1 bude nasazen na trasu j

iji j

ij zcmin

2

1

3

1

Page 31: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o rozmístění dopravní flotily„náš zákazník, náš pán“

Typ_2 120 min

z1jZ+

Škola

Typ_1 180 min

Trasa_3 5

Trasa_2 3

Trasa_1 4

Kolikrát typ 1 bude nasazen na trasu j

312

1

..jforbzst jiji

Page 32: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o rozmístění dopravní flotily„kde nic není, ani čert nebere“

Typ_2 120 min

z1jZ+

Škola

Typ_1 180 min

Trasa_3 5

Trasa_2 3

Trasa_1 4

Kolikrát typ 1 bude nasazen na trasu j

2112

1

..forazt iijiji

Page 33: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o přidělování dopravních prostředků

Pro zabezpečení stavby je třeba v průběhu jednoho dne dovézt ze železáren 70 t armovací ocele a z cementárny 135 t cementu. Každý z uvedených podniků se nachází v jiném místě a obě místa jsou od stavby vzdálená tak, že každé vozidlo použité na přepravu je za den schopno zvládnout jen jedinou cestu ze stavby do jednoho z podniků a zpět. K dispozici máme heterogenní park vozidel složený z 7 vozidel o nosnosti 10 t, 8 vozidel o nosnosti 8 t a 5 vozidel o nosnosti 20 t. Vozidla mohou převážet jak cement tak i ocel. Rozhodněte o nejvýhodnějším přidělení vozidel při nákladech {cij } na jednu cestu tam a zpět do každého z obou

podniků (1-železárny, 2-cementárna).

Page 34: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o přidělování dopravních prostředků

z1jZ+

Stavba

Typ_1: 10 tun 7 kusů

Cementárna 150 t

Železárna 70 t

Kolikrát typ 1 bude nasazen na trasu j

Typ_2: 8 tun 8 kusů

Typ_3: 20 tun 5 kusů

Rozhodněte o nejvýhodnějším přidělení vozidel při nákladech {cij } na jednu cestu tam a zpět do každého z obou podniků (1-železárny, 2-cementárna).

Page 35: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o přidělování dopravních prostředků „náš zákazník, náš pán“

z1jZ+

Stavba

Typ_1: 10 tun 7 kusů

Cementárna 150 t

Železárna 70 t

Kolikrát typ 1 bude nasazen na trasu j

Typ_2: 8 tun 8 kusů

Typ_3: 20 tun 5 kusů

701

3

1

iii

zK

Page 36: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha o přidělování dopravních prostředků „kde nic není, ani čert nebere“

z1jZ+

Stavba

Typ_1: 10 tun 7 kusů

Cementárna 150 t

Železárna 70 t

Kolikrát typ 1 bude nasazen na trasu j

Typ_2: 8 tun 8 kusů

Typ_3: 20 tun 5 kusů

71

2

1

jj

z

Page 37: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Dopravní úloha s kontejnery

Je třeba řešit zásobování n odběratelů s požadavky bj z m

skladů s kapacitami ai, kde součet požadavků je menší než

součet kapacit. K dopravě zboží je ale možno použít jen kontejnery o kapacitě K. Požadavky i kapacity je možno do kontejnerů libovolně dělit, ale náklady na dopravu jsou dány počty kontejnerů, které budou přepraveny mezi jednotlivými dvojicemi sklad-odběratel. Určete nyní nejlevnější přepravní plán pro zásobení odběratelů, když náklady na přepravu jednoho kontejneru z místa i na místo j jsou cij.

Page 38: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Dopravní úloha s kontejnery

Podnikatel

Page 39: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Dopravní úloha s fixní sazbou

Organizace zásobuje čtyři vodárny vodou z tří zdrojů vlastní potrubní sítí. Pro doplnění zásob je třeba do vodáren dopravit pořadě bj = 80, 80, 140 a 80 m3 vody denně. Kapacity zdrojů jsou pořadě ai = 100, 150 a 200 m3 denně. Náklady na dopravu jedné jednotky vody ze zdroje i do vodárny j potrubím které je a nebo bude vybudováno, jsou dány maticí koeficientů cij, i = 1..3 a j = 1..4. Informace, zda ze zdroje i do vodárny j je vybudováno potrubí, je dána 0-1 hodnotou koeficientu qij, kde qij = 0 znamená že ze zdroje i k vodárně j není vybudováno potrubí. Jeho vybudování si vyžádá investičními náklady, jejichž denní odpisy představují částku 300 peněžních jednotek. Je třeba určit co nejméně nákladný zásobovací program organizace.

Page 40: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Dopravní úloha s fixní sazbou

Podnikatel

Page 41: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Lokační úloha Uncapacitated Facility Location Problem

Je zadaná dopravní síť se zákazníky v uzlech j J a s místy i I v nichž je možno umístit servisní střediska poskytující služby. I jedno středisko umístěné kdekoliv v uzlu z množiny I je schopno obsloužit všechny zákazníky. Úloha spočívá v minimalizaci celkových nákladů, které zahrnují investiční náklady fi spojené s umístěním střediska v místě i a dále provozní náklady cij spojené s obsluhou zákazníka j z místa i. Podmínkou je, že každý zákazník musí být obsloužen, nebo-li musí být přiřazen některému vybudovanému středisku.

Page 42: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Lokační úloha Uncapacitated Facility Location Problem

Podnikatel

Page 43: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha obchodního cestujícího (Travelling Salesman Problem)

V úplné dopravní síti ( tj. síť, kde je každý uzel spojen úsekem s každým jiným uzlem ) o n uzlech a s nezáporným ohodnocením neorientovaných úseků cij se

v uzlu 1 nachází obchodní cestující. Je třeba pro něho nalézt trasu s co nejmenším celkovým ohodnocením použitých úseků tak, aby navštívil každý uzel právě jednou a aby se vrátil zpět do výchozího uzlu. ( Tato úloha je známa také pod názvem úloha nejlevnější hamiltonovské kružnice na úplném grafu.)

Page 44: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha obchodního cestujícího (Travelling Salesman Problem)

Podnikatel

Page 45: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha okružních jízd (Vehicle Routing Problem-VRP)

V úplné dopravní síti s uzly 1, ..., n se vzdálenostmi cij

mezi nimi je v uzlu 1 umístěn zdroj a v uzlech 2, ..., n odběratelé s požadavky bj. Ve zdroji jsou k dispozici

vozidla o kapacitě K, kde bj K pro j = 2, ..., n.

Určete trasy vozidel tak, aby jejich celková délka byla co nejmenší, aby všichni odběratelé byli obslouženi a to každý jen jednou návštěvou některého vozidla.

Page 46: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha okružních jízd (Vehicle Routing Problem-VRP)

Podnikatel

Page 47: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Úloha rozkladu množiny (Set Partitioning Problem)

Bylo navrženo 7 různých tras, jimiž je možno obsloužit ze střediska 1 zákazníky 2, 3, 4 a 5 jsou to trasy1-2-3-1 s náklady 71-4-5-3-1 s náklady 121-4-3-1 s náklady 81-4-1 s náklady 51-5-1 s náklady 41-4-5-2-1 s náklady 131-4-2-5-3-1 s náklady 20Určete nejlevnější sestavu tras, které obslouží všechny zákazníky tak, že každý zákazník bude ležet jen na jedné trase.

Page 48: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Podmínky "buď a nebo"

Nechť z ostatních podmínek úlohy plánování výroby, které zde neuvádíme, vyplývá že výrobků typu 1 může být nejvýše 50 a výrobků typu 2 nejvýše 100. Je třeba zabezpečit, aby výroba buď nespotřebovala více pracovních hodin než 500 a nebo, aby nespotřebovala více než 600 tun materiálu. Přitom na výrobu jednoho výrobku typu 1 je třeba 20 hod a 27 tun, na výrobek typu 2 je třeba 18 hod a 30 tun.

Page 49: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Podmínky "buď a nebo"

Podmínky, z nichž alespoň jedna má platit, jsou vzhledem k výrobnímu programu < x1, x2 > tyto:

20 x1 + 18 x2 500

27 x1 + 30 x2 600.

Page 50: Zapsání modelu úlohy celočíselného  programování do jazyka Mosel

Podmínky "buď a nebo"

Z maximálního počtu výrobků víme, že spotřeba prac. hodin nepřekročí 2800 hod a spotřeba ocele 4350 tun.Zavedeme bivalentní proměnnou y, hodnota 1 znamená, že řešení má vyhovovat podmínce 20 x1 + 18 x2 500 a platnost druhé podmínky nemusí být požadovaná. Hodnota 0 bude znamená druhý případ. 20 x1 + 18 x2 500 + 2300 (1- y)

27 x1 + 30 x2 600 + 3750 y.Proměnná y může nabývat pouze jedné ze dvou hodnot 1 a 0, bude-li y = 1, druhá z podmínek přejde v něco, co je v každém případě splněno a první bude vyžadována v původním tvaru. Pro y = 0 tomu bude právě naopak.