Set s index uzlu /1*120/; Alias(s,as) *Scalar S pocet scenarov v kazdom obdobi /3/ Scalar K0 pociatocny kapital /100/ Scalar alpha param v ucel funkci /0.6/ Scalar beta param pre uzitok /0.9/ Scalar A tiez param v ucel funkci /70/; Parameters xi(s) realizacia nahody /1 0.6,2 0.8,3 1,4 0.6,5 0.8,6 1,7 0.6,8 0.8,9 1,10 0.6,11 0.8,12 1,13 0.6,14 0.8,15 1,16 0.6,17 0.8,18 1,19 0.6,20 0.8, 21 1,22 0.6,23 0.8,24 1,25 0.6,26 0.8,27 1,28 0.6,29 0.8,30 1,31 0.6,32 0.8,33 1,34 0.6,35 0.8,36 1,37 0.6,38 0.8,39 1,40 0.6, 41 0.8,42 1,43 0.6,44 0.8,45 1,46 0.6,47 0.8,48 1,49 0.6,50 0.8,51 1,52 0.6,53 0.8,54 1,55 0.6,56 0.8,57 1,58 0.6,59 0.8,60 1, 61 0.6,62 0.8,63 1,64 0.6,65 0.8,66 1,67 0.6,68 0.8,69 1,70 0.6,71 0.8,72 1,73 0.6,74 0.8,75 1,76 0.6,77 0.8,78 1,79 0.6,80 0.8, 81 1,82 0.6,83 0.8,84 1,85 0.6,86 0.8,87 1,88 0.6,89 0.8,90 1,91 0.6,92 0.8,93 1,94 0.6,95 0.8,96 1,97 0.6,98 0.8,99 1,100 0.6, 101 0.8,102 1,103 0.6,104 0.8,105 1,106 0.6,107 0.8,108 1,109 0.6,110 0.8,111 1,112 0.6,113 0.8,114 1,115 0.6,116 0.8,117 1,118 0.6,119 0.8,120 1 / Set Predkovia(s,as) matica predchodcov; Loop(s, Loop(as, if(trunc((ord(s)-1)/3) = ord(as),Predkovia(s,as) = 1;) ) ); *binary variables p(s); Variables C(s) "spotreby v uzloch" K(s) "kapitaly v uzloch"; Free variables z ; Nonnegative Variables C(s), K(s) ; Equations uzitok definujeme uzitkovu funkciu prva(s) prva podmienka podmienky(s) prostredne podmienky posledna(s) posledna podmienka ; * obmedzenie(s) obmedzenie pre spotrebu uzitok .. z =e= sum(s$(ord(s) < 4),log(c(s)+0.01))/3 + sum(s$((ord(s) > 3) and (ord(s) < 13)),log(c(s)+0.01))*beta/9 + sum(s$((ord(s) > 12) and (ord(s) < 40)),log(c(s)+0.01))*beta**2/27 + sum(s$(ord(s) > 39),log(c(s)+0.01))*beta**3/81; prva(s)$(ord(s) < 4) .. K(s) + C(s) =l= xi(s)*A*K0**alpha ; podmienky(s)$(ord(s) >= 4) .. (K(s) + C(s))/(xi(s)*A) =l= (sum(as,Predkovia(s,as)*K(as))+0.001)**alpha; posledna(s)$(ord(s) > 39) .. K(s) =e= 0; *obmedzenie(s)$(ord(s) < 21) .. C(s) =g= 600; Model m1 /all/ ; Solve m1 using MINLP maximizing z ; display C.l,K.l, --------------------------------------------------------- Scalar K0 pociatocny kapital /100/ Scalar alpha param v ucel funkci /0.6/ Scalar beta param pre uzitok /0.9/ Scalar A tiez param v ucel funkci /70/ Scalar db dolna mez rovnomern rozd /0.6/ Scalar ub horna mez rovnomern rozd /1/ ; Parameter kv urcenie pozadovaneho kvantilu rovn rozd ; kv =(0.95*(ub-db) + db); Variables C0 K1 C1 K2 C2 K3 C3 ; Free variables z ; Nonnegative Variables C0, C1, C2, C3, K1, K2, K3, K4 ; Equations uzitok definujeme uzitkovu funkciu podmienka1 prva podmienka podmienka2 druha podmienka podmienka3 tretia podmienka podmienka4 stvrta podmienka; uzitok .. z =e= log(C0+0.01) + beta*log(C1+0.01) + (beta**2)*log(C2+0.01) + (beta**3)*log(C3+0.01);; podmienka1 .. (K1 + C0)/(A*(K0+0.001)**alpha) =l= kv; podmienka2 .. (K2 + C1)/(A*(K1+0.001)**alpha) =l= kv ; podmienka3 .. (K3 + C2)/(A*(K2+0.001)**alpha) =l= kv; podmienka4 .. (C3)/(A*(K3+0.001)**alpha) =l= kv; Model m1 /all/ ; Solve m1 using NLP maximizing z ; *display C0, K1, C1, K2, C2, K3, C3;