LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
opt_server_sizing.m
1% opt_server_sizing Minimum servers of an M/M/c queue under a 50% utilization
2% SLA, via differential evolution. lambda=3, mu=1 -> optimum c*=6 (cost 60).
3% Mirrors python/examples/opt/opt_server_sizing.py.
4
5model = Network('MMc');
6source = Source(model, 'Arrivals');
7queue = Queue(model, 'Server', SchedStrategy.FCFS);
8sink = Sink(model, 'Departures');
9jobs = OpenClass(model, 'Jobs');
10source.setArrival(jobs, Exp(3.0));
11queue.setService(jobs, Exp(1.0));
12model.link(Network.serialRouting(source, queue, sink));
13
14problem = opt.OptimizationProblem(model);
15problem.addVariable(opt.ServerAllocation(queue, [1 10]));
16serverCost = containers.Map('KeyType','char','ValueType','double');
17serverCost('Server') = 10.0;
18problem.setObjective(opt.MinimizeCost(serverCost, [], [], {}));
19problem.addConstraint(opt.UtilizationConstraint(queue, 0.5));
20
21options = opt.LineOptSolverOptions(); options.setSeed(42);
22result = problem.solve(options);
23
24fprintf('Optimal servers : %d\n', result.getVariableValue('Server_servers'));
25fprintf('Cost : %.1f\n', result.objectiveValue);
26fprintf('Feasible : %d\n', result.feasible);
27fprintf('LINE evaluations: %d\n', result.modelEvaluations);