LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
opt_pareto_frontier.m
1% opt_pareto_frontier Cost vs utilization-bound frontier via ParetoSweep
2% (epsilon-constraint method, bisection per point). Mirrors
3% opt_pareto_frontier.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, [], [], {}));
19
20factory = @(eps) opt.UtilizationConstraint(queue, eps);
21sweep = opt.ParetoSweep(problem, factory, [0.3 0.4 0.5 0.6 0.75 0.9], 'bisection');
22sweep.solve();
23
24fprintf('Utilization bound -> optimal cost (servers)\n');
25frontier = sweep.getFrontier();
26for i = 1:numel(frontier)
27 p = frontier{i};
28 fprintf(' util <= %-4g -> %6.1f (%d)\n', p.epsilon, p.objectiveValue, ...
29 p.result.getVariableValue('Server_servers'));
30end