about Baden's question

Hi Wietse,

I am just curious . I was looking Baden’s question and your answer and I have a question to you:

you wrote these two sentences they look like the same so can you explain what they are doing please?

OrganicFields(M) $sum(I,Ifield(I,M)*organic(I)) =yes;
ConventionelFields(M)$sum(I,Ifield(I,M)*conventional(I))=yes;

Thanks

Mesude

\

Hi Mesude,



Indeed both look the same but first have a look at the Multidimensional set Ifield(I,M)

I already suggested that you should see a set like a parameter with 0,1 values hence your Ifields looks like (in the rows the I and in the columns the M, blanks are zeros)



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

1 1 1

2 1 1 1 1 1 1

3 1

4 1 1 1 1 1 1 1

5 1 1 1


Now we want to look first for the organic farms which fields are used. This can be done many different ways, but here I just multiply Ifield(I,M) with organic(I)

1 0

2 0

3 1

4 0

5 1

and hence we get Ifield(I,M)*organic(I)

10 18 19 20

3 1

5 1 1 1



Now we do a summation over I and we get sum(I,Ifield(I,M)*organic(I)) :

10 1

18 1

19 1

20 1

(and hence all other fields have the value zero). So we get

OrganicFields(M) $sum(I,Ifield(I,M)*organic(I)) =yes;

Take fields as organic if the sum of the Ifield(I,M)*organic(I)) is greater than zero. You could write it as

OrganicFields(M) $(sum(I,Ifield(I,M)*organic(I))>0) = yes;

but GAMS assumes the >0 as default and GAMS modelers tend to not specify them in their equations/etc.


For conventional fields I use the same apporach, but use the set conventional(I) instead of organic(I).





To make it perhaps simpler or just to give you an alternative:

OrganicFields(M) $sum(I$organic(I), Ifield(I,M))=yes;

OrganicFields(M) $(sum(I$organic(I), Ifield(I,M))>0)=yes;

should give you the same results (and officially with less calculations). I prefer my approach used, since too many conditional statements in one line are confusing and there is hardly any speed difference between these two.



Hope this gives you a better understanding… If not let me know



Best wishes

Wietse

:


\


From: gamsworld@googlegroups.com [gamsworld@googlegroups.com] On Behalf Of Mesude Ozturk [mesudeavci@gmail.com]
Sent: Friday, February 10, 2012 4:56 PM
To: gamsworld@googlegroups.com
Subject: about Baden’s question

Hi Wietse,

I am just curious . I was looking Baden’s question and your answer and I have a question to you:

you wrote these two sentences they look like the same so can you explain what they are doing please?

OrganicFields(M) $sum(I,Ifield(I,M)*organic(I)) =yes;
ConventionelFields(M)$sum(I,Ifield(I,M)*conventional(I))=yes;

Thanks

Mesude


To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.

\

Hi Wietse,

Thanks for the explanation. I appreciate your help.

Mesude

On Feb 10, 2012, at 10:37 AM, Dol, Wietse wrote:

Hi Mesude,

Indeed both look the same but first have a look at the Multidimensional set Ifield(I,M)

I already suggested that you should see a set like a parameter with 0,1 values hence your Ifields looks like (in the rows the I and in the columns the M, blanks are zeros)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

1 1 1

2 1 1 1 1 1 1

3 1

4 1 1 1 1 1 1 1

5 1 1 1

Now we want to look first for the organic farms which fields are used. This can be done many different ways, but here I just multiply Ifield(I,M) with organic(I)

1 0

2 0

3 1

4 0

5 1

and hence we get Ifield(I,M)*organic(I)

10 18 19 20

3 1

5 1 1 1

Now we do a summation over I and we get sum(I,Ifield(I,M)*organic(I)) :

10 1

18 1

19 1

20 1

(and hence all other fields have the value zero). So we get

OrganicFields(M) $sum(I,Ifield(I,M)*organic(I)) =yes;

Take fields as organic if the sum of the Ifield(I,M)*organic(I)) is greater than zero. You could write it as

OrganicFields(M) $(sum(I,Ifield(I,M)*organic(I))>0) = yes;

but GAMS assumes the >0 as default and GAMS modelers tend to not specify them in their equations/etc.

For conventional fields I use the same apporach, but use the set conventional(I) instead of organic(I).

To make it perhaps simpler or just to give you an alternative:

OrganicFields(M) $sum(I$organic(I), Ifield(I,M))=yes;

OrganicFields(M) $(sum(I$organic(I), Ifield(I,M))>0)=yes;

should give you the same results (and officially with less calculations). I prefer my approach used, since too many conditional statements in one line are confusing and there is hardly any speed difference between these two.

Hope this gives you a better understanding… If not let me know

Best wishes

Wietse

:


From: gamsworld@googlegroups.com [gamsworld@googlegroups.com] On Behalf Of Mesude Ozturk [mesudeavci@gmail.com]
Sent: Friday, February 10, 2012 4:56 PM
To: gamsworld@googlegroups.com
Subject: about Baden’s question

   Hi Wietse,

I am just curious . I was looking Baden’s question and your answer and I have a question to you:

you wrote these two sentences they look like the same so can you explain what they are doing please?

OrganicFields(M) $sum(I,Ifield(I,M)*organic(I)) =yes;
ConventionelFields(M)$sum(I,Ifield(I,M)*conventional(I))=yes;

Thanks

Mesude


To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.


To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.


\