Modell:

model;

param n; # gegebene Daten

set Perioden := 1..n;
set Produkte;
set Maschinen;
param Bedarf {Produkte} >= 0;
param maxBedarf {p in Produkte} >= Bedarf[p];
param Erloes {Produkte};
param Herstellung {Produkte, Maschinen} >= 0;
param Kapazitaet {Maschinen} >= 0, integer;

# gesuchte Variablen:

var Produktion {Produkte} >= 0, integer;
maximize Gewinn: sum {p in Produkte}
  Produktion[p] * Erloes[p] # Zielfunktion
subject to Kap {m in Maschinen}: # Nebenbedingungen
  sum {p in Produkte} Produktion[p] * Herstellung[p,m]
        <= Kapazitaet[m];
Bedarfsdeckung {p in Produkte}: Bedarf[p] <= Produktion[p] <= maxBedarf[p];

Daten:

data;
param n := 12;
set Produkte := Zimtsterne Vanillekipferln;
param:                Bedarf,  maxBedarf :=
   Zimtsterne         30.5     200.9
   Vanillekipferln    79        82 ;
param: Maschinen: Kapazitaet :=

Mixer 10 # Indexmenge wird gleichzeitig Herd 20; # mit den Werten definiert.

param Herstellung := # zweidimensionale Tabellen

   :                Herd  Mixer :=
   Zimtsterne       12.3    4
   Vanillekipferln   9.5    5 ;

oder:

param Herstellung :=
   (tr)  Zimtsterne Vanillekipferln :=
   Herd        12.3    9.5
   Mixer          4      5 ;

oder:

param Herstellung :=
   Zimtsterne Herd         12.3
   Zimtsterne Mixer         4
   Vanillekipferln Herd     9.5
   Vanillekipferln Mixer    5 ;

Befehle:

solve;
display Gewinn, {p in Produkte} Produktion[p];
include Dateiname; model Datei.mod; data Datei.dat; commands Datei.run;
let Kapazitaet["Herd"] := 30;
reset; reset model; reset data;

drop Bedingung; restore Bedingung; fix Variable; unfix Variable;