|
1 | 1 | <section class="benchmark-charts" aria-label="<%= @problem.fetch('title') %> summary charts"> |
2 | | - <p class="benchmark-charts__ranking">Winner first at the <%= budgets.max %>-second budget: feasibility → time to viable → quality.</p> |
| 2 | + <p class="benchmark-charts__ranking">Each budget has its own winner-first ranking: feasibility → time to viable → quality.</p> |
3 | 3 | <div class="benchmark-charts__legend"> |
4 | 4 | <% budgets.each do |budget| %> |
5 | 5 | <span class="benchmark-charts__legend-item"> |
|
17 | 17 | <h3>Feasible results</h3> |
18 | 18 | <p>Instances solved to a hard-feasible solution, out of <%= total_instances %>.</p> |
19 | 19 | </figcaption> |
20 | | - <ol class="benchmark-chart__rows"> |
21 | | - <% solvers.each do |solver| %> |
| 20 | + <div class="benchmark-chart__budgets"> |
| 21 | + <% budgets.each do |budget| %> |
| 22 | + <div class="benchmark-chart__budget" data-budget="<%= budget %>"> |
| 23 | + <h4><%= budget %>-second budget</h4> |
| 24 | + <ol class="benchmark-chart__rows"> |
| 25 | + <% solvers(budget).each do |solver| %> |
22 | 26 | <li class="benchmark-chart__row<%= ' benchmark-chart__row--solverforge' if solverforge?(solver) %>"> |
23 | 27 | <span class="benchmark-chart__label"><%= solver %></span> |
24 | 28 | <span class="benchmark-chart__bars"> |
25 | | - <% budgets.each do |budget| %> |
26 | 29 | <% row = summary(budget, solver) %> |
27 | 30 | <% percent = feasible_percent(row) %> |
28 | 31 | <span |
|
40 | 43 | <span class="benchmark-chart__bar benchmark-chart__bar--missing" data-benchmark-missing="true"></span> |
41 | 44 | <% end %> |
42 | 45 | </span> |
43 | | - <% end %> |
44 | 46 | </span> |
45 | 47 | <span class="benchmark-chart__value"> |
46 | | - <% budgets.each do |budget| %> |
47 | 48 | <% row = summary(budget, solver) %> |
48 | 49 | <span><small><%= budget %>s</small> <%= row ? "#{row.fetch('feasible')}/#{row.fetch('total')}" : "—" %></span> |
49 | | - <% end %> |
50 | 50 | </span> |
51 | 51 | </li> |
52 | 52 | <% end %> |
53 | | - </ol> |
| 53 | + </ol> |
| 54 | + </div> |
| 55 | + <% end %> |
| 56 | + </div> |
54 | 57 | </figure> |
55 | 58 |
|
56 | 59 | <%# Then time to a viable solution. Read after feasibility and before |
|
73 | 76 | <% end %> |
74 | 77 | </figcaption> |
75 | 78 | <% if drawable_times? %> |
76 | | - <ol class="benchmark-chart__rows"> |
77 | | - <% solvers.each do |solver| %> |
| 79 | + <div class="benchmark-chart__budgets"> |
| 80 | + <% budgets.each do |budget| %> |
| 81 | + <div class="benchmark-chart__budget" data-budget="<%= budget %>"> |
| 82 | + <h4><%= budget %>-second budget</h4> |
| 83 | + <ol class="benchmark-chart__rows"> |
| 84 | + <% solvers(budget).each do |solver| %> |
78 | 85 | <li class="benchmark-chart__row<%= ' benchmark-chart__row--solverforge' if solverforge?(solver) %>"> |
79 | 86 | <span class="benchmark-chart__label"><%= solver %></span> |
80 | 87 | <span class="benchmark-chart__bars"> |
81 | | - <% budgets.each do |budget| %> |
82 | 88 | <% row = summary(budget, solver) %> |
83 | 89 | <% seconds = feasible_seconds(row) %> |
84 | 90 | <% fill_percent = fill(seconds, max_feasible_seconds) %> |
|
96 | 102 | <span class="benchmark-chart__bar benchmark-chart__bar--missing" data-benchmark-missing="true"></span> |
97 | 103 | <% end %> |
98 | 104 | </span> |
99 | | - <% end %> |
100 | 105 | </span> |
101 | 106 | <span class="benchmark-chart__value"> |
102 | | - <% budgets.each do |budget| %> |
103 | 107 | <% row = summary(budget, solver) %> |
104 | 108 | <span><small><%= budget %>s</small> <%= row && row['mean_feasible_seconds'] ? format('%.2f s', row['mean_feasible_seconds']) : "—" %></span> |
105 | | - <% end %> |
106 | 109 | </span> |
107 | 110 | </li> |
108 | 111 | <% end %> |
109 | | - </ol> |
| 112 | + </ol> |
| 113 | + </div> |
| 114 | + <% end %> |
| 115 | + </div> |
110 | 116 | <% end %> |
111 | 117 | </figure> |
112 | 118 |
|
|
131 | 137 | <% end %> |
132 | 138 | </figcaption> |
133 | 139 | <% if drawable_gaps? %> |
134 | | - <ol class="benchmark-chart__rows"> |
135 | | - <% solvers.each do |solver| %> |
| 140 | + <div class="benchmark-chart__budgets"> |
| 141 | + <% budgets.each do |budget| %> |
| 142 | + <div class="benchmark-chart__budget" data-budget="<%= budget %>"> |
| 143 | + <h4><%= budget %>-second budget</h4> |
| 144 | + <ol class="benchmark-chart__rows"> |
| 145 | + <% solvers(budget).each do |solver| %> |
136 | 146 | <li class="benchmark-chart__row<%= ' benchmark-chart__row--solverforge' if solverforge?(solver) %>"> |
137 | 147 | <span class="benchmark-chart__label"><%= solver %></span> |
138 | 148 | <span class="benchmark-chart__bars"> |
139 | | - <% budgets.each do |budget| %> |
140 | 149 | <% row = summary(budget, solver) %> |
141 | 150 | <% gap = gap_percent(row) %> |
142 | 151 | <% fill_percent = fill(gap, max_gap) %> |
|
154 | 163 | <span class="benchmark-chart__bar benchmark-chart__bar--missing" data-benchmark-missing="true"></span> |
155 | 164 | <% end %> |
156 | 165 | </span> |
157 | | - <% end %> |
158 | 166 | </span> |
159 | 167 | <span class="benchmark-chart__value"> |
160 | | - <% budgets.each do |budget| %> |
161 | 168 | <% row = summary(budget, solver) %> |
162 | 169 | <span><small><%= budget %>s</small> <%= row && row['gap_percent'] ? format('%.2f%%', row['gap_percent']) : "—" %></span> |
163 | | - <% end %> |
164 | 170 | </span> |
165 | 171 | </li> |
166 | 172 | <% end %> |
167 | | - </ol> |
| 173 | + </ol> |
| 174 | + </div> |
| 175 | + <% end %> |
| 176 | + </div> |
168 | 177 | <% end %> |
169 | 178 | </figure> |
170 | 179 | </div> |
|
0 commit comments