Lineær programmering er en matematisk disciplin dedikeret til teori og metoder til løsning af ekstreme problemer på sæt af dimensionelle vektorrum defineret af systemer af lineære ligninger og uligheder.
Lineær programmering (LP) er et særligt tilfælde af konveks programmering , som igen er et særligt tilfælde af matematisk programmering . Samtidig er det grundlaget for flere metoder til løsning af heltals- og ikke-lineære programmeringsproblemer . En generalisering af lineær programmering er fraktioneret lineær programmering .
Mange egenskaber ved lineære programmeringsproblemer kan også tolkes som egenskaber ved polyedre og kan således formuleres og bevises geometrisk.
Matematiske undersøgelser af individuelle økonomiske problemer, matematisk formalisering af numerisk materiale blev udført så tidligt som i det 19. århundrede . I den matematiske analyse af den udvidede produktionsproces blev algebraiske relationer brugt, deres analyse blev udført ved hjælp af differentialregning . Dette gjorde det muligt at få en generel idé om problemet.
Udviklingen af økonomien krævede kvantitative indikatorer, og i 1920'erne blev der skabt en tværsektoriel balance ( IOB ). Det var ham, der tjente som drivkraft i skabelsen og studiet af matematiske modeller. Udviklingen af MOB i 1924-1925 i USSR påvirkede økonomen og statistikeren Vasily Vasilievich Leontievs arbejde . Han udviklede en tværsektoriel model for produktion og distribution af produkter.
I 1938 begyndte Leonid Vitalievich Kantorovich i løbet af en videnskabelig konsultation at studere den rent praktiske opgave med at udarbejde den bedste plan for indlæsning af skrælningsmaskiner (krydsfinertrust). Denne opgave egnede sig ikke til konventionelle metoder. Det blev klart, at opgaven ikke var tilfældig. [en]
I 1939 udgav Leonid Kantorovich værket "Mathematical Methods of Organization and Planning of Production", hvori han formulerede en ny klasse af ekstreme problemer med restriktioner og udviklede en effektiv metode til at løse dem, hvorved han lagde grundlaget for lineær programmering.
Studiet af sådanne problemer førte til skabelsen af en ny videnskabelig disciplin af lineær programmering og åbnede et nyt trin i udviklingen af økonomiske og matematiske metoder.
I 1949 udviklede den amerikanske matematiker George Bernard Dantzig en effektiv metode til løsning af lineære programmeringsproblemer (LPP) - simplex-metoden . [en]
Udtrykket "programmering" skal forstås i betydningen "planlægning" (en af oversættelserne af engelsk programmering ). Det blev foreslået i midten af 1940'erne af George Danzig, en af grundlæggerne af lineær programmering, før computere blev brugt til at løse lineære optimeringsproblemer .
Den indre punktmetode blev første gang nævnt af I. I. Dikin i 1967 . [2] . Disse undersøgelser blev fortsat, herunder af indenlandske videnskabsmænd. I 1970'erne lykkedes det V. G. Zhadan at opnå de vigtigste resultater og udvikle en generel tilgang til konstruktionen af indre punktmetoder til løsning af problemer med lineær og ikke-lineær programmering, baseret på transformation af rum; foreslå barriereprojektive og barriere-newtonske numeriske metoder.
Det generelle (standard) problem med lineær programmering er problemet med at finde minimum af en lineær objektiv funktion (lineær form) af formen [3] :
Et problem, hvor der opstår begrænsninger i form af uligheder, kaldes et grundlæggende lineært programmeringsproblem (BLP).
Problemet med lineær programmering vil have en kanonisk form, hvis der i hovedproblemet i stedet for det første system af uligheder er et system af ligninger med begrænsninger i form af lighed [4] :
Hovedproblemet kan reduceres til et kanonisk problem ved at indføre yderligere variabler.
Lineære programmeringsproblemer af den mest generelle form (problemer med blandede begrænsninger: ligheder og uligheder, tilstedeværelsen af variable fri for begrænsninger) kan reduceres til ækvivalente (som har samme sæt af løsninger) ændringer af variable og erstatning af ligheder med et par uligheder [5] .
Det er let at se, at problemet med at finde maksimum kan erstattes af problemet med at finde minimum ved at tage koefficienterne med det modsatte fortegn.
Overvej det maksimale matchningsproblem i en todelt graf : der er flere drenge og piger, og for hver dreng og pige ved man, om de kan lide hinanden. Det er nødvendigt at gifte det maksimale antal par med gensidig sympati.
Lad os introducere variabler , der svarer til parret fra -th dreng og -th pige og opfylder begrænsningerne:
med en objektiv funktion , hvor er lig med 1 eller 0 afhængigt af om den -th dreng og -th pige er søde ved hinanden. Det kan påvises, at blandt de optimale løsninger på dette problem er der en heltalsløsning. Variabler lig med 1 vil svare til par, der bør være gift.
Lad der være en graf (med rettede kanter), hvor for hver kant dens kapacitet er angivet. Og to hjørner er givet: en vask og en kilde. Det er nødvendigt at specificere for hver kant, hvor meget væske der vil strømme gennem den (ikke mere end dens kapacitet) for at maksimere den totale strøm fra kilde til synk (væske kan ikke forekomme eller forsvinde ved alle hjørner undtagen henholdsvis kilde og synke).
Lad os tage mængden af væske, der strømmer gennem den th kant, som variable. Derefter
hvor er kapaciteten af den th kant. Disse uligheder skal suppleres med ligheden mellem mængden af indgående og udgående væske for hvert toppunkt, undtagen for synken og kilden. Som funktion er det naturligt at tage forskellen mellem mængden af udstrømmende og indstrømmende væske ved kilden.
En generalisering af det tidligere problem er den maksimale strøm af minimumsomkostninger. I dette problem er omkostningerne for hver kant givet, og det er nødvendigt at vælge blandt de maksimale strømme flowet med minimumsomkostningerne. Denne opgave er reduceret til to lineære programmeringsproblemer: Først skal du løse problemet med det maksimale flow, og derefter tilføje begrænsningen til dette problem , hvor er værdien af det maksimale flow, og løse problemet med en ny funktion - omkostningerne ved flowet.
Disse problemer kan løses hurtigere end med generelle algoritmer til løsning af lineære programmeringsproblemer på grund af den særlige struktur af ligninger og uligheder.
Der er en vis homogen last, der skal transporteres fra lagre til fabrikker. For hvert lager er det kendt, hvor meget last der er i det , og for hvert anlæg er dets behov for last kendt. Transportomkostningerne er proportionale med afstanden fra lageret til fabrikken (alle afstande fra det -. lager til -. fabrikken er kendt). Det er påkrævet at udarbejde den billigste transportplan.
De afgørende variabler i dette tilfælde er - mængden af gods, der transporteres fra det -. lager til -. De opfylder begrænsningerne:
Den objektive funktion har formen: , som skal minimeres.
Der er en størrelsesmatrix . Den første spiller vælger et tal fra 1 til , den anden - fra 1 til . Så tjekker de tallene, og den første spiller får point, og den anden får point ( - nummeret valgt af den første spiller - den anden). Vi skal finde den optimale strategi for den første spiller.
Indtast den optimale strategi, for eksempel den første spiller, nummeret skal vælges med sandsynlighed . Så er den optimale strategi en løsning på følgende lineære programmeringsproblem:
hvor funktionen skal maksimeres . Værdien i den optimale løsning vil være den værst tænkelige forventning om den første spillers udbetaling.
Den mest berømte og udbredte i praksis til at løse det generelle problem med lineær programmering (LP) er simpleksmetoden . På trods af at simplex-metoden er en ret effektiv algoritme, der har vist gode resultater i løsning af anvendte LP-problemer, er det en algoritme med eksponentiel kompleksitet . Årsagen til dette er den kombinatoriske karakter af simplex-metoden, som successivt opregner toppunkterne i polyederen af tilladelige løsninger, mens man søger efter den optimale løsning.
Den første polynomielle algoritme , ellipsoidmetoden , blev foreslået i 1979 af den sovjetiske matematiker L. Khachiyan , og løste dermed et problem, der havde været uløst i lang tid. Ellipsoidmetoden har en helt anden ikke-kombinatorisk karakter end simpleksmetoden. Men i beregningsmæssig henseende viste denne metode sig ikke at være lovende. Ikke desto mindre førte selve den polynomiske kompleksitet af problemerne til skabelsen af en hel klasse af effektive LP-algoritmer - indre punktmetoder , hvoraf den første var N. Karmarkars algoritme foreslået i 1984 . Algoritmer af denne type bruger en kontinuerlig fortolkning af LP-problemet, når der i stedet for at opregne hjørnerne af polytopen af løsninger til LP-problemet, søges langs baner i rummet af variabler af problemet, der ikke passerer gennem knudepunkterne af polytopen. Den indre punktmetode, som i modsætning til simplex-metoden omgår punkter fra det indre af toleranceområdet, bruger ikke-lineær programmering af logaritmiske barrierefunktionsmetoder udviklet i 1960'erne af Fiacco og McCormick.
En anden metode til at løse LP er at bruge Seidel-algoritmen:
Denne metode har asymptotisk kompleksitet .
Hvert lineært programmeringsproblem [6] i formularen
det er muligt på en bestemt måde at sammenligne et andet lineært programmeringsproblem, kaldet dobbelt eller konjugeret, med det originale eller direkte. Forbindelsen mellem de oprindelige og dobbelte problemer ligger hovedsageligt i, at løsningen af det ene af dem kan opnås direkte fra løsningen af det andet. Lad os definere det dobbelte problem med hensyn til det oprindelige lineære programmeringsproblem
Indledende opgave | Dobbelt problem |
---|---|
Hvis vektorerne og er tilladelige løsninger på de primære og dobbelte problemer, så , og lighed opnås, hvis og kun hvis og er optimale løsninger. Hvis den objektive funktion af et af parret af dobbelte problemer ikke er begrænset (ovenfra for det originale, nedefra for det dobbelte), så er området med mulige løsninger på det andet problem tomt.
Hvis vektorerne og er de optimale løsninger af henholdsvis de direkte og dobbelte problemer, så er følgende ligheder sande
Det vil sige, at for optimale løsninger på de primære og dobbelte problemer svarer ikke-spændte (streng ulighed er opfyldt) begrænsninger til nul variabler, og ikke-nul variable (inkluderet i støtteplanen) svarer til stram (ikke-streng ulighed er implementeret som lighed) begrænsninger. Men der kan være nul variabler svarende til stramme begrænsninger.
Disse egenskaber ved dobbeltløsninger kan reducere løsningstiden markant, hvis du skal løse et problem med en række begrænsninger, der er meget større end antallet af variable. Derefter er det muligt, efter at have løst det dobbelte problem, at finde dens støtteplan, hvorefter man i det direkte problem kun har valgt de begrænsninger, der svarer til støtteplanen (alle disse begrænsninger skal spændes), løse det sædvanlige system af lineære ligninger for dem.
Sætning. Det dobbelte af det dobbelte LP-problem er det primære LP-problem.
Bevis: Overvej en direkte LP af formen under betingelsen . Lad os forbinde den dobbelte LP med den og få den under betingelsen . Lad os bringe det til en anden form, tilsvarende i betydning: under betingelsen . Lad os igen sammenligne den dobbelte LP med den og få den under betingelsen . Vi bringer den i en tilsvarende form og får en LP identisk med den originale: under betingelsen .
lp_solve er open source-software (LGPL GNU GNU General Public License for Libraries ) til løsning af lineære ligninger. LpSolve har en IDE , native C API og mange andre API'er til Java, AMPL, MATLAB, Wolfram Mathematica, O-Matrix, Sysquake, Scilab, Octave, FreeMat, Euler, Python, Sage, PHP, R og Microsoft Solver Foundation .
Ordbøger og encyklopædier | ||||
---|---|---|---|---|
|
Optimeringsmetoder _ | |
---|---|
Endimensionel |
|
Nul orden | |
Første ordre | |
anden orden | |
Stokastisk | |
Lineære programmeringsmetoder _ | |
Ikke-lineære programmeringsmetoder |