Hi,
For example, if yours variable is H(A) the first element corresponds to H('a1')
Bye
how to get any element from a set Topic is solved
-
- User
- Posts: 118
- Joined: 7 years ago
- Location: Rosario - Argentina
Re: how to get any element from a set
Hi
If you want a specific set element, you can also use the ord and card functions:
Cheers
Renger
If you want a specific set element, you can also use the ord and card functions:
Code: Select all
set
A/a1,a2/;
parameter h(a);
* first element
h("a1")
h(a)$(ord(a) = 1)
* second element
h("a2")
h(a)$(ord(a) = 2)
* last element
h(a)$(ord(a) eq card(a))
Renger
____________________________________
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Enjoy modeling even more: Read my blog on modeling at The lazy economist
-
- User
- Posts: 108
- Joined: 7 years ago
Re: how to get any element from a set
True. It does not.Does GAMS not distinguish capital and lower letters?
To "populate" a set:
Code: Select all
set A /a1,a2/;
set B(A);
B(A)=YES$(ord(A)=2);
display B;
Re: how to get any element from a set
Hi Renger,
when I assign an element of a parameter to a scalar, error happens with "Uncontrolled set entered as constant" and "Set for 'ord' is not controlled"
Set A /a1,a2/;
parameter h(a) /a1*a2 2/;
scalar y /0/;
y=h(a)$(ord(a) = 1);
Could you please tell where the problem is? Thank you.
Best regards,
Yongning
when I assign an element of a parameter to a scalar, error happens with "Uncontrolled set entered as constant" and "Set for 'ord' is not controlled"
Set A /a1,a2/;
parameter h(a) /a1*a2 2/;
scalar y /0/;
y=h(a)$(ord(a) = 1);
Could you please tell where the problem is? Thank you.
Best regards,
Yongning
Renger wrote: ↑7 years ago Hi
If you want a specific set element, you can also use the ord and card functions:CheersCode: Select all
set A/a1,a2/; parameter h(a); * first element h("a1") h(a)$(ord(a) = 1) * second element h("a2") h(a)$(ord(a) = 2) * last element h(a)$(ord(a) eq card(a))
Renger
Re: how to get any element from a set
Hi
y is defined as a scalar, so no index. If you write it like you did, Gams expects a set indicator also on the RHS. But this might not what you want, as you set the values for y for all other elements of a to zero:
You could keep y as a scalar and write the following
or
Hope this helps
Cheers
Renger
y is defined as a scalar, so no index. If you write it like you did, Gams expects a set indicator also on the RHS. But this might not what you want, as you set the values for y for all other elements of a to zero:
Code: Select all
parameter y(a);
y(a)$(ord(a) =1) = h(a);
display y(a)
Code: Select all
loop(a,
y = h(a)$(ord(a) = 1);
);
Code: Select all
y = h("a1")
Cheers
Renger
____________________________________
Enjoy modeling even more: Read my blog on modeling at The lazy economist
Enjoy modeling even more: Read my blog on modeling at The lazy economist