!  Il modello lega fra loro alimenti e  sostanze nutritive
   e lega fra loro piatti e alimenti (tramite ricette fisse)
   con vincolo di interezza sui piatti
   massimizza una funzione concava delle preferenze
   con vincolo sul costo;
 
SETS:
 
nutr/
cal   pro  lip   glic    Na   K   Mg   Fe   Ca   P   vitB1  vitB2  vitB3   vitA  vitC 
    /:lb,ub,y;
 
ali/
pasta  riso pane 
fagiol  pisell 
aglio carote  cipoll lattug  melanz patate  pomodo spinac
aransu banane mele
manzo maiabi pollop vitell
procru procot
calama cefali cozze  sgombro tonno
latte  grana latter  mozzar
uova  burro  oliool
cioccf  gelato
birra  vino
/:x, c;
 
 
piat/
pasbur  paspom  pasrag pascoz
risfor  riscoz  fagins   pisbur
carins  latins  melfer  patins  patbur   patfor  patfri  pure
pomins spiins  spibur  fruban  frumel
bisman  arrman  bismai  arrmai  bispol  arrpol  bisvit
prsccr  prscct
calfri  ceffri  ceffer cozfor  sgofri  sgofer  tonsca
biclat pezgra  pezlat  pezmoz
uovsod  uovfri  pezcio  copgel  bicbir   bicvin
/:z,z1,z2,z3,pr;
 
mat(ali,nutr):a;
 
! composizione qualitativa delle ricette;
 
ric( piat,ali)/
pasbur pasta pasbur burro  pasbur  grana
 paspom pasta paspom pomodo paspom oliool paspom aglio
 pasrag pasta pasrag burro  pasrag manzo  pasrag pomodo pasrag cipoll pasrag aglio
 pascoz pasta pascoz oliool pascoz aglio pascoz cozze
risfor riso  risfor burro risfor grana  risfor latter
 riscoz riso  riscoz  cozze  riscoz oliool  riscoz  aglio
 fagins fagiol fagins  oliool  fagins  cipoll
   pisbur pisell  pisbur  burro   pisbur procot
carins carote carins oliool
 latins lattug  latins  oliool
  melfer melanz  melfer  oliool  melfer  aglio
  patins  patate patins oliool  patins  aglio
  patbur  patate  patbur  burro
   patfor  patate
  patfri  patate patfri oliool
pure  patate   pure burro  pure latte
pomins pomodo  pomins  oliool
spiins spinac  spiins  oliool
 spibur spinac  spibur  burro  spibur aglio
 fruban banane
 frumel mele
bisman manzo bisman burro
 arrman manzo
 bismai maiabi  bismai  burro
 arrmai  maiabi
  bispol pollop  bispol burro
 arrpol pollop
 bisvit  vitell  bisvit  burro
prsccr procru
 prscct procot
calfri calama   calfri  oliool
 ceffri cefali  ceffri  oliool
  ceffer  cefali   ceffer  aglio
 cozfor cozze  cozfor oliool  cozfor  aglio
 sgofri  sgombro sgofri  oliool
 sgofer  sgombro sgofer aglio
  tonsca  tonno
biclat latte
 pezgra  grana
 pezlat latter 
 pezmoz mozzar
uovsod uova uovsod  oliool
  uovfri  uova uovfri burro
 pezcio cioccf
  copgel  gelato
 bicbir  birra 
 bicvin vino
/:r;
 
 
    
    
 
ENDSETS
 
DATA:
 
! composizione quantitativa delle ricette;
 
r= 
!pasbur pasta pasbur burro  pasbur  grana;  1  .2   .2
! paspom pasta paspom pomodo paspom oliool paspom aglio;   1   .5   .1   .1
!pasrag pasta pasrag burro  pasrag manzo  pasrag pomodo pasrag cipoll pasrag aglio; 1 .1  .3  .3  .2  .1
!pascoz pasta pascoz oliool pascoz aglio pascoz cozze; 1  .2   .2   .5
!risfor riso  risfor burro risfor grana  risfor latter;  1   .3   .4   .3
!riscoz riso  riscoz  cozze  riscoz oliool  riscoz  aglio;1   .5   .2    .2
!fagins fagiol fagins  oliool  fagins  cipoll;  .6   .1     .1
!pisbur pisell  pisbur  burro   pisbur procot;  .6  .2    .3
!carins carote carins oliool;  1    .2
!latins lattug  latins  oliool;  1   .2
!melfer melanz  melfer  oliool  melfer  aglio;  1.5    .4   .3
!patins  patate patins oliool  patins  aglio;  1.5   .3   .2
!patbur  patate  patbur  burro;  1.3   .4
!patfor  patate;  1
!patfri  patat patfri oliool;  1   .4
!pure  patate   pure burro  pure latte; 1.5   .5   1
!pomins pomodo  pomins  oliool;  1.5    .4
!spiins spinac  spiins  oliool; .5    .2
!spibur spinac  spibur  burro  spibur aglio; .5     .3    .2
!fruban banane; .7
!frumel mele; .7
!bisman manzo bisman burro; 1    .2
!arrman manzo; 1
!bismai maiabi  bismai  burro; 1   .2
!arrmai  maiabi;  1
!bispol pollop  bispol burro;   .8   .2
!arrpol pollop;   1
!bisvit  vitell  bisvit  burro;  1  .3
!prsccr procru;  .5
!prscct procot;   .5
!calfri calama   calfri  oliool; 1   .4
!ceffri cefali  ceffri  oliool;   1    .4
!ceffer  cefali   ceffer  aglio;  1    .2
!cozfor cozze  cozfor oliool  cozfor  aglio;  1    .3    .2 
!sgofri  sgombri sgofri  oliool;  1    .3
!sgofer  sgombri sgofer aglio;   1     .1
!tonsca  tonno; .5    
!biclat latte;  1
!pezgra  grana;   .5
!pezlat latteri;   .5
!pezmoz mozzar;  .4
!uovsod uova uovsod  oliool;   1    .1
!uovfri  uova uovfri burro ;    1     .5
!pezcio cioccf; .5
!copgel  gelato;  .5
!bicbir  birra;  .6 
!bicvin vino;    7
 
;
 
 
a=
              ! cal   pro  lip   glic    Na   K   Mg   Fe   Ca   P   vitB1  vitB2  vitB3   vitA  vitC ;
 
!pasta;         362   11   1.5   76      0     0   0    0    0    0     0     0       0       0     0   
!riso ;         348    7   0.7   78      6   113  28  0.6    6  120   0.06    0.03    1.3     0     0  
!pane;          280    8   0.5   64      0     0   0  0.7   17   77   0.06    0.06    0.8     0     0
!fagioli;       120    7   0.8   20     1.7  256   0    3   44  180   0.44    0.1     1      18    10
!piselli;        76    7   0.4   12      4   384  30  1.8   47  101   0.42    0.18    1      49    28
!aglio;          88    4   0.6   18     32   515  36  1.5   14   63   0.14    0.02    1.3     0     5
!carote;         10    1   0      2.7   50   311   0  0.7   44   37   0.04    0.04    0.7  1148     4
!cipolla;        30    1   0      7     10   130   8  0.4   25   35   0.02    0.03    0.5     0     5
!lattuga;        16    2   0.4    2.2   12   140  10  0.8   45   31   0.05    0.18    0.7   229     6
!melanzane;      15    1   0.1    2.6    1   190  10  0.3   14   33   0.05    0.05    0.6     0     1 
!patate;         85    2   1     18     10   600   0  0.6   10   54   0.1     0.04    2.5     3    15 
!pomodori;       19    1   0.2    3.5    3   268  11  0.3    9   25   0       0       0.8   135    25
!spinaci;        30    3.5 0.5    5     62   662  62  3     78   62   0.07    0.37    0.4   485    54
!arancia succo;  40    0.5 0     10     0.5  190  11  0.2   15   17   0.05    0.03    0.4    38    44
!banane;         75    1.2 0.3   18      1   420  31  0.8    7   28   0.06    0.06    0.7    45    16
!mele;           50    0.5 0.2   16      1   116   5  0.3    6   12   0.02    0.02    0.3     8     5
!manzo;         214   19  13      0     84   338   0  2.1   10  180   0.1     0.18    4.4     0     0
!bist. maiale;  100   18   3      0     74   348  22  1.5    8  223   1.12    0.18    4.5     0     0
!petto pollo;    97   22   1.6    0      0     0   0  1.6   19  200   0.06    0.12   13       0     0
!vitello;       130   21   5      0.4   80   341  16  2.3   14  214   0.15    0.26    6.3     0     0
!prosc. crudo;  480   20  42      0   2700   323  18  1.2   20  177   0.91    0.26    5       0     0
!prosc. cotto;  412   21  36      0   1100   350   0  2     10  160   0.6     0.18    3.5     0     0
!calamari;       68   13   1.7    0.6  405    93   0  0    144  189   0.07    0.16    1.2    75     0
!cefali;        127   16   7      0.7    0     0   0  1.8   26  220   0.06    0.1     7.3     0     0
!cozze;          65   12   1.9    2     91   113  23  5.8   88  236   0.12    0.16    0       0     0
!sgombro;       168   17  11      0.8  161   396  33  1.2   38  264   0.1     0.25    7.6    45     0
!tonno;         140   22   6      0.6    0     0   0  1.3   38  264   0.2     0.12    8.5   450     0
!latte;          47    3.5 1.8    5     61   175   0  0.1  120   94   0.04    0.18    0.1    15     1  
!grana;         381   35  27      3.5  755   153  50  0.8 1290  702   0.02    0.12    0.1   285     0
!latteria;      450   31  37      0      0     0   0  0   1057    0   0       0.68    0     327     0
!mozzarella;    243   20  16      4.9  610     6   0  0.2  403  239   0       0       0     190     0
!uova;          160   13  11      1    130   120  10  2.5   50  210   0.11    0.31    0.1   220     0 
!burro;         760    1  84      1     10    23   1  0     15   16   0       0       0     960     0
!olio oliva;    880    0 100      0      0     0   0  0      0    0   0       0       0       0     0
!ciocc. fond.;  500    4  30     60     19   400  82  5     51  186   0.07    0.07    0.6     9     0
!gelato;        220    4  14     21      0     0   0  0.4  185  165   0       0       0       0     0
!birra;          33    0   0      3      0     0   0  0      0    0   0       0       0       0     0
!vino;           80    0   0      0.5    0     0   0  0      0    0   0       0       0       0     0
 
;
 
 
! lb = valori minimi giornalieri,
  ub = valori massimi giornalieri,
 le prime righe dei valori di lb e ub si riferiscono ai maschi le seconde alle femmine;
 
 
               ! cal   pro  lip   glic  Na      K   Mg   Fe   Ca   P   vitB1  vitB2  vitB3   vitA  vitC ;
 lb=            2000    58   70   100    0    1000  10   10  800 1200   0.9   1.7     19     1500   45  ;
!lb=            1500    46   60   100    0    1000  10   18  800 1200   0.9   1.3     15     1200   45  ;
 
               ! cal   pro  lip   glic  Na      K   Mg   Fe   Ca   P   vitB1  vitB2  vitB3   vitA  vitC ;
 ub=            2500   100  100   500  3000 100000 1000  60 5000 5200   10     10     100    4000   5000  ;
!ub=            2000    80   80   500  3000 100000 1000  68 5000 5200   10     10     100    3000   5000  ;
 
 
!pr = preferenze sui piatti in una scala da 0 a 10;
 
 
pr=
!pasbur  paspom  pasrag pascoz;  4  7   7   8
!risfor  riscoz  fagins   pisbur; 5  7   7  8
!carins  latins  melfer  patins  patbur   patfor  patfri  pure; 7  9   8   8   7  6  7  8
!pomins spiins  spibur  fruban  frumel ; 8  7   6  5   4
!bisman  arrman  bismai  arrmai  bispol  arrpol  bisvit; 2  2  3  2  4  3  2
!prsccr  prscct; 9    8
!calfri  ceffri  ceffer cozfor  sgofri  sgofer  tonsca;  6  8 9 6  8   9  7
!biclat pezgra  pezlat  pezmoz; 1  8    7   7
!uovsod  uovfri  pezcio  copgel  bicbir   bicvin;  3  1   8  9  8    8
;
 
 
! c = prezzi in euro/Kg;
 
c=
!pasta  riso pane ;    1.2   2.2   2.5
!fagioli  pisell ;     1.3   1.35
!aglio carote  cipolla lattug;  5.2   1.9  1.3    1.5
!melanz patate  pomodo spinac; 1.2  0.6   1.5   1.9
!aransu banane mele;   1.5  1.5    1.8
!manzo maiabi pollop vitell;  12   6   9.8  18
!procru procot;   30     20  
!calamari cefali cozze  sgombro tonno;  6   7  13    6   8
!latte  grana latter  mozzar;  .8   14   11  8
!uova  burro  oliool;  .8   8    4
!cioccf  gelato;  7    7
!birra  vino;   1.5   2
;
 
ENDDATA
 
@FOR(ali(j):  @SUM(ric(k,j):  r(k,j) * z(k) )  =  x(j) );
 
@FOR(nutr(i) :  @SUM(ali(j): a(j,i) * x(j) ) = y(i);
     @BND(lb,y,ub) 
    );
 
pref=@SUM(piat(k): pr(k) * (z1(k) +0.5*z2(k) + 0.1 * z3(k)) );
costo=@SUM(ali(j): c(j) * x(j) )/10 ;
 
 MAX= pref;
 
costo < 100;
 
@FOR(piat(k):z(k)=z1(k)+z2(k)+z3(k);
 @BND(0,z1(k),1);
 @BND(0,z2(k),1);z2(k) < z1(k);
 @BND(0,z3(k),1);z3(k) < z2(k);
);
 
@FOR(piat(k):@GIN(z(k)) );