set OBJECT; param weight{i in OBJECT}; param volume{i in OBJECT}; param weight_limit; param volume_limit; param availability{i in OBJECT}; param value{i in OBJECT}; var quantity{i in OBJECT}, integer, >= 0; maximize total_value: sum{i in OBJECT} quantity[i]*value[i]; s.t. weight_constraint: sum{i in OBJECT} weight[i]*quantity[i] <= weight_limit; s.t. volume_constraint: sum{i in OBJECT} volume[i]*quantity[i] <= volume_limit; s.t. availability_constraints {i in OBJECT}: quantity[i] <= availability[i]; data; set OBJECT := a b c; param weight := a 16 b 4 c 6; param volume := a 3 b 4 c 3; param weight_limit := 30; param volume_limit := 20; param availability:= a 3 b 4 c 1; param value:= a 11 b 4 c 9; end;