Improving the modelling of annual decisions used for optimization
Posted: Thu Oct 03, 2019 10:27 am
Hello,
I model a stylized electrcity market. My aim is to know the optimal investment decisions each year, by using Vensim optimization.
To this end, I define the invesment variable as following, with a specific variable to use each year:
IF THEN ELSE( Time=2020 ,g0 , IF THEN ELSE( Time=2021 ,g1 , IF THEN ELSE
( Time=2022 ,g2 , IF THEN ELSE( Time=2023 ,g3 , IF THEN ELSE( Time=2024 ,g4 , IF THEN ELSE( Time=2025 ,g5 , IF THEN ELSE
( Time=2026 ,g6 , IF THEN ELSE( Time=2027 ,g7 , IF THEN ELSE( Time=2028 ,g8 , IF THEN ELSE( Time=2029 ,g9 , IF THEN ELSE
( Time=2030 ,g10 , IF THEN ELSE( Time=2031 ,g11 , IF THEN ELSE( Time=2032 ,g12 , IF THEN ELSE( Time=2033 ,g13 , IF THEN ELSE
( Time=2034 ,g14 , IF THEN ELSE( Time=2035 ,g15 , IF THEN ELSE( Time=2036 ,g16 , IF THEN ELSE( Time=2037 ,g17 , IF THEN ELSE
( Time=2038 ,g18 , IF THEN ELSE( Time=2039 ,g19 , IF THEN ELSE( Time=2040 ,g20 , IF THEN ELSE( Time=2041 ,g21 , IF THEN ELSE
( Time=2042 ,g22 , IF THEN ELSE( Time=2043 ,g23 , IF THEN ELSE( Time=2044 ,g24 , IF THEN ELSE( Time=2045 ,g25 , IF THEN ELSE
( Time=2046 ,g26 , IF THEN ELSE( Time=2047 ,g27 , IF THEN ELSE( Time=2048 ,g28 , IF THEN ELSE( Time=2049 ,g29 , IF THEN ELSE
( Time=2050 ,g30 , IF THEN ELSE( Time=2051 ,g31 , IF THEN ELSE( Time=2052 ,g32 , IF THEN ELSE( Time=2053 ,g33 , IF THEN ELSE
( Time=2044 ,g34 , IF THEN ELSE( Time=2055 ,g35 , IF THEN ELSE( Time=2056 ,g36 , IF THEN ELSE( Time=2057 ,g37 , IF THEN ELSE
( Time=2058 ,g38 , IF THEN ELSE( Time=2059 ,g39 , g40) ) ) ) ) ) ) ) ) ) ) ) )) )) ) ) ))) ) ) ) ) ) ) ) ) ) ) ) )) ))))))
My quesiton is: is there a more elegant way to do it?
Thank you
I model a stylized electrcity market. My aim is to know the optimal investment decisions each year, by using Vensim optimization.
To this end, I define the invesment variable as following, with a specific variable to use each year:
IF THEN ELSE( Time=2020 ,g0 , IF THEN ELSE( Time=2021 ,g1 , IF THEN ELSE
( Time=2022 ,g2 , IF THEN ELSE( Time=2023 ,g3 , IF THEN ELSE( Time=2024 ,g4 , IF THEN ELSE( Time=2025 ,g5 , IF THEN ELSE
( Time=2026 ,g6 , IF THEN ELSE( Time=2027 ,g7 , IF THEN ELSE( Time=2028 ,g8 , IF THEN ELSE( Time=2029 ,g9 , IF THEN ELSE
( Time=2030 ,g10 , IF THEN ELSE( Time=2031 ,g11 , IF THEN ELSE( Time=2032 ,g12 , IF THEN ELSE( Time=2033 ,g13 , IF THEN ELSE
( Time=2034 ,g14 , IF THEN ELSE( Time=2035 ,g15 , IF THEN ELSE( Time=2036 ,g16 , IF THEN ELSE( Time=2037 ,g17 , IF THEN ELSE
( Time=2038 ,g18 , IF THEN ELSE( Time=2039 ,g19 , IF THEN ELSE( Time=2040 ,g20 , IF THEN ELSE( Time=2041 ,g21 , IF THEN ELSE
( Time=2042 ,g22 , IF THEN ELSE( Time=2043 ,g23 , IF THEN ELSE( Time=2044 ,g24 , IF THEN ELSE( Time=2045 ,g25 , IF THEN ELSE
( Time=2046 ,g26 , IF THEN ELSE( Time=2047 ,g27 , IF THEN ELSE( Time=2048 ,g28 , IF THEN ELSE( Time=2049 ,g29 , IF THEN ELSE
( Time=2050 ,g30 , IF THEN ELSE( Time=2051 ,g31 , IF THEN ELSE( Time=2052 ,g32 , IF THEN ELSE( Time=2053 ,g33 , IF THEN ELSE
( Time=2044 ,g34 , IF THEN ELSE( Time=2055 ,g35 , IF THEN ELSE( Time=2056 ,g36 , IF THEN ELSE( Time=2057 ,g37 , IF THEN ELSE
( Time=2058 ,g38 , IF THEN ELSE( Time=2059 ,g39 , g40) ) ) ) ) ) ) ) ) ) ) ) )) )) ) ) ))) ) ) ) ) ) ) ) ) ) ) ) )) ))))))
My quesiton is: is there a more elegant way to do it?
Thank you