Modelltypen som hanteras är LP-problem (linjär programmering) med eller utan heltalsvillkor (MIP eller MILP, Mixed-integer LP). Skillnaden mellan de två är hur skötselprogram tilldelas. Om ett bestånd inte får delas, kan x-variablerna i modellen sättas som "binära". Om ett bestånd får delas, eller om det t o m borde delas, och man inte ska lösa ett spatialt problem, då kan dessa variabler betraktas som kontinuerliga variabler som tar ett värde mellan 0 och 1 vilket anger hur stor andel av ett bestånds areal som ska skötas med ett visst program.

 

OptBinaryRange

Figur 1. För att definiiera x-variablerna som binära (0 eller 1), sätt RangeType = Binary (istället för Custom med gränsvärdena 0 and 1).

 

Om man sätter heltalsvillkor på beslutsvariablerna kan modellen ta väsentligt längre tid att lösa, om det ens hittas en lösning. Den medföljande lösaren, LP_Solve, är långt mindre effektiv än kommersiella lösare såsom Gurobi och Cplex. Beräkningstiderna kan skilja hundrafallt.

 

Som ett alternativ till att lösa ett problem med heltalsvillkor kan den inbyggda heltalsavrundingsfunktionen användas, givet att optimeringsmodellen inte är kombinatorisk i sig. Med detta menas att det inte finns något explicit beroende mellan två olika beslutsvariabler i modellen, förutom att deras värden påverkar t ex en summa. Heltalsavrundningen är mycket enkelt, så att för varje bestånd väljs det skötselprogram som har tilldelats störst värde i LP-lösningen.

 

OptSettingsRoundInt

Figur 2. Om x-variablerna inte är definerade som binära, men du vill att deras värden ska avrundas till 0 eller 1, markera rutan "Avrunda till heltalslösning" i optimeringsinställningarna.

 

Antalet bestånd som delas i en LP-lösning (dvs. får ett värde mellan 0 och 1 istället för 0 eller 1) är aldrig större än antalet restriktioner. Ex: Om du har 20 restriktioner för ett problem, så kommer högst 20 bestånd att tilldelas värden som inte är 0 eller 1. Tänk på att en restriktionsnod i modellträdet (i optimeringsmodellbyggaren) ofta inkluderar iterering över en eller flera mängder. T ex för uttrycket "forall <p> in Periods ..." så skapas en restriktion för varje element p i mängden Periods.

 

 

  windows7_general_info_32    Notera att restriktioner kanske inte uppfylls vid heltalsavrundning

En heltalsavrundad lösning kommer att bryta mot minst en restriktion som formulerats i modellen, givet att modellen har bindande restriktioner.

 

Skillnaden mellan en riktig heltalslösning (från en MIP-modell) och en heltalsavrundad lösning kommer således att bero på antalet bestånd och antalet restriktioner. En heltalsavrundad lösning kommer att bryta mot minst en restriktion som formulerats i modellen, givet att modellen har restriktioner som begränsade den ursprungliga lösningen (en restriktion kan ju vara icke bindande i ett specifikt fall, t ex ett krav som alltid uppfylls). T ex att ett jämnhetskrav inte uppfylls exakt. Det är upp till dig som användare att granska resultatet med hjälp av rapportbyggaren.  Det resultat som sparas kommer också att skilja sig, mer eller mindre, från det som visas i Output-fönstret från optimeringslösaren.

 

  windows7_general_info_32    Sparat resultat kan skilja sig det som visas i lösningsfönstret

Tänk på att om heltalsavrunding är aktiverad så görs den efter att optimeringen är klar, och resultaten som visas från lösaren i Output-fönstret kan därför skilja sig från de sparade resultaten.

 

 

 

 

Kontakta support. © Sveriges Lantbruksuniversitet