Gams sum formulation

Hello,
I occured a problem how to write the sum expression.my code is followed :
set c the sets of components exchanger1 and exchanger2/ex1,ex2/alias(c,cp)
set m modes of c e.g high tempreture mode and low tempreture mode /off,cold,warm,high,low/ alias(m,mp,mpp)
set p products /tem,hot/ alias(p,g ,pp)
set dal(c,m,mp) disallowed transitions/(ex1,ex2).(off.low,off.high,cold.off,cold.high,warm.off,warm.high,low.cold,low.warm,high.warm,high.cold,high.off)/
set ms(c,m,mp) minimum stay /(ex1,ex2).(cold.low,low.off,high.low)/
set h the set of hours in the operational model /1*100/
Parameters
x(c,m,i,p) /ex1.low.top.tem 180,
ex1.low.buttom.tem 120,
ex1.high.top.tem 320,
ex1.high.buttom.tem 180,
ex2.low.top.hot 180,
ex2.low.buttom.hot 120,
ex2.high.top.hot 320,
ex2.high.buttom.hot 180/
K(ms) / ex1.cold.low 2,
ex1.low.off 2,
ex1.high.off 3,
ex2.cold.low 2,
ex2.low.off 2,
ex2.high.off 3/
Equations
minStay(c,mp,h) minimum stay constraint;
minStay(c,mp,h) … y(c,mp,h)=sum(sita,z(c,m,mp,h-sita+1)) where sita I think should be a set .but in the expression demanded sita is a set for 1 to K(ms) .I am confused how to define sita in Gams ,for it is assicated with K(ms) .the expression I am trying to formulated can be seen in the attachment for it cant write directly in the editor .
Thanks in advance .
Hiking


formulation.png

Hi Hiking



Note, that you send code that has some errors in it, before it comes to your question.

(for example set i is missing, there are lots of semicolons missing, you define a variable over a subset, = instead of =E= in an equation, etc.).

Please submit code that shows the problem you describe.

Here is an example, where I sum over the last 3 elements of a series (e.g. y(“100”) = z(“98”) + z(“99”) + z(“100”)).

You can replace the lag by your parameter k.



set h /1*100/;



parameter k /3/;

alias(h,hh);

parameter z(h),y(h);



z(h) = ord(h);

y(h) = sum(hh$(ord(hh)+3 > ord(h) and ord(hh) < ord(h)+1) ,z(hh));



parameter results(h,*);



results(h,“z”) = z(h);

results(h,“y”) = y(h);



display results;



It is now up to you to implement this in your code.


Hope this helps


Cheers

Renger





From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com] On Behalf Of qinghai Sun
Sent: Tuesday, November 25, 2014 12:14
To: gamsworld@googlegroups.com
Subject: Gams sum formulation



Hello,

I occured a problem how to write the sum expression.my code is followed :

set c the sets of components exchanger1 and exchanger2/ex1,ex2/alias(c,cp)

set m modes of c e.g high tempreture mode and low tempreture mode /off,cold,warm,high,low/ alias(m,mp,mpp)

set p products /tem,hot/ alias(p,g ,pp)

set dal(c,m,mp) disallowed transitions/(ex1,ex2).(off.low,off.high,cold.off,cold.high,warm.off,warm.high,low.cold,low.warm,high.warm,high.cold,high.off)/

set ms(c,m,mp) minimum stay /(ex1,ex2).(cold.low,low.off,high.low)/

set h the set of hours in the operational model /1*100/

Parameters

x(c,m,i,p) /ex1.low.top.tem 180,

ex1.low.buttom.tem 120,

ex1.high.top.tem 320,

ex1.high.buttom.tem 180,

ex2.low.top.hot 180,

ex2.low.buttom.hot 120,

ex2.high.top.hot 320,

ex2.high.buttom.hot 180/

K(ms) / ex1.cold.low 2,

ex1.low.off 2,

ex1.high.off 3,

ex2.cold.low 2,

ex2.low.off 2,

ex2.high.off 3/

Equations

minStay(c,mp,h) minimum stay constraint;

minStay(c,mp,h) … y(c,mp,h)=sum(sita,z(c,m,mp,h-sita+1)) where sita I think should be a set .but in the expression demanded sita is a set for 1 to K(ms) .I am confused how to define sita in Gams ,for it is assicated with K(ms) .the expression I am trying to formulated can be seen in the attachment for it cant write directly in the editor .

Thanks in advance .

Hiking


To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.


To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.

hello Renger,
Iam sorry for my rough code .I have overwrited my code ,the set i had been added,and the = had been replaced with =g= as the model demands and so as to the semicolons in the code .But Renger, I think you mistaken what confused me .sita as you can see in the picture attachment should be a fixed sets like sita(c,m,mp) consists of several subsets like /0,1,2…K(c,m,mp)/ .but as you know it is wrong in syntax and cant be formulated like this .In your example hh consists of only one subset ( it is my definition ) ,how can I express it if hh is a parameter like hh(i) (e.g if i =1 ,hh(i)=4;i=2,hh(i)=5;i=3,hh(i)=6),and to get the sum of z(sita) where sita is from 0 to hh(i) .
best regards
Hiking

在 2014年11月25日星期二UTC+8下午7时14分14秒,qinghai Sun写道:

Hello,
I occured a problem how to write the sum expression.my code is followed :

set i the extreme points /top,buttom/ ;

set c the sets of components exchanger1 and exchanger2/ex1,ex2/;alias(c,cp);
set m modes of c e.g high tempreture mode and low tempreture mode /off,cold,warm,high,low/ alias(m,mp,mpp);
set p products /tem,hot/ ;alias(p,g ,pp);
set dal(c,m,mp) disallowed transitions/(ex1,ex2).(off.low,off.high,cold.off,cold.high,warm.off,warm.high,low.cold,low.warm,high.warm,high.cold,high.off)/;
set ms(c,m,mp) minimum stay /(ex1,ex2).(cold.low,low.off,high.low)/;
set h the set of hours in the operational model /1*100/ ;
Parameters
x(c,m,i,p) /ex1.low.top.tem 180,
ex1.low.buttom.tem 120,
ex1.high.top.tem 320,
ex1.high.buttom.tem 180,
ex2.low.top.hot 180,
ex2.low.buttom.hot 120,
ex2.high.top.hot 320,
ex2.high.buttom.hot 180/
K(c,m,mp) / ex1.cold.low 2,
ex1.low.off 2,
ex1.high.off 3,
ex2.cold.low 2,
ex2.low.off 2,
ex2.high.off 3/
Equations
minStay(c,mp,h) minimum stay constraint;
minStay(c,mp,h)$(ms(c,m,mp)) … y(c,mp,h) =g= sum(sita,z(c,m,mp,h-sita+1)) where sita I think should be a set .but in the expression demanded sita is a set for 1 to K(ms) .I am confused how to define sita in Gams ,for it is assicated with K(ms) .the expression I am trying to formulated can be seen in the attachment for it cant write directly in the editor .
Thanks in advance .
Hiking


To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.

Do you need the subset anywhere else? If not, my solution will work fine
Renger

Sent from my iPhone

Am 26.11.2014 um 08:14 schrieb “qinghai Sun” :

hello Renger,
Iam sorry for my rough code .I have overwrited my code ,the set i had been added,and the = had been replaced with =g= as the model demands and so as to the semicolons in the code .But Renger, I think you mistaken what confused me .sita as you can see in the picture attachment should be a fixed sets like sita(c,m,mp) consists of several subsets like /0,1,2…K(c,m,mp)/ .but as you know it is wrong in syntax and cant be formulated like this .In your example hh consists of only one subset ( it is my definition ) ,how can I express it if hh is a parameter like hh(i) (e.g if i =1 ,hh(i)=4;i=2,hh(i)=5;i=3,hh(i)=6),and to get the sum of z(sita) where sita is from 0 to hh(i) .
best regards
Hiking

在 2014年11月25日星期二UTC+8下午7时14分14秒,qinghai Sun写道:

Hello,
     I occured a problem how to write the sum expression.my code is followed :

 set i the extreme points /top,buttom/ ;

  set c the sets of components exchanger1 and exchanger2/ex1,ex2/;alias(c,cp);
  set m modes of c e.g high tempreture mode and low tempreture mode /off,cold,warm,high,low/ alias(m,mp,mpp);
  set p products /tem,hot/ ;alias(p,g ,pp);
  set dal(c,m,mp) disallowed transitions/(ex1,ex2).(off.low,off.high,cold.off,cold.high,warm.off,warm.high,low.cold,low.warm,high.warm,high.cold,high.off)/;
  set ms(c,m,mp) minimum stay /(ex1,ex2).(cold.low,low.off,high.low)/;
  set  h the set of hours in the operational model /1*100/ ;
Parameters
    x(c,m,i,p) /ex1.low.top.tem 180,
                ex1.low.buttom.tem 120,
                ex1.high.top.tem 320,
                ex1.high.buttom.tem 180,
                ex2.low.top.hot 180,
                ex2.low.buttom.hot 120,
                ex2.high.top.hot 320,
                ex2.high.buttom.hot 180/
    K(c,m,mp)      / ex1.cold.low  2,
                 ex1.low.off 2,
                 ex1.high.off 3,
                 ex2.cold.low  2,
                 ex2.low.off 2,
                 ex2.high.off 3/
Equations
    minStay(c,mp,h) minimum stay constraint;
    minStay(c,mp,h)$(ms(c,m,mp)) ..   y(c,mp,h) =g= sum(sita,z(c,m,mp,h-sita+1))  where sita I think should be a set .but in the expression demanded sita is a set for 1 to K(ms) .I am confused how to define sita in Gams ,for it is assicated with K(ms) .the expression I am trying to formulated can be seen in the attachment for it cant write directly in the editor .
    Thanks in advance .
    Hiking


To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.


To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.

hello,Renger ,in my model ,sita should be a set from 0 to K(c,m,mp) for every iteration of c m and mp .that is to say sita may be different for every (c,m,mp) .sita is changed with parameter K(c,m,mp) for diffferent value .for exampe when K(‘ex1’,‘cold’,‘low’) =2, sita should be /0,1/,K(‘ex1’,‘high’,‘off’)=3,sita should be /0,1,2/ .
parameter K(c,m,mp) / ex1.cold.low 2,
ex1.low.off 2,
ex1.high.off 3,
ex2.cold.low 2,
ex2.low.off 2,
ex2.high.off 3/
thanks to you ,Renger

在 2014年11月26日星期三UTC+8下午3时48分49秒,Renger van Nieuwkoop写道:

Do you need the subset anywhere else? If not, my solution will work fine
Renger

Sent from my iPhone

Am 26.11.2014 um 08:14 schrieb “qinghai Sun” :

hello Renger,
    Iam sorry for my rough code  .I have overwrited my code ,the set i had been added,and the = had been replaced with =g= as the model demands and so as to the semicolons in the code .But Renger, I think you mistaken what confused me .sita as you can see in the picture attachment should be a fixed  sets like sita(c,m,mp) consists of several subsets like /0,1,2...K(c,m,mp)/ .but as you know it is wrong in syntax and  cant be formulated like this .In  your example hh consists of only one subset ( it is my definition )  ,how can I express it if hh is a parameter like hh(i) (e.g if i =1 ,hh(i)=4;i=2,hh(i)=5;i=3,hh(i)=6),and to get the sum of z(sita) where sita is from 0 to hh(i) .
 best regards
 Hiking

在 2014年11月25日星期二UTC+8下午7时14分14秒,qinghai Sun写道:

    Hello,
         I occured a problem how to write the sum expression.my code is followed :

     set i the extreme points /top,buttom/ ;

      set c the sets of components exchanger1 and exchanger2/ex1,ex2/;alias(c,cp);
      set m modes of c e.g high tempreture mode and low tempreture mode /off,cold,warm,high,low/ alias(m,mp,mpp);
      set p products /tem,hot/ ;alias(p,g ,pp);
      set dal(c,m,mp) disallowed transitions/(ex1,ex2).(off.low,off.high,cold.off,cold.high,warm.off,warm.high,low.cold,low.warm,high.warm,high.cold,high.off)/;
      set ms(c,m,mp) minimum stay /(ex1,ex2).(cold.low,low.off,high.low)/;
      set  h the set of hours in the operational model /1*100/ ;
    Parameters
        x(c,m,i,p) /ex1.low.top.tem 180,
                    ex1.low.buttom.tem 120,
                    ex1.high.top.tem 320,
                    ex1.high.buttom.tem 180,
                    ex2.low.top.hot 180,
                    ex2.low.buttom.hot 120,
                    ex2.high.top.hot 320,
                    ex2.high.buttom.hot 180/
        K(c,m,mp)      / ex1.cold.low  2,
                     ex1.low.off 2,
                     ex1.high.off 3,
                     ex2.cold.low  2,
                     ex2.low.off 2,
                     ex2.high.off 3/
    Equations
        minStay(c,mp,h) minimum stay constraint;
        minStay(c,mp,h)$(ms(c,m,mp)) ..   y(c,mp,h) =g= sum(sita,z(c,m,mp,h-sita+1))  where sita I think should be a set .but in the expression demanded sita is a set for 1 to K(ms) .I am confused how to define sita in Gams ,for it is assicated with K(ms) .the expression I am trying to formulated can be seen in the attachment for it cant write directly in the editor .
        Thanks in advance .
        Hiking

--
To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+...@googlegroups.com.
To post to this group, send email to gams...@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.


To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.

Hi Hiking



If you only use sita for summing in this one equation, you don’t need the set sita.

You can control the summing over the proper set elements by using k to indicate which variables should be summed. k in your example is either 0 (no summation), 2, or 3.

Here an example, where k is used to control the number of previous periods.

If I understand the equation correctly, the variable y should be defined over (c,m,mp,h) and not over c(c,mp,h).

Cheers

Renger



set

h the set of hours in the operational model /1*10/ ,

c the sets of components exchanger1 and exchanger2/ex1,ex2/,

m modes of c e.g high temperature mode and low temperature mode /off,cold,warm,high,low/

i /bottom, top/;

;

alias(m,mp), (c,cp), (h,hh);



Parameters

K(c,m,mp) / ex1.cold.low 2,

ex1.low.off 2,

ex1.high.off 3,

ex2.cold.low 2,

ex2.low.off 2,

ex2.high.off 3/;



** Use parameters instead of variables to check the equation easily



parameter

y(c,m,mp,h),

z(c,m,mp,hh);



** Initialize z:

z(c,m,mp,hh) = 1;



y(c,m,mp,h)k(c,m,mp) = sum(hh(ord(hh)+k(c,m,mp) > ord(h) and ord(hh) :

hello Renger,

Iam sorry for my rough code .I have overwrited my code ,the set i had been added,and the = had been replaced with =g= as the model demands and so as to the semicolons in the code .But Renger, I think you mistaken what confused me .sita as you can see in the picture attachment should be a fixed sets like sita(c,m,mp) consists of several subsets like /0,1,2…K(c,m,mp)/ .but as you know it is wrong in syntax and cant be formulated like this .In your example hh consists of only one subset ( it is my definition ) ,how can I express it if hh is a parameter like hh(i) (e.g if i =1 ,hh(i)=4;i=2,hh(i)=5;i=3,hh(i)=6),and to get the sum of z(sita) where sita is from 0 to hh(i) .

best regards

Hiking


在 2014年11月25日星期二UTC+8下午7时14分14秒,qinghai Sun写道:

Hello,

I occured a problem how to write the sum expression.my code is followed :

set i the extreme points /top,buttom/ ;

set c the sets of components exchanger1 and exchanger2/ex1,ex2/;alias(c,cp);

set m modes of c e.g high tempreture mode and low tempreture mode /off,cold,warm,high,low/ alias(m,mp,mpp);

set p products /tem,hot/ ;alias(p,g ,pp);

set dal(c,m,mp) disallowed transitions/(ex1,ex2).(off.low,off.high,cold.off,cold.high,warm.off,warm.high,low.cold,low.warm,high.warm,high.cold,high.off)/;

set ms(c,m,mp) minimum stay /(ex1,ex2).(cold.low,low.off,high.low)/;

set h the set of hours in the operational model /1*100/ ;

Parameters

x(c,m,i,p) /ex1.low.top.tem 180,

ex1.low.buttom.tem 120,

ex1.high.top.tem 320,

ex1.high.buttom.tem 180,

ex2.low.top.hot 180,

ex2.low.buttom.hot 120,

ex2.high.top.hot 320,

ex2.high.buttom.hot 180/

K(c,m,mp) / ex1.cold.low 2,

ex1.low.off 2,

ex1.high.off 3,

ex2.cold.low 2,

ex2.low.off 2,

ex2.high.off 3/

Equations

minStay(c,mp,h) minimum stay constraint;

minStay(c,mp,h)$(ms(c,m,mp)) … y(c,mp,h) =g= sum(sita,z(c,m,mp,h-sita+1)) where sita I think should be a set .but in the expression demanded sita is a set for 1 to K(ms) .I am confused how to define sita in Gams ,for it is assicated with K(ms) .the expression I am trying to formulated can be seen in the attachment for it cant write directly in the editor .

Thanks in advance .

Hiking


\

To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+...@googlegroups.com.
To post to this group, send email to gams...@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.


To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.


To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.

Hi,Renger
Thanks for your help.

Best regards
Hiking
2014å¹´11月26æ—¥ 下午7:29于 “Renger van Nieuwkoop” 写道:

Hi Hiking



If you only use sita for summing in this one equation, you don’t need the set sita.

You can control the summing over the proper set elements by using k to indicate which variables should be summed. k in your example is either 0 (no summation), 2, or 3.

Here an example, where k is used to control the number of previous periods.

If I understand the equation correctly, the variable y should be defined over (c,m,mp,h) and not over c(c,mp,h).

Cheers

Renger



set

h the set of hours in the operational model /1*10/ ,

c the sets of components exchanger1 and exchanger2/ex1,ex2/,

m modes of c e.g high temperature mode and low temperature mode /off,cold,warm,high,low/

i /bottom, top/;

;

alias(m,mp), (c,cp), (h,hh);



Parameters

K(c,m,mp) / ex1.cold.low 2,

ex1.low.off 2,

ex1.high.off 3,

ex2.cold.low 2,

ex2.low.off 2,

ex2.high.off 3/;



** Use parameters instead of variables to check the equation easily



parameter

y(c,m,mp,h),

z(c,m,mp,hh);



** Initialize z:

z(c,m,mp,hh) = 1;



y(c,m,mp,h)k(c,m,mp) = sum(hh(ord(hh)+k(c,m,mp) > ord(h) and ord(hh) :

hello Renger,

Iam sorry for my rough code .I have overwrited my code ,the set i had been added,and the = had been replaced with =g= as the model demands and so as to the semicolons in the code .But Renger, I think you mistaken what confused me .sita as you can see in the picture attachment should be a fixed sets like sita(c,m,mp) consists of several subsets like /0,1,2…K(c,m,mp)/ .but as you know it is wrong in syntax and cant be formulated like this .In your example hh consists of only one subset ( it is my definition ) ,how can I express it if hh is a parameter like hh(i) (e.g if i =1 ,hh(i)=4;i=2,hh(i)=5;i=3,hh(i)=6),and to get the sum of z(sita) where sita is from 0 to hh(i) .

best regards

Hiking


在 2014年11月25日星期二UTC+8下午7时14分14秒,qinghai Sun写道:

Hello,

I occured a problem how to write the sum expression.my code is followed :

set i the extreme points /top,buttom/ ;

set c the sets of components exchanger1 and exchanger2/ex1,ex2/;alias(c,cp);

set m modes of c e.g high tempreture mode and low tempreture mode /off,cold,warm,high,low/ alias(m,mp,mpp);

set p products /tem,hot/ ;alias(p,g ,pp);

set dal(c,m,mp) disallowed transitions/(ex1,ex2).(off.low,off.high,cold.off,cold.high,warm.off,warm.high,low.cold,low.warm,high.warm,high.cold,high.off)/;

set ms(c,m,mp) minimum stay /(ex1,ex2).(cold.low,low.off,high.low)/;

set h the set of hours in the operational model /1*100/ ;

Parameters

x(c,m,i,p) /ex1.low.top.tem 180,

ex1.low.buttom.tem 120,

ex1.high.top.tem 320,

ex1.high.buttom.tem 180,

ex2.low.top.hot 180,

ex2.low.buttom.hot 120,

ex2.high.top.hot 320,

ex2.high.buttom.hot 180/

K(c,m,mp) / ex1.cold.low 2,

ex1.low.off 2,

ex1.high.off 3,

ex2.cold.low 2,

ex2.low.off 2,

ex2.high.off 3/

Equations

minStay(c,mp,h) minimum stay constraint;

minStay(c,mp,h)$(ms(c,m,mp)) … y(c,mp,h) =g= sum(sita,z(c,m,mp,h-sita+1)) where sita I think should be a set .but in the expression demanded sita is a set for 1 to K(ms) .I am confused how to define sita in Gams ,for it is assicated with K(ms) .the expression I am trying to formulated can be seen in the attachment for it cant write directly in the editor .

Thanks in advance .

Hiking


\

To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+...@googlegroups.com.
To post to this group, send email to gams...@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.


To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.


You received this message because you are subscribed to a topic in the Google Groups “gamsworld” group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/gamsworld/ho9lI8QhYG8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.


To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.