Difference between revisions of "PlanWise Tutorial"

From Heureka Wiki
Jump to navigation Jump to search
Line 283: Line 283:
 
Nu blev det kanske inte lika lätt att se vad som beräknas..? Så här kanske man kan tänka; restriktionen - att detta villkor alltid uppfylls (här i alla perioder utom i den första - period 0) är endast fallet om ''_harvDiffMax'' är det största värdet av alla förekommande värden på ''_harvDiff''. Och restriktioner må ju uppfyllas om optimeringsproblemet ska erhålla en lösning. Kolla i ovanstående delar om du glömt vad ''_harvDiff'' var för något (och vad som avses med "störst" i sammanhanget).
 
Nu blev det kanske inte lika lätt att se vad som beräknas..? Så här kanske man kan tänka; restriktionen - att detta villkor alltid uppfylls (här i alla perioder utom i den första - period 0) är endast fallet om ''_harvDiffMax'' är det största värdet av alla förekommande värden på ''_harvDiff''. Och restriktioner må ju uppfyllas om optimeringsproblemet ska erhålla en lösning. Kolla i ovanstående delar om du glömt vad ''_harvDiff'' var för något (och vad som avses med "störst" i sammanhanget).
  
Sen på tur står tillskapandet av två variabler, ''Z<sub>1</sub>'' respektive ''Z<sub>2</sub>'', som ska ingå i en målfunktion med två, sinsemellan viktade mål enligt modellen: 0.x * ''Z<sub>1</sub>'' - (1 - 0.x) * ''Z<sub>2</sub>'' (som ska maximeras eller minimeras? och varför är det ett minustecken mellan de två delmålen? borde de inte adderas?). De två målen är här lämpligen "maximerat nuvärde" respektive "jämnhet". Innan du tjoffar in dem i en och samma målfunktion må de relativiseras (endast kunna erhålla värden mellan 0 och 1) och samtidigt göras enhetslösa (de ska ju inte spela någon roll om de mäts i SEK respektive m<sup>3</sup>sk eller nånting annat) enligt modellen: ''Z<sub>1</sub>'' = relNPV = (''_totNPV'' - NPV<sub>min</sub>) / (NPV<sub>max</sub> - NPV<sub>min</sub>). När du sedan ska definiera ''Z<sub>2</sub>'' gör du på motsvarande sätt och är särdeles observant på + och -.
+
Sen på tur står tillskapandet av två variabler, ''Z<sub>1</sub>'' respektive ''Z<sub>2</sub>'', som ska ingå i en målfunktion med två, sinsemellan viktade mål enligt modellen: 0.x * ''Z<sub>1</sub>'' - (1 - 0.x) * ''Z<sub>2</sub>'' (som ska maximeras eller minimeras? och varför är det ett minustecken mellan de två delmålen? borde de inte adderas?). De två målen är här lämpligen "maximerat nuvärde" respektive "jämnhet". Innan de två variablerna tillämpas i en och samma målfunktion må de relativiseras (endast kunna erhålla värden mellan 0 och 1) och samtidigt göras enhetslösa (de ska ju inte spela någon roll om de mäts i EURO, SEK, m<sup>3</sup>sk eller nånting annat) enligt modellen: ''Z<sub>1</sub>'' = relNPV = (''_totNPV'' - NPV<sub>min</sub>) / (NPV<sub>max</sub> - NPV<sub>min</sub>). När du sedan ska definiera ''Z<sub>2</sub>'' gör du på motsvarande sätt och är särdeles observant på + och -.
  
 
Ovanstående finns implementerat i [ftp://salix.slu.se/download/heureka/optimization/Model9d.hops Model9d.hops], redo att laddas ner från ftp-servern och laddas upp i PlanVis. Sen är det rekommendabelt att du fortsätter använda din egen modell (den modifierade Model9c) för att lösa ditt optimeringsproblem, men med möjlighet att jämföra (och ev. kopiera) definitioner och formuleringar som finns i 9d. Namngivningen av variabler och restriktioner skiljer sig säkert mycket åt, kanske även definitioner och beräkningssätt. Som en kommentar till ovanstående frågor tittar vi lite närmre på målfunktionen ''_objFunc:''
 
Ovanstående finns implementerat i [ftp://salix.slu.se/download/heureka/optimization/Model9d.hops Model9d.hops], redo att laddas ner från ftp-servern och laddas upp i PlanVis. Sen är det rekommendabelt att du fortsätter använda din egen modell (den modifierade Model9c) för att lösa ditt optimeringsproblem, men med möjlighet att jämföra (och ev. kopiera) definitioner och formuleringar som finns i 9d. Namngivningen av variabler och restriktioner skiljer sig säkert mycket åt, kanske även definitioner och beräkningssätt. Som en kommentar till ovanstående frågor tittar vi lite närmre på målfunktionen ''_objFunc:''

Revision as of 12:57, 4 May 2009