Multidimensional set in MPSGE
Posted: Fri Aug 19, 2022 3:29 am
I've got a lot of situations where I have
rto_nt("rmk1",r) = rto("rmk",r);
rto_nt("b_s1",r) = rto("b_s",r);
...
so I need a 1-to-1 mapping between rmk and rmk1, b_s and b_s1, etc (a lot like "Indice from Indice" posted by Manu123 a couple of months ago). In my general code, I can get
rto_nt(agr_nt,r) = sum(agr$agr_map(agr,agr_nt),rto(agr,r));
to work, where I have defined the sets
agr(g) "Agricultural sectors" /oap, rmk, b_s, hor, frs/
agr_nt(g) "Agricultural new technology sectors" /rmk1, b_s1/
agr_map(agr, agr_nt) "Agricultural matched new technology sectors" /rmk.rmk1, b_s.b_s1/
But I can't get anything equivalent to work in my MPSGE code. I'm trying:
$prod:land_nt(g,r)$(agr_nt(g) and active(g,r,"0"))
o:ps(f,g,r)$(sameas(f,"lnd")) q:vffm(f,g,r)
i:ps(f,agr,r)$(agr_map(agr,agr_nt(g)) and sameas(f,"lnd")) q:vffm(f,g,r)
and I've also tried:
$prod:land_nt(g,r)$(agr_nt(g) and active(g,r,"0"))
o:ps(f,g,r)$(sameas(f,"lnd")) q:vffm(f,g,r)
i:(sum((agr$(agr_map(agr,g))),ps("lnd",agr,r))) q:vffm("lnd",g,r)
to replace two blocks that look like:
$prod:land_nt(g,r)$(sameas(g,"b_s1") and active(g,r,"0"))
o:ps(f,g,r)$(sameas(f,"lnd") and sameas(g,"b_s1")) q:vffm(f,g,r)
i:ps(f,"b_s",r)$(sameas(f,"lnd")) q:vffm(f,g,r)
rto_nt("rmk1",r) = rto("rmk",r);
rto_nt("b_s1",r) = rto("b_s",r);
...
so I need a 1-to-1 mapping between rmk and rmk1, b_s and b_s1, etc (a lot like "Indice from Indice" posted by Manu123 a couple of months ago). In my general code, I can get
rto_nt(agr_nt,r) = sum(agr$agr_map(agr,agr_nt),rto(agr,r));
to work, where I have defined the sets
agr(g) "Agricultural sectors" /oap, rmk, b_s, hor, frs/
agr_nt(g) "Agricultural new technology sectors" /rmk1, b_s1/
agr_map(agr, agr_nt) "Agricultural matched new technology sectors" /rmk.rmk1, b_s.b_s1/
But I can't get anything equivalent to work in my MPSGE code. I'm trying:
$prod:land_nt(g,r)$(agr_nt(g) and active(g,r,"0"))
o:ps(f,g,r)$(sameas(f,"lnd")) q:vffm(f,g,r)
i:ps(f,agr,r)$(agr_map(agr,agr_nt(g)) and sameas(f,"lnd")) q:vffm(f,g,r)
and I've also tried:
$prod:land_nt(g,r)$(agr_nt(g) and active(g,r,"0"))
o:ps(f,g,r)$(sameas(f,"lnd")) q:vffm(f,g,r)
i:(sum((agr$(agr_map(agr,g))),ps("lnd",agr,r))) q:vffm("lnd",g,r)
to replace two blocks that look like:
$prod:land_nt(g,r)$(sameas(g,"b_s1") and active(g,r,"0"))
o:ps(f,g,r)$(sameas(f,"lnd") and sameas(g,"b_s1")) q:vffm(f,g,r)
i:ps(f,"b_s",r)$(sameas(f,"lnd")) q:vffm(f,g,r)