heltall lineær programmering er vitenskapen om å modellere et problem som enten minimerer eller maksimerer en lineær målfunksjon , under et sett av begrensninger uttrykt som lineære ulikheter . Når løses fullstendig , garanterer løsningen på heltallet lineære program den optimale løsning på problemet . Men kompleksiteten i problemet skalaer eksponentielt med problemet størrelse. Derfor kan det ta lang tid å komme frem til den endelige løsningen . Alternativt , kan problemet løses delvis og forskjellige heuristikken kan bli undersøkt for å oppnå en sub-optimal løsning på en kortere tid. Du trenger
Lineær programmering Solver
datamaskin med tilstrekkelig minne og prosessorkraft
Vis flere instruksjoner
formulering og løsning av lineære programmer
en
Bestem om problemet er en " maksimering " problem eller en " minimering " problem. En maksimering problem prøver å finne en løsning slik der målfunksjonen er maksimert . En minimalisering problem forsøker å finne en løsning hvor objektfunksjonen blir minimert. For eksempel , er problemet med å finne den korteste bane mellom to punkter en minimalisering problem . På den annen side , er problemet å pakke de maksimale antall forskjellige størrelser steiner i et flaske en maksimering problem .
2
Bestem de variablene som er nødvendige for formuleringen. Velge riktig sett av variabler er nødvendig for å minske kompleksiteten i problemet, og tilsvarende frem til den løsningen raskere. Vanligvis er hver enhet hvis verdien påvirker den endelige løsningen en variabel .
3
Model målfunksjonen . Målfunksjonen er modellert som en sum av produkter av variabler og deres innvirkning på den endelige løsningen . For eksempel , hvis problemet er å minimere avstanden mellom to noder i en graf , vil hver forbindelse mellom to noder være en variabel som tar en verdi på 0 eller 1 , og dens bidrag til den objektive funksjonen vil være avstanden mellom nodene . I dette tilfelle kan variabelen kalt " X ( i, j ) ", hvor "i" og " j" er hvilke som helst to noder i grafen , og at avstanden mellom de to noder kan være " V ( i, j ) . " X ( i, j ) blir 1 dersom forbindelsen er en del av den endelige bane mellom to noder . Derfor vil målfunksjonen være å minimere summering av V (i, j ) * X (i, j ) , hvor summering er over alle tilkoblinger.
4
Sett opp begrensninger. Begrensningene skal fange alle restriksjoner pålagt av problemet . For den korteste veien eksempel er det følgende begrensninger : en
X (i, j ) kan enten være 0 eller 1. . Derfor bør X ( i, j ) er større enn eller lik 0, og X ( i, j ) bør være mindre enn eller lik en .
P Hvis forbindelsen X ( i, j ) er valgt, nøyaktig én forbindelse fra node " j" til en annen node annet enn "i" bør velges . Så bør X ( i, j ) er større enn eller lik med summen av alle variabler av typen X ( j , k) , hvor "K" er ikke lik "I ".
En forbindelse fra utgangsmaterialet node bli valgt. Derfor bør summen av x (n , k) være 1, hvor " n" er start node . Likeledes bør summen av X ( k , m) være 1, der "m" er siste node.
5
Model problemet i enten Mathematical Programming System ( MPS ) format , eller Linear programmering ( LP ) format .
6
Enten kjøpe en kommersiell Solver som Fico eller CLPEX , eller laste ned en gratis Solver som GLPK . Legg merke til de frie løsere er mye tregere enn de kommersielle løsere og kan ikke være egnet for å løse store problemer .
7 p Hvis det løser ikke konvergerer til den endelige løsning i rimelig tid , kan du prøve heuristikk . En heuristisk kan være å fjerne heltall begrensninger på variablene , og omtrentlige variablene til nærmeste heltall for å få en sub -optimal løsning .