4. Olinjärt med What sbest! What sbest! har ett flertal olika lösare. Har vi ett linjärt problem känner den igen det och använder sig normalt av simplexmetoden, har vi olinjära problem har den ett flertal metoder som den testar. Ibland kan automatiken dock vara lite förvirrande. Vid olinjära problem är man ofta hänvisad till olika numeriska sökmetoder. De har dock nackdelen att de normalt endast hittar lokala optimum, så om vi har ett problem där vi kan tänka oss att det finns flera lokala optimum får man kolla om det är rätt lösning som hittats. Det finns flera olika typer av beslutsvariabler i What sbest! Adjustable Positivt reelt tal Skapas lättast via snabbknappen (Make Adjustable). (se sidan 20-21) WB! / Help / What sbest! User s Guide / ABC s: Basic Functions / Adjustable.. Free Integer Reelt tal som både kan vara positivt och negativt. WB! / Adjustable / Make Adjustable & Free, OBS man måste namnge områden med Free-variabler (se sidan 22) WB! / Help / What sbest! User s Guide / ABC s: Basic Functions / Free ickenegativt heltal {0, 1, 2, 3..} WB! / Integer (välj General WBINT) OBS man måste namnge områden med Integer-variabler (Se sidan 39-40) WB! / Help / What sbest! User s Guide / Additional Commands / Integer.. Binary heltal, endast {0, 1} WB! / Integer (välj Binary WBBIN) OBS man måste namnge områden med Integer-variabler (se sidan 39-40) WB! / Help / What sbest! User s Guide / Additional Commands / Integer.. What sbest! arbetssätt: 1. Läser av excelfilen 2. Skapar en modell 3. Klassificerar problemet och väljer lösningsmetod 4. Löser problemet 5. Lagrar resultatet i excelfilen (beslutsvariabler) 6. Kontrollerar att excel räknar ut samma värde på målcellen. En konsekvens av detta är att What sbest! måste förstå alla funktioner vi använder. Om What sbest! stöter på en cell som den inte förstår hur den ska beräkna, varnar den och betraktar cellen som ett konstant värde som inte påverkas av beslutsvariablerna. Ofta får man också en varning om att What sbest! och Excel kommer fram till olika värden på målcellen. Ett exempel på en funktion som inte stöds är radians() (konvertering av grader till radianer) Exempel på funktion som stöds, men bör undvikas om möjligt är IF() Se kapitel 5 för tillåtna funktioner, alternativt: WB! / Help / What sbest! User s Guide / Functions / Supported Functions and Operators 25
What sbest! klassificerar ett problem som Linear (lättlösta problem) Quadratic (kräver licens som vi inte har, men Nonlinear kan även lösa dem) Nonlinear (är ofta lite trixiga) Alla tre ovan kan vara med eller utan tillägg för heltal. Heltalsproblem bygger i princip på att man testar alla möjliga kombinationer av heltal, men det görs enligt en metod som åtminstone tillsammans med linjära problem reducerar antalet kombinationer som måste testas avsevärt. Metoden kallas branch-and-bound. Framgången för olinjära problem beror mycket på hur man formulerar problemet. Bra startvärden kan vara avgörande för om What sbest! ska hitta en tillåten lösning och rätt maximum. Vid en del felmeddelanden nollställs alla beslutsvariabler, så ofta får man en betydligt beskedligare modell om man formulerar modellen så att nollställda beslutsvariablerna ger en modell som är matematiskt korrekt. Om bivillkoren dessutom är uppfyllda fungerar det i allmänhet ännu bättre. Om vi tänker oss att vi har ett isolerat rör som ska dimensioneras: r1=rörets innerdiameter r2=rörets ytterdiameter r3=isoleringens ytterdiameter Om man sätter r1, r2 och r3 som adjustable får vi ganska lätt problem om någon diameter är noll, eller om de ligger i fel ordning. Detta kan styras upp med olikheter, men det är betydligt snällare att formulera det liknande: r1=a1+0,001 r2=r1+a2+0,001 r3=r2+a3+0,001 där a1, a2 och a3 är adjustable och 0,001 är ett för problemet relativt litet tal. Rekommenderar att ni läser igenom Guidelines for Modeling with WhatsBest! sidan 196-198. Resten av kapitel 6 är också lärorikt, alternativt: WB! / Help / What sbest! User s Guide / Overview of Mathematical Modeling / Guidelines for Modeling with What sbest! Rekommenderade exempel: (Alternativt: WB! / Help / Sample Models) Flow Network Modelling sid 235-242 Seasonal sales factoring sid 271-275 Blending sid 222-226 26
Låt oss lösa vårt gamla demo-problem från Lagrange, P8.7 Konvektionskoefficienten, h, ges av: h θ 0.27 1.2 = 2 + 0.55 D där D är diametern på en sfärisk reaktor och θ är temperaturskillnaden till omgivningen. Värmeförlusten ges av q = ha T s T ) Den sfäriska reaktorns yta ges av: 2 A = πd Pga hållfasthetskrav har vi villkoret: D θ = 75 ( a Bestäm de D och θ som ger den minsta värmeförlusten. Vi startar excel och skriver in nedanstående: Diameter 1 Theta 1 h= 2,55 A= 3,141593 Krav 1 75 q= 8,011061 Cellerna till höger om Diameter och Theta sätter vi till ett godtyckligt numeriskt värde 1 Cellerna till höger om h=, A=, Krav och q= beräknas enligt de samband vi har. Cellen till vänster om 75 markeras och vi trycker sedan på villkorsknappen =. Sedan markerar vi de två godtyckliga cellerna och trycker på knappen Make adjustable Vi markerar cellen till höger om q= och trycker sedan på knappen Minimize Excelarket visar då följande: Diameter 1 Theta 1 h= 2,55 A= 3,141593 Krav 1 Not = 75 q= 8,011061 Nu är det dags att lösa problemet, vi trycker på knappen Solve What sbest! skapar nu ett nytt kalkylblad, WB! Status, där den lägger en del information om lösningen: 27
MODEL INFORMATION: CLASSIFICATION DATA Current Capacity Limits -------------------------------------------------------- Total Cells 8 Numerics 7 Adjustables 2 8000 Continuous 2 Free 0 Integers/Binaries 0/0 800 Constants 1 Formulas 4 Strings 0 Constraints 1 4000 Nonlinears 4 800 Coefficients 14 Minimum coefficient value: 1 on Blad1!C4 Minimum coefficient in formula: Blad1!C4 Maximum coefficient value: 75 on <RHS> Maximum coefficient in formula: Blad1!D6 MODEL TYPE: SOLUTION STATUS: Nonlinear (Nonlinear Program) LOCALLY OPTIMAL OPTIMALITY CONDITION: SATISFIED OBJECTIVE VALUE: 809.82392600167 DIRECTION: SOLVER TYPE: TRIES: 252 INFEASIBILITY: 0 Minimize BEST OBJECTIVE BOUND:... STEPS:... ACTIVE:... SOLUTION TIME: ERROR / WARNING MESSAGES: Multistart 0 Hours 0 Minutes 0 Seconds Nonlinearities Present (Help Reference: NLINCELL): The cells below contain nonlinear expressions. If these cells are used only for reporting, then, for efficiency, they should be included in a WBOMIT range (refer to documentation). In some cases, nonlinear cells may be linearized automatically by the Linearization option that is set in the General Options dialog box. This warning can be turned off with the Nonlinearity Present checkbox in the General Options dialog box (cell addresses listed at bottom of tab). LISTING: List of nonlinear expressions: Blad1!C8 Blad1!C4 Blad1!C5 Blad1!C6 List of contributors to nonlinear cells: Blad1!C2 Blad1!C3 Blad1!C4 Blad1!C5 End of Report Den viktigaste informationen är Solution status: Locally Optimal Växlar vi över till kalkylbladet där vi matade in nyss, ser vi: Diameter 0,549452 Theta 136,4996 h= 6,255319 A= 0,94844 Krav 75 = 75 q= 809,8239 28
Nu kan vi gå in i menyn Add-Ins / WB! / Options / Global solver och sätta en bock framför Global Solver, OK. Ett nytt tryck på Solve-knappen MODEL INFORMATION: CLASSIFICATION DATA Current Capacity Limits -------------------------------------------------------- Total Cells 8 Numerics 7 Adjustables 2 8000 Continuous 2 Free 0 Integers/Binaries 0/0 800 Constants 1 Formulas 4 Strings 0 Constraints 1 4000 Globals 4 20 Coefficients 14 Minimum coefficient value: 1 on Blad1!C4 Minimum coefficient in formula: Blad1!C4 Maximum coefficient value: 75 on <RHS> Maximum coefficient in formula: Blad1!D6 MODEL TYPE: SOLUTION STATUS: Nonlinear (Nonlinear Program) GLOBALLY OPTIMAL OPTIMALITY CONDITION: SATISFIED OBJECTIVE VALUE: 809.82392600167 DIRECTION: SOLVER TYPE: Minimize Global TRIES: 11284 INFEASIBILITY: 0 BEST OBJECTIVE BOUND: 809.82367631259 STEPS: 72 ACTIVE: 0 SOLUTION TIME: NON-DEFAULT SETTINGS: 0 Hours 0 Minutes 0 Seconds Global Solver Options / Strategy / Global Solver: On ERROR / WARNING MESSAGES: ger efter några sekunder följande rapport: Nonlinearities Present (Help Reference: NLINCELL): The cells below contain nonlinear expressions. If these cells are used only for reporting, then, for efficiency, they should be included in a WBOMIT range (refer to documentation). In some cases, nonlinear cells may be linearized automatically by the Linearization option that is set in the General Options dialog box. This warning can be turned off with the Nonlinearity Present checkbox in the General Options dialog box (cell addresses listed at bottom of tab). LISTING: List of nonlinear expressions: Blad1!C8 Blad1!C4 Blad1!C5 Blad1!C6 List of contributors to nonlinear cells: Blad1!C2 Blad1!C3 Blad1!C4 Blad1!C5 End of Report Nu anser What sbest! att den hittat ett globalt minimum! 29
Binära beslutsvariabler När man har flera alternativ så är binära beslutsvariabler användbara. Några exempel där binära beslutsvariabler b, heltal n och vanliga x: Tilläggsisolering av vinden, kostnad, minskar energibehovet med ett visst antal MWh/år. I = b kostnad Q = Q b Q innan min skning min U = 6 % I + 1, 10 Q Om val mellan flera tjocklekar I b Q = b1 kostnad1 + b2 kostnad 2 1 + b2 1 = Q innan b Q min U = 6 % I + 1, 10 Q b Q 1 reduktion,1 2 reduktion,2 Solfångare startkostnad för tank, sedan tillkommer per kvadratmeter solfångare. I = b startkostnad + x x yta yta ytkostnad b 1000 ingen startkostnad behövd om ingen solfångaryta x Q solinstrå ln ing normalt en sådan per dag (eller liknande) användbart x yta = Q innan x användbart min U = 6 % I + 1, 10 Q Inköp av vindkraftandelar 6000 kr / årsmwh därefter 30 öre/kwh inklusive nätavgift. (heltal andelar minst 5 andelar, högst användningen (dvs 0 andelar Ok, men inte 1-4)) Medlemsavgift 250 kr/år b 5 n minst 5 andelar, inga andelar också OK om b=0 b 1000 n b=1 krävs om n>0 n elanvändning / 1000kWh I = 6000 n investeringskostnaden min U = 6 % I + 1,10 ( elanvändning n 1000) + 300 n + 250 b Lämpliga övningsuppgifter: Övningsuppgifterna P1 och P3 från Lagrange. Exempel ackumulatortank med påbyggnad av start/stopp 30