1% opt_service_rate Cheapest continuous service rate meeting a response-time
2% SLA on an M/M/1 (theory rate 5.0). Mirrors opt_service_rate.py.
5source = Source(model,
'Arrivals');
6queue = Queue(model,
'Server', SchedStrategy.FCFS);
7sink = Sink(model,
'Departures');
8jobs = OpenClass(model,
'Jobs');
9source.setArrival(jobs, Exp(3.0));
10queue.setService(jobs, Exp(4.0));
11model.link(Network.serialRouting(source, queue, sink));
13problem = opt.OptimizationProblem(model);
14problem.addVariable(opt.ServiceRate(queue, jobs, [3.5 8.0]));
15rateCost = containers.Map(
'KeyType',
'char',
'ValueType',
'double');
16rateCost(
'Server') = 20.0;
17problem.setObjective(opt.MinimizeCost([], rateCost, [], {}));
18problem.addConstraint(opt.ResponseTimeConstraint(queue, jobs, 0.5));
20options = opt.LineOptSolverOptions(); options.setSeed(42); options.setMaxIterations(60);
21result = problem.solve(options);
23fprintf(
'Optimal rate : %.3f (theory: 5.0)\n', result.getVariableValue(
'Server_Jobs_rate'));
24fprintf(
'Cost : %.1f\n', result.objectiveValue);
25fprintf(
'Feasible : %d\n', result.feasible);