Optimeringslära för T (SF1861)



Relevanta dokument
Föreläsning 2: Simplexmetoden. 1. Repetition av geometriska simplexmetoden. 2. Linjärprogrammeringsproblem på standardform.

Föreläsning 7: Kvadratisk optimering. 4. Kvadratisk optimering under linjära bivillkor

1 Duala problem vid linjär optimering

Linjärprogramming. EG2205 Föreläsning 7, vårterminen 2015 Mikael Amelin

Lösningar till 5B1762 Optimeringslära för T, 24/5-07

Tentamensinstruktioner

MIO310 OPTIMERING OCH SIMULERING, 4 p

Föreläsning 6: Nätverksoptimering

Lösningsförslag till tentamen i SF1861 Optimeringslära för T. Onsdag 25 augusti 2010 kl

Lösningsförslag till tentamen i SF1861 Optimeringslära för T. Torsdag 28 maj 2010 kl

TAOP07/TEN1 OPTIMERINGSLÄRA GRUNDKURS för Y. Antal uppgifter: 7 Uppgifterna är inte ordnade efter svårighetsgrad.

Hemuppgift 1, SF1861 Optimeringslära för T

Tentamensinstruktioner. När Du löser uppgifterna

Hemuppgift 2, SF1861 Optimeringslära för T, VT-10

Lösningar till SF1861 Optimeringslära, 28 maj 2012

De optimeringsproblem som kommer att behandlas i denna kurs kan alla (i princip) skrivas. 1 2 xt Hx + c T x. minimera

1(8) x ijt = antal mobiltelefoner av typ i=1,,m, Som produceras på produktionslina 1,, n, Under vecka t=1,,t.

Linjärprogrammering (Kap 3,4 och 5)

TNSL05, Optimering, Modellering och Planering 6 hp, HT2-2011

Optimalitetsvillkor. Optimum? Matematisk notation. Optimum? Definition. Definition

1 LP-problem på standardform och Simplexmetoden

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C

Tentamensinstruktioner. När Du löser uppgifterna

Tentamensinstruktioner. När Du löser uppgifterna

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Lösningar till tentan i SF1861 Optimeringslära, 1 juni 2017

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Tentamensinstruktioner. När Du löser uppgifterna

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Tentamensinstruktioner. När Du löser uppgifterna

Tentamensinstruktioner

Tentamensinstruktioner. Vid skrivningens slut

Hemuppgift 1, SF1861 Optimeringslära, VT 2017

Tentamensinstruktioner

TENTAMEN. Tentamensinstruktioner. Datum: 30 augusti 2018 Tid: 8-12

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

MIO310 OPTIMERING OCH SIMULERING, 4 p

TNK049 Optimeringslära

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Tentamensinstruktioner. När Du löser uppgifterna

Optimeringslära Kaj Holmberg

TNSL05 Optimering, Modellering och Planering. Föreläsning 6

TNK049 Optimeringslära

Tentamensinstruktioner

Tentamensinstruktioner

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Olinjär optimering med bivillkor: KKT min f (x) då g i (x) 0 för alla i

5B1817 Tillämpad ickelinjär optimering. Kvadratisk programmering med olikhetsbivillkor Active-set metoder

Lösningar till SF1861/SF1851 Optimeringslära, 24/5 2013

1 Kvadratisk optimering under linjära likhetsbivillkor

MIO310 OPTIMERING OCH SIMULERING, 4 p

1 Konvexa optimeringsproblem grundläggande egenskaper

Tentamensinstruktioner. När Du löser uppgifterna

Optimeringslära Kaj Holmberg

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C. Tentamensinstruktioner. När Du löser uppgifterna

Optimeringslära Kaj Holmberg

Linjär algebra F1 Ekvationssystem och matriser

Tentamensinstruktioner. När Du löser uppgifterna

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

Lösningar till SF1852 Optimeringslära för E, 16/1 08

LP-problem. Vårt första exempel. Baslösningar representerar extrempunkter. Baslösningar representerar extrempunkter

Lösningar till tentan i SF1861 Optimeringslära, 3 Juni, 2016

TNSL05, Optimering, Modellering och Planering 6 hp, HT2-2010

LP-dualitet: Exempel. Vårt första exempel. LP-dualitet: Relationer. LP-dualitet: Generellt

Vårt första exempel. LP-dualitet: Exempel. LP-dualitet: Generellt. LP-dualitet: Relationer

Vinsten (exklusive kostnaden för inköp av kemikalier) vid försäljning av 1 liter fönsterputs är 2 kr för F1 och 3 kr för F3.

1 Ickelinjär optimering under bivillkor

MIO310 OPTIMERING OCH SIMULERING, 4 p

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM. Tentamensinstruktioner. När Du löser uppgifterna

Vinsten (exklusive kostnaden för inköp av kemikalier) vid försäljning av 1 liter fönsterputs är 2 kr för F1 och 3 kr för F3.

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

Hemuppgift 1, SF1861 Optimeringslära, VT 2016

Optimeringslära Kaj Holmberg

BML131, Matematik I för tekniskt/naturvetenskapligt basår

Optimeringslära Kaj Holmberg

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TNSL05 Optimering, Modellering och Planering. Föreläsning 2: Forts. introduktion till matematisk modellering

TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1/TM1, TMA

SF1646, Analys i era variabler, 6 hp, för I1, läsåret

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TNSL05 Optimering, Modellering och Planering. Föreläsning 4

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Laborationsuppgift 1 Tillämpad optimeringslära för MMT (5B1722)

Hållfasthetslära Z2, MME175 lp 3, 2005

Optimeringslara = matematik som syftar till att analysera och. Optimeringslara ar en gren av den tillampade matematiken.

Föreläsning 6: Transportproblem (TP)

TNK047 [TEN1] OPTIMERING OCH SYSTEMANALYS

Optimering. Optimering av transportproblem. Linköpings universitet SL. Campusveckan VT2013

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Optimeringslära Kaj Holmberg

Tentamensinstruktioner

SF1513 (tidigare DN1212) Numeriska metoder och grundläggande programmering. för Bio3, 9 hp (högskolepoäng)

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C. Tentamensinstruktioner. När Du löser uppgifterna

TNK049 Optimeringslära

Transkript:

Optimeringslära för T (SF1861) 1. Kursinformation 2. Exempel på optimeringsproblem 3. Introduktion till linjärprogrammering Introduktion - Ulf Jönsson & Per Enqvist 1 Linjärprogrammering

Kursinformation Kurs i grundläggande optimeringslära samt linjär algebra. Ämnet tillämpas inom till exempel Telekommunikation, t.ex. basstationsplacering Signalbehandling, t.ex. taligenkänning Reglerteknik, t.ex. banplanering Ekonomi, t.ex. portföljplanering Logistik, t.ex. product chain management Medicin, t.ex. strålningsterapiplanering Introduktion - Ulf Jönsson & Per Enqvist 2 Linjärprogrammering

Lärare Per Enqvist (Email: penqvist@math.kth.se) Johan Markdahl (Email: markdahl@math.kth.se) Johan Thunberg (Email: jthu02@kth.se) Introduktion - Ulf Jönsson & Per Enqvist 3 Linjärprogrammering

Kursmaterial Följande material säljs på Matematiks studentexpedition, Lindstedtsv 25. Optimization, av Amol Sasane och Krister Svanberg. Exempelsamling i Optimeringslära för T. Introduktion - Ulf Jönsson & Per Enqvist 4 Linjärprogrammering

Kommentar till OH bilderna Till de flesta föreläsningarna kommer det att finnas OH-bilder (tillgängliga efter föreläsningen på hemsidan). Dessa sammanfattar föreläsningen samt ger vissa komplement till kurslitteraturen. Det finns också läsanvisningar längst bak i OH-häftet. OH-bilderna är inte ekvivalenta med föreläsningarna. Jag passar på att tacka Ulf Jönsson för arbetet han lagt ner på OH-bilderna. Introduktion - Ulf Jönsson & Per Enqvist 5 Linjärprogrammering

Kursens hemsida På kursens hemsida http://www.math.kth.se/optsyst/grundutbildning/kurser/sf1861/ finns 1. preliminärt schema 2. läsanvisningar 3. hemtalen och information om inlämningsdatum kommer att anslås på kursens hemsida. Introduktion - Ulf Jönsson & Per Enqvist 6 Linjärprogrammering

Hemuppgifter (HEM1 1.5 hp) Tre frivilliga hemuppgifter i Matlab delas ut under kursens gång. Hemtal 1: Linjär algebra. Hemtal 2: Strukturoptimering. Hemtal 3: Ljuddämparoptimering - i samarbete med Ljud och Vibrationer. Introduktion - Ulf Jönsson & Per Enqvist 7 Linjärprogrammering

Regler för hemtalspoäng Belöning för 0 X 12 hemtalspoäng X < 5 ger ingen belöning. 5 X 8 medför att deluppgift 1.(a) ej behöver lösas på tentamen. De 5 tentamenspoängen för 1.(a) erhålls ändå. Denna bonus gäller under ett år. X 9 medför att uppgift 1 ej behöver lösas på tentamen. De 5 + 4 = 9 tentamenspoängen för uppgift 1 erhålls ändå. Denna bonus gäller för all framtid. Den student som erhåller minst 9 hemtalspoäng blir inrapporterad godkänd på momentet HEM1. Den student som INTE erhåller minst 9 hemtalspoäng blir ändå inrapporterad godkänd på momentet HEM1 den dag han/hon blir godkänd på tentamen och får momentet TEN1 inrapporterat. Introduktion - Ulf Jönsson & Per Enqvist 8 Linjärprogrammering

Tentamen Maximalt resultat på tentamen är 50 poäng. Preliminära betygsgränser: Betyg A B C D E FX Poäng 43-50 38-42 33-37 28-32 25-27 23-24 Vid tentamen delas en kortfattad formelsamling ut. Inga andra hjälpmedel är tillåtna. Ingen räknare på tentan! Ordinarie tentamen är Tisdagen den 24:e maj. Anmälan till tentamen är obligatorisk och kan göras via Mina Sidor mellan den 18:e april och 8:e maj. Introduktion - Ulf Jönsson & Per Enqvist 9 Linjärprogrammering

Kursmoment 1. Linjär optimering 2. Linjär algebra 3. Kvadratisk optimering 4. Olinjär optimering utan bivillkor 5. Olinjär optimering med bivillkor Introduktion - Ulf Jönsson & Per Enqvist 10 Linjärprogrammering

Tre exempel på optimeringsproblem 1. Nätverksoptimering Linjärprogrammeringsproblem 2. Linjär regression (modellanpassing) Kvadratiskt optimeringsproblem 3. Trafikreglering i kommunikationssystem Olinjärt optimeringsproblem med bivillkor Introduktion - Ulf Jönsson & Per Enqvist 11 Linjärprogrammering

Nätverksoptimering 40 1 x 13 /c 13 3 30 x 35 /c 35 x 12 /c 12 x 23 /c 23 x 34 /c 34 5 20 35 2 x 24 /c 24 4 25 x 45 /c 45 Data skall skickas från datorer i nod 1 och 2 till datorer i nod 3, 4, och 5. Kostnaden för trafik i länken mellan nod i och j är c ij Kr/Kbyte. Datatrafiken från nod i till nod j betecknas x ij och mäts i Kbyte. Vi vill minimera kostnaden för datatrafiken. Introduktion - Ulf Jönsson & Per Enqvist 12 Linjärprogrammering

Nätverksoptimering Resulterande optimeringsproblem minimera c ij x ij alla bågar då x 12 + x 13 = 40 x 12 + x 23 + x 24 = 35 x 13 x 23 + x 34 + x 35 = 30 x 24 x 34 + x 45 = 25 x 35 x 45 = 20 x ij 0, alla bågflöde Introduktion - Ulf Jönsson & Per Enqvist 13 Linjärprogrammering

Linjär regression (modellanpassing) e(t) s(t) y(t) System Problem: Anpassa en linjär regressionsmodell till mätdata. Regressionsmodellen : y(t) = n j=1 α j ψ j (t) ψ j (t), j = 1,...,n är regressorerna (kända funktioner) α j = j = 1,...,n är modellparametrarna (skall bestämmas) e(t) mätbrus (ej känd) s(t) observationer - uppmätta data. Introduktion - Ulf Jönsson & Per Enqvist 14 Linjärprogrammering

Idé för modellanpassning: Minimera kvadratsumman av prediktionsfelen minimera 1 2 m n ( i=1 j=1 α j ψ j (t) s(t i )) 2 Detta är ett minsta kvadratproblem. Speciell typ av kvadratiskt optimeringsproblem. Introduktion - Ulf Jönsson & Per Enqvist 15 Linjärprogrammering

Trafikreglering i kommunikationssystem Vi betraktar ett kommunikationsnätverk bestående av två länkar. Tre källor skickar data över nätverket till tre olika destinationer. Källa 1 Destination 1 Länk 1 Länk 2 Källa 2 Destination2 Källa 3 Destination 3 Källa 1 använder båda länkarna. Källa 2 använder länk 1. Källa 3 använder länk 2. Introduktion - Ulf Jönsson & Per Enqvist 16 Linjärprogrammering

Länk 1 har kapaciteten 2 (normaliserad storhet [datamängd/sek]) Länk 2 har kapaciteten 1 De tre källorna sänder med datahastigheterna x r, r = 1, 2, 3. De tre källorna har varsin nyttofunktion U r (x), r = 1, 2, 3. Ett vanligt val av nyttofunktion är U r (x r ) = w r log(x r ). För effektivt och rättvist uttnyttjande den tillgängliga kapaciteten väljer man datahastigheterna enligt följande optimeringskriterium maximera U 1 (x 1 ) + U 2 (x 2 ) + U 3 (x 3 ) då x 1 + x 2 2 x 1 + x 3 1 x 1 0, x 2 0, x 3 0 Introduktion - Ulf Jönsson & Per Enqvist 17 Linjärprogrammering

Introduktion till linjärprogrammering (LP) 1. Formulering av exempelproblem 2. Tillåten lösning och optimalitet 3. Grafisk illustration av tillåtenhet och optimalitet 4. Introduktion av simplexmetoden 5. Några höjdpunkter inom LP teorin Introduktion - Ulf Jönsson & Per Enqvist 18 Linjärprogrammering

Formulering av exempelproblem Ett företag producerar två produkter P 1 och P 2 Maskinerna M 1 och M 2 används vid produktion av såväl P 1 som P 2 Produktionskapaciteten för maskinerna [dygn/enhet]: M 1 a 11 = 1 40 a 12 = 1 60 M 2 P1 P2 a 21 = 1 50 a 22 = 1 50 Priset för produkterna [KKr/enhet]: produkt pris P 1 c 1 = 200 P 2 c 2 = 400 Mål: Bestäm produktionsvolymen så att företagets profit maximeras. Introduktion - Ulf Jönsson & Per Enqvist 19 Linjärprogrammering

Låt x k antal enheter av produkt P k som produceras per dygn, k = 1, 2. Den maximala profiten erhålls som lösningen till följande optimeringsproblem: maximera 200x 1 + 400x 2 då 1 40 x 1 + 1 60 x 2 1 1 x 50 1 + 1 x 50 2 1 x k 0, k = 1, 2 Introduktion - Ulf Jönsson & Per Enqvist 20 Linjärprogrammering

Kompakt formulering: max c T x då Ax b, x 0 (1) där A = 1 40 1 50 1 60 1 50, b = 1, c = 1 200 400 Optimeringsproblemet (1) är ett linjärprogrammeringsproblem: Linjär kostnadsfunktion c T x Linjära bivillkor Ax b och x 0 (komponentvisa olikheter) Introduktion - Ulf Jönsson & Per Enqvist 21 Linjärprogrammering

Tillåten lösning och optimalitet Det tillåtna området till (1) ges av F = {x : Ax b; x 0} Varje punkt x F kallas tillåten Punkten ˆx F kallas optimal om c T ˆx c T x, för alla x F. Introduktion - Ulf Jönsson & Per Enqvist 22 Linjärprogrammering

Grafisk illustration av tillåtenhet och optimalitet En olikhet av typen a T k x b k, k = 1, 2 svarar mot ett halvplan 60 50 40 a 1 30 20 10 a T 1 x b 1 10 20 30 40 50 x 2 = 3 2 x 1 + 60 Här är a T 1 = [ 1 40 ] 1, b 60 1 = 1 Introduktion - Ulf Jönsson & Per Enqvist 23 Linjärprogrammering

Tillåtna området till vårt exempelproblem blir en polyheder med fyra hörn 60 x 2 50 40 30 20 10 10 20 30 40 50 x 1 Introduktion - Ulf Jönsson & Per Enqvist 24 Linjärprogrammering

Målfunktionen illustreras bäst med isokostlinjer c T x = z. I vårt exempel svarar detta mot linjen x 2 = c 1 c 2 x 1 + z c 2 = 0.5x 1 + z 400 60 x 2 50 40 c 30 20 10 x 2 = 0.5x 1 + 25 10 20 30 40 50 x 1 Introduktion - Ulf Jönsson & Per Enqvist 25 Linjärprogrammering

x 2 c 60 50 ˆx 40 30 x 2 = 0.5x 1 + 50 20 10 10 20 30 40 50 x 1 Vi ser att optimum antages i hörnet ˆx = (0, 50) Optimalvärdet blir ẑ = c T ˆx = 20 000. Introduktion - Ulf Jönsson & Per Enqvist 26 Linjärprogrammering

Man kan visa följande sats Sats 1. Om det finns en optimal lösning till maximera c T x då Ax b, x 0 så finns det en optimal hörnlösning. Satsen visar att det räcker att leta bland hörnpunkterna när man löser optimeringsproblemet. Vi kommer senare att ge en precis algebraisk mening åt begreppet hörnpunkt. Introduktion - Ulf Jönsson & Per Enqvist 27 Linjärprogrammering

Introduktion till simplexmetoden Bestäm initial hörnpunkt Är hörnpunkten optimal? Ja KLART Nej Finn bättre intilliggande hörnpunkt I algoritmen söker man alltid utefter en kant som utgår från det hörn som man befinner sig i. Introduktion - Ulf Jönsson & Per Enqvist 28 Linjärprogrammering

60 x 2 60 x 2 50 50 40 40 30 30 20 20 10 10 10 20 30 40 50 x 1 10 20 30 40 50 x 1 Alternativ 1 Alternativ 2 Hur väljer man kortaste vägen? Introduktion - Ulf Jönsson & Per Enqvist 29 Linjärprogrammering

Det finns ingen effektiv algoritm som garanterat hittar kortaste vägen till optimum. Simplexalgoritmen finner i allmänhet en kort väg till optimum. Väljer vad som (lokalt) verkar vara bästa vägen. Hur vet man att man hittat optimum? Introduktion - Ulf Jönsson & Per Enqvist 30 Linjärprogrammering

Simplexalgoritmens val av riktning 60 x 2 50 40 30 20 10 d 1 θ 2 c θ 1 d 2 x 1 10 20 30 40 50 Det är lokalt bättre att gå längs kanten med enhetsrikting d 1 än att gå längs kanten med enhetsrikting d 2. Detta följer eftersom c T d 1 = c d 1 }{{} =1 cos(θ 1 ) > c d 2 cos(θ }{{} 2 ) = c T d 2 =1 Introduktion - Ulf Jönsson & Per Enqvist 31 Linjärprogrammering

x 2 60 50 Stoppkriterium c 40 30 d 1 d 2 20 10 10 20 30 40 50 x 1 Vi har nått optimala hörnpunkten då c T d 1 0 c T d 2 0 Introduktion - Ulf Jönsson & Per Enqvist 32 Linjärprogrammering

Simplexalgoritmen: Höjdpunkter de kommande veckorna Vårt geometriska resonemang ger intuition men måste ersättas med linjär algebra för numerisk implementation. Hörnpunkter och kantriktingar erhålls som lösningar till linjära ekvationssystem. Dualitet: Till varje linjärt optimeringsproblem finns ett dualt linjärt optimeringsproblem. Dualen ger ny insikt och används för att härleda optimalitetsvillkor. Tillämpningar: Diet problem, transportproblem, lagerstyrning, nätverksoptimering. Introduktion - Ulf Jönsson & Per Enqvist 33 Linjärprogrammering

Kommentar Exemplet är taget från An Introduction to Linear Programming and the Simplex Algorithm En www kurs som finns på adressen www.isye.gatech.edu/ spyros/lp/lp.html Introduktion - Ulf Jönsson & Per Enqvist 34 Linjärprogrammering

LP-problem på standardform minimera då n c j x j j=1 n a ij x j = b i, i = 1,...,m j=1 x j 0, j = 1,...,n = minimera c T x då Ax = b x 0 där A = a 11.... a 1n., b = b 1., c = c 1., x = x 1. a m1... a mn b m c n x n Introduktion - Ulf Jönsson & Per Enqvist 35 Linjärprogrammering

Det antages att A har linjärt oberoende rader. Annars kan man reducera problemet genom att ta bort rader. Vi antar att n > m, vilket betyder att linjära bivillkoret är underbestämt. Om n m finns i allmänhet antingen en unik lösning ingen lösning varvid optimeringsproblemet är ointressant Alla linjära optimeringsproblem kan överföras till standardformen. Vi kommer härleda en simplexalgoritm för LP på standardform. Introduktion - Ulf Jönsson & Per Enqvist 36 Linjärprogrammering

Knep för att transformera godtyckligt LP-problem till standardformen maxc T x = min( c) T x Inför slack- respektive surplusvariabler vid olikhetsbivillkor n n a ij x j b i ersätts av a ij x j + x n+1 = b i, j=1 j=1 där x n+1 0 är så kallade slack-variabler. n n a ij x j b i ersätts av a ij x j x n+1 = b i, j=1 j=1 där x n+1 0 är så kallade surplus-variabler. En variablel x k som inte är teckenbegränsad kan ersättas med differensen x k = x k x k, där x k,x k 0. Introduktion - Ulf Jönsson & Per Enqvist 37 Linjärprogrammering

Några vanliga former på LP-problem Form Primal Dual Standardformen minimera c T x då Ax = b maximera b T y då A T y c x 0 Kanoniska formen minimera c T x då Ax b x 0 maximera b T y då A T y c y 0 Pedagogiska formen minimera c T x då Ax b maximera b T y då A T y = c y 0 Introduktion - Ulf Jönsson & Per Enqvist 38 Linjärprogrammering

Läsanvisningar Kapitel 1 (1.4 kursivt) Kapitel 2 Kapitel 3 Introduktion - Ulf Jönsson & Per Enqvist 39 Linjärprogrammering

60 x2 50 40 30 20 10 10 20 30 40 50 x1 Starting point Givet startpunkten, om x 2 maximeras, var är då det globala optimat och vilken väg skulle Simplex Algoritmen välja? Introduktion - Ulf Jönsson & Per Enqvist 40 Linjärprogrammering

Standard form Givet optimeringsproblemet maximize x 1 s.t. x 1 x 2, x 2 + 3x 3 = 2, x 1 0,x 3 0. Skriv det på standardform, min c T x, sådant att Ax = b och x 0. Introduktion - Ulf Jönsson & Per Enqvist 41 Linjärprogrammering