Počítače Okna Internet

Lineární programy. Lineární programy - abstrakt Sestavení nejjednodušších programů

1.2 Stručně o lineárním programování.

Co je lineární programování? Jedná se o jednu z prvních a nejdůkladněji prostudovaných oblastí matematického programování. Právě lineární programování byl úsek, ze kterého se začala vyvíjet samotná disciplína „matematické programování“. Pojem „programování“ v názvu disciplíny nemá nic společného s pojmem „programování (tj. psaní programů) pro počítač“, neboť disciplína „lineární programování“ vznikla ještě před dobou, kdy se počítače začaly široce využívat v řešení matematických, inženýrských, ekonomických a dalších úloh. Termín „lineární programování“ vznikl nepřesným překladem anglického „lineárního programování“. Jedním z významů slova „programování“ je vytváření plánů, plánování. Správný překlad „lineárního programování“ by tedy nebyl „lineární programování“, ale „lineární plánování“, které přesněji odráží obsah disciplíny. Nicméně termín lineární programování, nelineární programování atp. v naší literatuře se staly všeobecně uznávanými.

Lineární programování se tedy objevilo po druhé světové válce a začalo se rychle rozvíjet a přitahovalo pozornost matematiků, ekonomů a inženýrů díky možnosti široké praktické aplikace a také matematické „harmonii“.
Můžeme říci, že lineární programování je použitelné pro konstrukci matematických modelů těch procesů, které mohou být založeny na hypotéze lineárního znázornění reálného světa: ekonomické problémy, problémy řízení a plánování, optimální umístění zařízení atd.

Úkoly lineární programování jsou problémy, ve kterých jsou jak účelová funkce, tak omezení ve formě rovností a nerovností lineární. Stručně, problém lineárního programování lze formulovat následovně: najděte vektor hodnot proměnných, které poskytují extrém lineární účelové funkce pod m omezeními ve formě lineárních rovností nebo nerovností.

Lineární programování je nejběžněji používanou optimalizační technikou. Mezi úkoly lineárního programování patří:

· Racionální využívání surovin a materiálů; úkoly optimalizace řezání;

· Optimalizace výrobního programu podniků;

· Optimální umístění a koncentrace výroby;

· Vypracování optimálního plánu přepravy, přepravní práce;

· Řízení výrobních zásob;

· A mnoho dalších spadajících do oblasti optimálního plánování.

Z celkového počtu aplikovaných optimalizačních metod tak podle odhadů amerických expertů připadá na lineární programování asi 75 %. Asi čtvrtina počítačového času stráveného v posledních letech vědeckým výzkumem byla věnována řešení problémů lineárního programování a jejich četných modifikací.

První výroky o problémech lineárního programování formuloval slavný sovětský matematik L.V.Kantorovič, který byl za tyto práce oceněn Nobelovou cenou za ekonomii.

V současné době je lineární programování jedním z nejčastěji používaných nástrojů v matematické teorii optimálního rozhodování.

Lineární programování je tedy věda o výzkumných metodách a hledání nejvyšších a nejnižších hodnot. lineární funkce, na nichž jsou navrstveny neznámé lineární omezení... Problémy lineárního programování tedy souvisejí s problémy pro podmíněný extrém funkce.


1.3 Hlavní úkol lineárního programování

Hlavní problém lineárního programování (LPP) je položen následovně: Existuje řada proměnných. Je nutné najít jejich nezáporné hodnoty, které by systém uspokojily lineární rovnice:

{1.1}

a navíc by minimalizovala lineární účelovou funkci (CF)

Je zřejmé, že případ, kdy je třeba CF otočit ne na minimum, ale na maximum, lze snadno zredukovat na předchozí, pokud změníme znaménko funkce a místo toho vezmeme v úvahu funkci

Jakýkoli soubor proměnných, který splňuje rovnice (1.1), se nazývá proveditelným řešením OZLP.

Optimální řešení je takové z možných řešení, při kterém se CF otočí na minimum.

V praxi jsou omezení v problému lineárního programování často specifikována ne rovnicemi, ale nerovnicemi. V tomto případě můžete přejít k hlavnímu úkolu lineárního programování.

Zvažte problém lineárního programování s omezeními nerovnosti, které mají tvar

{1.2}

a jsou lineárně nezávislé. To druhé znamená, že žádný z nich nemůže být reprezentován jako lineární kombinace ostatních. Je třeba najít, které nerovnosti uspokojí a minimalizují

Pojďme si představit rovnice:

{1.3}

Kde jsou další proměnné, které jsou také nezáporné.

Máme tedy obecný problém lineárního programování – najdi nezáporné tak, aby vyhovovaly soustavě rovnic (1.3) a otočily se na minimum.

Koeficienty ve vzorci (1.3) výše jsou rovny nule.


1.3. Konstrukce omezení a gradientu účelové funkce: 1.4. Oblastí proveditelných řešení je segment AB. 1.5. Bod A je optimální. Souřadnice bodu A:; ; ... 2. Řešení úlohy lineárního programování simplexovou metodou. Přímý úkol. Problém lineárního programování pro jakýkoli vrchol v kompaktní formě lze znázornit takto: K získání použijeme algoritmus uvedený v ...



Paprsky vycházející z jednoho bodu se nazývají mnohostěnný konvexní kužel s vrcholem v daném bodě. 1.4 Matematické základy řešení úloh lineárního programování grafickým způsobem 1.4.1 Matematický aparát Pro další pochopení všeho je užitečné znát a představit si geometrickou interpretaci úloh lineárního programování, kterou lze uvést pro případy n = 2 a n = ...

Úkoly f1 (x) = max = g1 (x) - pro první podnik; - pro jiné podniky. Řešení problému optimálního rozdělení prostředků mezi podniky metodou dynamického programování Tabulka 12 Prostředky s, tis. Podnik 1 2 3 4 G1 (x) G2 (x) G3 (x) G4 (x) 20 11 13 12 10 40 21 20 22 27 60 40 42 34 33 80 54 45 55 57 100 ... 62

Dejte do takové simplexní tabulky aktuální základní proměnné rovné Ai, 0 a volné rovné nule, pak dostaneme optimální řešení. Praxe používání simplexové metody ukázala, že počet iterací potřebných k vyřešení problému lineárního programování se obvykle pohybuje od 2 m do 3 m, i když u některých speciálně konstruovaných problémů se výpočty podle pravidel simplexové metody změní na přímku . ..

Pokud jsou v programu všechny příkazy prováděny postupně, jeden po druhém, je takový program volán lineární. Vezměme si jako příklad program, který vypočítá výsledek pomocí daného vzorce.

Úkol 1.1. Výpočet vzorce

Napište program, který převede teplotu ve stupních Fahrenheita na stupně Celsia pomocí vzorce:

kde C je teplota ve stupních Celsia a F je teplota ve stupních Fahrenheita.

Před napsáním jakéhokoli programu je potřeba jasně definovat, co je do něj potřeba zadat a co bychom ve výsledku měli dostat.

V tomto případě:

Počáteční údaj je jedno reálné číslo, což je teplota ve stupních Celsia,

Výsledkem je další reálné číslo.

Před napsáním programu si otevřeme integrované prostředí Visual C++:

Start / Programy / Microsoft Visual Studio / Microsoft Visual C ++ 6.00

1) Soubor> Nový...

2) V okně, které se otevře:

Vyberte typ Aplikace konzoly Win32;

Do textového pole Název projektu zadejte název projektu;

Do textového pole Umístění zadejte (vyberte pomocí tlačítka ...) název adresáře, kde jsou umístěny soubory projektu, například G: / ASOIZ /

Klikněte levým tlačítkem na tlačítko OK.

3) Otevře se dialogové okno Win32 Console Application - Stepl of 1 a v něm:

Vyberte typ Prázdný projekt;

Klikněte na tlačítko Dokončit.

4) Po kliknutí se zobrazí okno Nový projekt, ve kterém klikněte na tlačítko OK.

1) Soubor > Nový .... Otevře se dialogové okno Nový.

2) Na kartě Soubory:

Vyberte typ souboru (v tomto případě: C ++ Source File);

Do textového pole Název souboru zadejte požadovaný název souboru;

Musí být zaškrtnuto políčko Přidat do projektu;

Klepněte na tlačítko OK.

Zadáme následující text programu:

Uvažujme každý řádek programu zvlášť.

Na začátku programu je napsána direktiva preprocesoru, podle které je hlavičkový soubor propojen se zdrojovým kódem programu ... Toto je soubor, který obsahuje popisy I/O operátorů cin a cout.

Jakýkoli program v jazyce C++ se skládá z funkcí, z nichž jedna musí mít název main, což znamená, že se program spouští z této funkce. Tělo funkce se zapisuje za závorkou ve složených závorkách (), tzn. ty příkazy, které chcete provést.

Při psaní programu vypadá jakákoli šablona takto:

#zahrnout<…>

#zahrnout<…>

deklarace proměnných;

zadání počátečních dat;

výpočet výsledku;

výstup výsledku;

Chcete-li uložit počáteční data a výsledky, musíte v ní přidělit dostatek místa paměť s náhodným přístupem... K tomu slouží operátor 2. V našem programu potřebujeme uložit dvě hodnoty: teplotu ve stupních Celsia a teplotu ve stupních Fahrenheita, takže v operátoru jsou definovány dvě proměnné. Jeden, pro udržování teploty ve stupních Fahrenheita, se nazývá fahr, druhý (ve stupních Celsia) - cels. Názvy proměnných udává programátor na základě jejich účelu. Název se může skládat pouze z latinských písmen, číslic a podtržítka a nesmí začínat číslicí.

Při popisu jakékoli proměnné ji musíte specifikovat Typ. Protože teplota může nabývat nejen celočíselných hodnot, je pro proměnné zvolen skutečný typ plovák.

Základní typy:

int (krátké, bez znaménka) - celá čísla,

plovák (double, long double) - skutečný

char - znak

bool - boolovský

Aby uživatel programu věděl, v jakém okamžiku je požadováno zadání dat z klávesnice, je aplikována tzv. výzva k zadání (operátor 3). Na obrazovce se zobrazí údaj zadaný v operátoru. coutřetězec znaků a kurzor se přesune na další řádek. Pro přechod na další řádek použijte endl.

V příkazu 4 se zadává jedno číslo z klávesnice do proměnné fahr... K tomu se používá standardní objekt cin a operace extrahování (čtení) >>. Pokud je požadováno více než jedna hodnota, použije se řetězec operací >>.

Příkaz 5 vyhodnocuje výraz psaný napravo od operace přiřazení(označeno znaménkem =) a výsledek je přiřazen do proměnné cels, to znamená, že je uložen v paměti přidělené této proměnné. za prvé Celý konstanta 5 bude děleno polibek konstanta 9, pak se výsledek této operace vynásobí výsledkem odečtení 32 od proměnné fahr.

K zobrazení výsledku v příkazu 6 se používá objekt cout. Zobrazí se řetězec pěti prvků. Toto je čára "Fahrenheita:", hodnota proměnné fahr, řádek ", ve stupních Celsia:", hodnota proměnné cels a operátor zalomení řádku endl.

Poslední operátor (operátor 7) tohoto programu se z něj má vrátit a přenést hodnotu do vnějšího prostředí.

Dále program zkompilujeme. Chcete-li to provést, stiskněte tlačítko na panelu nástrojů nebo kombinaci kláves Ctrl + F7. Výstupní okno (ve spodní části obrazovky) by mělo zobrazit zprávu 0 chyb, 0 varování (0 chyb, 0 varování). Pokud jsou chyby, zkontrolujte je podle originálu.

Program spustíte stisknutím tlačítka na panelu nástrojů nebo kombinací kláves Ctrl + F5.

Při spuštění programu se místo ruských znaků zobrazí ???, což je způsobeno odlišnými standardy pro kódování znaků azbuky v operační systémy MS DOS a Windows. Chcete-li to opravit, přidejte do programu funkci CharToOem (přídavky jsou pro přehlednost zvýrazněny červeně)

#zahrnout

#zahrnout

char * RUS (konst char * text)

CharToOem (text, buf);

float fahr, cels;

cout<

cels = 5/9 * (fahr - 32);

cout<

cout<

Funkce Rus () nelze použít více než jednou v řetězci operací<< для одного объекта cout tak jsme to rozdělili na dvě části.

Jak vidíte, výsledek provádění programu se stabilitou je nulový! To je způsobeno způsobem vyhodnocení výrazu. Podívejme se znovu na operátor 4. Konstanty 5 a 9 jsou celočíselného typu, takže výsledek jejich dělení je také celočíselný. Výsledek dalších výpočtů přirozeně nemůže být nic jiného než nula. Tuto chybu je snadné opravit - stačí napsat alespoň jednu z konstant jako reálné číslo, například:

cels = 5,/9* (fahr - 32);

Lineární program je program, jehož všechny příkazy se provádějí postupně v pořadí, v jakém jsou zapsány. Toto je nejjednodušší druh programu.

Proměnné

Proměnná je hodnota, která za běhu programu může -

změnit jeho hodnotu. Všechny proměnné použité v programu musí být popsány v části popisující proměnné, počínaje servisním slovem var.

Každé proměnné je přiřazen její název a typ, například:

var číslo: celé číslo; x, y: skutečné; možnost: char;

Název proměnné definuje umístění v paměti, kde se nachází hodnota proměnné. Název zadává programátor. Mělo by odrážet význam uložené hodnoty a být snadno rozpoznatelné.

Typ proměnných se volí na základě rozsahu a požadované přesnosti reprezentace dat.

Při deklaraci můžete proměnné přiřadit nějakou počáteční hodnotu, tzn. inicializovat její. Inicializace znamená nastavení hodnoty před spuštěním programu. Inicializované proměnné jsou popsány za klíčovým slovem const:

const number: integer = 100; x: skutečné = 0,02; možnost: char = "u";

Standardně jsou všechny proměnné popsané v hlavním programu nastaveny na nulu.

Výrazy

Výraz je pravidlo pro vyhodnocení hodnoty. Zahrnovaný výraz -

operandy, spojena známkami operací. Operandy výrazu mohou být konstanty, proměnné a volání funkcí. Operace se provádějí v určitém pořadí v souladu s priority, jako v matematice. Chcete-li změnit pořadí operací, použijte kulaté držáky, míra jejich hnízdění je prakticky neomezená.

Výsledkem výrazu je vždy hodnota konkrétního typu, která je určena typy operandů. Množství zahrnuté ve výrazu musí být kompatibilní typy.

  • 1. Unární operace není, unární mínus -, přičemž adresa @.
  • 2. Operace jako násobení: * / div mod a shl shr.
  • 3. Operace jako sčítání: + - nebo xor.
  • 4. Operace vztahu: = o = in.

Funkce použité ve výrazu jsou vyhodnoceny jako první.

Příklady výrazů:

t + sin (x) / 2 * x - výsledek je reálného typu; A

(x> 0) a (y

Struktura programu

Program PASKAL se skládá z volitelného názvu, částí popisu a části prohlášení:

název programu; (název) popis sekce začátek příkaz sekce konec. (* program končí tečkou *)

Program může obsahovat komentáře, uzavřeno ve složených závorkách () nebo v závorkách jako (* *).

Obecná struktura programu je znázorněna na obr. 2.1.

Sekce příkazů zaznamenává spustitelné příkazy programu. Klíčová slova begin a end nejsou operátory, ale používají se k jejich spojení do tzv složený operátor, nebo blok. Blok lze zapsat kdekoli v programu, kde je povolen běžný operátor.

Popisové sekce jsou několika typů: popisy modulů, konstant, typů, proměnných, návěští, procedur a funkcí.

Modul je knihovna zdrojů (podprogramů, konstant atd.), která je připojena k programu.

Rýže. 2.1.

Sekce popisu modulu, pokud existuje, by měla být na prvním místě. Popis začíná klíčovým slovem use, následuje čárkami oddělený seznam všech modulů připojených k programu, jak standardních, tak zakázkových, například: use crt, graph, my_module;

Počet a pořadí zbývajících sekcí je libovolné, existuje pouze jedno omezení: jakákoli hodnota musí být před použitím popsána. Konec části popisu je začátkem další části. Program může mít několik sekcí popisu stejného typu, ale pro zjednodušení struktury programu se doporučuje seskupit všechny popisy stejného typu do jedné sekce.

V sekci popisu proměnných musíte definovat všechny proměnné, které budou použity v hlavním programu.

Část popisující konstanty slouží k tomu, že místo hodnot konstant můžete v programu použít jejich názvy. Sekce popisující konstanty má ještě jedno použití: popisuje proměnné, kterým je třeba před spuštěním programu přiřadit hodnotu:

konstantní hmotnost: reálná = 61,5; n = 10;

Část popisu štítku začíná klíčovým slovem štítek, za nímž následuje seznam všech štítků, se kterými se program setkává, oddělenými čárkami. Návěští je buď jméno, nebo kladné číslo nepřesahující 9999. Návěští se umístí před jakýkoli spustitelný příkaz a odděluje se od něj dvojtečkou. Příklad popisů štítků: štítek 1, 2, chyba;

Štítky se používají k organizaci přechodu na konkrétního operátora pomocí operátor nepodmíněného skoku jít do.

Vstupně-výstupní procedury Jakýkoli program při zadávání počátečních dat a výstupu výsledků spolupracuje s externími zařízeními. Sada standardních vstupních a výstupních zařízení, tzn. se nazývá klávesnice a displej řídicí panel.

Vstup z klávesnice. Pro vstup z klávesnice jsou definovány následující procedury: read a readln: read (list); readln [(seznam)];

V závorkách je uveden seznam názvů proměnných oddělených čárkami. Hranaté závorky označují, že seznam nemusí být přítomen. Například:

číst (a, b, c); readln (y); readln;

POZORNOST

Můžete zadat celočíselné, reálné, znakové a řetězcové hodnoty. Vstupní hodnoty musí být odděleny libovolným počtem prázdných znaků (mezera, tabelace, posun odřádku).

Zadání hodnoty každé proměnné se provádí takto:

  • ? hodnota proměnné je zvýrazněna jako skupina znaků umístěných mezi oddělovači;
  • ? tyto znaky jsou převedeny do vnitřní reprezentace odpovídající typu proměnné;
  • ? hodnota se zapíše do paměťového místa označeného názvem proměnné.

Procedura readln se navíc po zadání všech hodnot přepne na další řádek původních dat. Rutina readln bez parametrů pouze čeká na stisknutí klávesy Enter.

Funkce zadávání znaků a řetězců spočívá v tom, že bílé znaky v nich se neliší od všech ostatních, tudíž nemohou být oddělovacími znaky.

Výstup na displeji. Na výstupu se provede inverzní převod: z vnitřní reprezentace na znaky zobrazené na obrazovce. K tomu jazyk definuje standardní procedury write a writeln: write (list); writeln [(seznam)];

Procedura zápisu zobrazí hodnoty zadané v seznamu na obrazovce a procedura writeln kromě toho také přesune kurzor na další řádek. Procedura writeln bez parametrů jednoduše přesune kurzor na další řádek.

Můžete zobrazit hodnoty logického, celočíselného, ​​reálného, ​​znakového a řetězcového typu. Seznam může obsahovat nejen názvy proměnných, ale i výrazy a také jejich speciální případ – konstanty. Pro každou zobrazenou hodnotu ji navíc můžete nastavit formát, například: writeln (a: 4, b: 6: 2);

Za názvem proměnné A je uveden počet pozic, které jsou mu přiděleny, oddělené dvojtečkou, ve které je hodnota zarovnána vpravo. Pro b existují dvě specifikace formátu, což znamená, že této proměnné je přiděleno pouze šest pozic a dvě z nich jsou pro zlomkovou část.

15. Analytické metody. Metody lineárního programování.

15.1. Analytické metody

Člověk, vykonávající určité činy, se v průběhu svého vývoje snažil chovat tak, aby výsledek dosažený v důsledku určitého jednání byl v určitém smyslu nejlepší. Přesouval se z jednoho bodu do druhého a snažil se najít nejkratší možnou cestu. Při stavbě obydlí hledal takovou jeho geometrii, která při nejnižší spotřebě paliva poskytuje přijatelně komfortní podmínky pro život. Při stavbě lodí se jim snažil dát takový tvar, ve kterém by voda kladla nejmenší odpor. Ve výčtu podobných příkladů lze snadno pokračovat.

V určitém smyslu jsou nejlepší řešení problémů nazývána optimální... Žádný více či méně složitý problém se v současné době nevyřeší bez použití optimalizačních principů. Při formulaci a řešení optimalizačních problémů vyvstávají dvě otázky: co a jak optimalizovat?

Odpověď na první otázku je získána jako výsledek hlubokého studia problému, který má být řešen. Identifikuje se parametr, který určuje míru dokonalosti řešení vzniklého problému. Tento parametr je běžně označován jako cílová funkce nebo kritérium kvality... Dále je stanovena sada hodnot, které určují účelovou funkci. Nakonec jsou formulována všechna omezení, která je třeba vzít v úvahu při řešení problému. Poté je sestaven matematický model, který spočívá ve stanovení analytické závislosti účelové funkce na všech argumentech a analytické formulaci omezení spojených s problémem. Dále začnou hledat odpověď na druhou otázku.

Budiž tedy v důsledku formalizace aplikovaného problému stanoveno, že účelová funkce, kde množina X je zobecněním omezení, se nazývá množina proveditelných řešení. Podstata optimalizačního problému spočívá v hledání na množině X - množině možných řešení pro takové řešení
, při které účelová funkce F dosáhne nejnižší nebo nejvyšší hodnoty.

Lineární programování je nedílnou součástí optimalizačních metod.

15.2. Základní pojmy lineárního programování

První zmínka (1938) o matematických metodách v efektivním řízení výroby patří sovětskému matematikovi L.V.Kantorovičovi. O rok později, v roce 1939, vydal L. V. Kantorovich svou práci „Matematické metody pro organizaci a plánování výroby“ a získané výsledky prakticky aplikoval. Termín „lineární programování“ zavedli koncem 40. let američtí matematici J. Danzig a T. Koopmans. J. Danzig vyvinul matematický aparát simplexové metody pro řešení úloh lineárního programování (1951). Simplexová metoda se používá k řešení celé řady problémů lineárního programování a stále je jednou z hlavních metod.

Lineární programování je obor matematiky zaměřený na hledání extrému (maxima nebo minima) v problémech, které jsou popsány lineárními rovnicemi. Navíc lineární rovnice popisují jak samotnou účelovou funkci, tak vstupní parametry (proměnné) podmínek omezení vstupních parametrů. Nezbytnou podmínkou pro problémy lineárního programování je povinná přítomnost omezení zdrojů (suroviny, materiály, finance, poptávka po vyráběných produktech atd.). Další důležitou podmínkou pro řešení problému je volba kritéria pro zastavení algoritmu, to znamená, že účelová funkce musí být v určitém smyslu optimální. Optimálnost účelové funkce by měla být vyjádřena kvantitativně. Pokud je účelová funkce reprezentována jednou nebo dvěma rovnicemi, pak se v praxi takové problémy řeší poměrně snadno. Kritérium zastavení algoritmu (nebo kritérium optimality) musí splňovat následující požadavky:

    být jediný pro daný úkol;

    měřeno v jednotkách množství;

    závisí lineárně na vstupních parametrech.

Na základě výše uvedeného je možné formulovat problém lineárního programování v obecné podobě:

najít extrém účelové funkce

za podmínek rovnosti:

(2.2)

pod omezeními ve formě nerovností:

(2.3)

a podmínky nezápornosti vstupních parametrů:

Stručně řečeno, problém lineárního programování lze napsat takto:

(2.5)

za podmínky

kde
- vstupní proměnné;

Čísla jsou kladná, záporná a nula.

V maticové formě lze tento úkol zapsat takto:

Problémy lineárního programování lze řešit analyticky a graficky.

15.3. Kanonický problém lineárního programování

, i = 1, ..., m,

, j = 1,…, n.

Hlavní výpočetní metody pro řešení problémů lineárního programování jsou vyvinuty speciálně pro kanonický problém.

15.4. Obecný problém lineárního programování

Je nutné maximalizovat (minimalizovat) lineární funkci n proměnné.

s omezeními

, i=1,…, k,

, i=1+ k,…, m,

, …,

Tady km, rn. Standardní úloha se získá jako speciální případ obecné úlohy pro k= m, r= n; kanonický - pro k=0, r= n.

Příklad.

Továrna na cukrovinky vyrábí několik druhů sladkostí. Říkejme jim podmíněně „A“, „B“ a „C“. Je známo, že prodej deseti kilogramů sladkostí "A" přináší zisk 90 rublů, "B" - 100 rublů a "C" - 160 rublů. Cukroví lze vyrobit v libovolném množství (prodej zajištěn), ale suroviny jsou omezené. Je potřeba určit, jaké cukroví a kolik desítek kilogramů se musí vyrobit, aby byl celkový zisk z prodeje maximální. Míry spotřeby surovin pro výrobu 10 kg každého druhu cukroví jsou uvedeny v tabulce 1.

Tabulka 1. Míry spotřeby surovin

pro výrobu

Ekonomická a matematická formulace problému má formu

Najděte takové proměnné hodnoty X = (x1, x2, x3), do

Objektivní funkce

za podmínek-omezení: