sample.gms : Stratified Sample Design

Description

The problem is to find a sampling plan that minimizes cost
and yields variances of the population less than an upper bound.
Table 10.1 in the book is not consistent with the equation
statements and the objective function value must be a misprint.


Reference

  • Bracken, J, and McCormick, G P, Chapter 10.2. In Selected Applications of Nonlinear Programming. John Wiley and Sons, New York, 1968.

Small Model of Type : NLP


Category : GAMS Model library


Main file : sample.gms

$Title Stratified Sample Design  (SAMPLE,SEQ=27)
$Ontext

The problem is to find a sampling plan that minimizes cost
and yields variances of the population less than an upper bound.
Table 10.1 in the book is not consistent with the equation
statements and the objective function value must be a misprint.


Bracken, J, and McCormick, G P, Chapter 10.2. In Selected Applications
of Nonlinear Programming. John Wiley and Sons, New York, 1968.

$Offtext

Sets  h  stratum  / 1*4 /,  j  variate  / a,b /

Table data(h,*)

     pop    a     b    cost
 1  400000  25    1     1
 2  300000  25    4     1
 3  200000  25   16     1
 4  100000  25   64     1

Parameter vmax(j) maximum variance  / a .04, b .01 /
          w(h)    stratum weight
          tpop    total population
          k1(h,j) constant one
          k2(j)   constant two;

 tpop = sum(h, data(h,"pop"));
 w(h) = data(h,"pop")/tpop;
 k1(h,j) = sqr(w(h))*data(h,j);
 k2(j)   = sum(h, w(h)*data(h,j)/data(h,"pop"));

Display tpop, w, k1,k2;

Variables  n(h)  sample - original formulation
           nr(h) reciprocal of sample size
           c     cost

Equations  vbal(j)  variance balance - original formulation
           vbalr(j) reciprocal variance balance
           cbal     cost balance - original formulation
           cbalr    reciprocal formulation of cost balance;

vbal(j)..  sum(h, k1(h,j)/n(h)) - k2(j) =l= vmax(j);

vbalr(j).. sum(h, k1(h,j)*nr(h)) - k2(j) =l= vmax(j);

cbal..     c =e= sum(h, data(h,"cost")*n(h));

cbalr..    c =e= sum(h, data(h,"cost")/nr(h));

Models sample  original formulation      / vbal,cbal /
       sampler reciprocal formulation    / vbalr,cbalr / ;

n.lo(h) = 100; n.up(h) = data(h,"pop");
n.l(h) = 200; c.l = sum(h, data(h,"cost")*n.l(h));
Solve sample minimizing c using nlp;

nr.lo(h) = 1/data(h,"pop"); nr.up(h) = 1/100; nr.l(h) = 1/n.l(h);
Solve sampler minimizing c using nlp;