1function [SCALED] = mmap_scale(
MMAP, M, maxIter)
2% Changes the mean inter-arrival time of an
MMAP.
12 MOLD = map_mean(
MMAP);
17 SCALED{1} =
MMAP{1} * ratio;
18 SCALED{2} =
MMAP{2} * ratio;
21 SCALED{2+c} =
MMAP{2+c} * ratio;
25 SCALED{2} = 0*SCALED{1};
26 l = mmap_count_lambda(
MMAP);
29 SCALED{2+c} =
MMAP{2+c} * (1/M(c))/l(c);
30 SCALED{2} = SCALED{2} + SCALED{2+c};
32 SCALED{2+c} =
MMAP{2+c} * 0;
33 SCALED{2} = SCALED{2} + SCALED{2+c};
36 MMAP = mmap_normalize(SCALED);
38 % the previous assignment
is heuristic because it also affects the
39 % other
classes, we now refine it
43 options.Display =
'off';
44 options.tolFun = 1e-2;
45 options.MaxIter = maxIter;
46 %x=fmincon(@(X) objfun(X,M,
MMAP),ones(1,C),[],[],[],[],1e-6+zeros(1,C),[],[],options);
47 x = fminsearchbnd(@(X) objfun(X,M,
MMAP),ones(1,C),1e-6+zeros(1,C),[],options);
49 SCALED{2} = 0*SCALED{1};
51 SCALED{2+c} =
MMAP{2+c} * x(c);
52 SCALED{2} = SCALED{2} + SCALED{2+c};
54 SCALED = mmap_normalize(SCALED);
57 error(
'The input MMAP is invalid.');
62function f = objfun(x,M,
MMAP)
66SCALED{2} = 0*SCALED{1};
68 SCALED{2+c} =
MMAP{2+c} * x(c);
69 SCALED{2} = SCALED{2} + SCALED{2+c};
71SCALED = mmap_normalize(SCALED);
72l = mmap_count_lambda(SCALED);
74 f= f + norm((1/M(c))-l(c));