23,500 research outputs found
Survey on Combinatorial Register Allocation and Instruction Scheduling
Register allocation (mapping variables to processor registers or memory) and
instruction scheduling (reordering instructions to increase instruction-level
parallelism) are essential tasks for generating efficient assembly code in a
compiler. In the last three decades, combinatorial optimization has emerged as
an alternative to traditional, heuristic algorithms for these two tasks.
Combinatorial optimization approaches can deliver optimal solutions according
to a model, can precisely capture trade-offs between conflicting decisions, and
are more flexible at the expense of increased compilation time.
This paper provides an exhaustive literature review and a classification of
combinatorial optimization approaches to register allocation and instruction
scheduling, with a focus on the techniques that are most applied in this
context: integer programming, constraint programming, partitioned Boolean
quadratic programming, and enumeration. Researchers in compilers and
combinatorial optimization can benefit from identifying developments, trends,
and challenges in the area; compiler practitioners may discern opportunities
and grasp the potential benefit of applying combinatorial optimization
Optimized shunting with mixed-usage tracks
We consider the planning of railway freight classification at hump yards, where the problem
involves the formation of departing freight train blocks from arriving trains subject to
scheduling and capacity constraints. The hump yard layout considered consists of arrival
tracks of sufficient length at an arrival yard, a hump, classification tracks of non-uniform
and possibly non-sufficient length at a classification yard, and departure tracks of sufficient
length. To increase yard capacity, freight cars arriving early can be stored temporarily
on specific mixed-usage tracks. The entire hump yard planning process is covered in this
paper, and heuristics for arrival and departure track assignment, as well as hump scheduling,
have been included to provide the neccessary input data. However, the central problem
considered is the classification track allocation problem. This problem has previously
been modeled using direct mixed integer programming models, but this approach did not
yield lower bounds of sufficient quality to prove optimality. Later attempts focused on
a column generation approach based on branch-and-price that could solve problem instances
of industrial size. Building upon the column generation approach we introduce
a direct arc-based integer programming model, where the arcs are precedence relations
between blocks on the same classification track. Further, the most promising models
are adapted for rolling-horizon planning. We evaluate the methods on historical data
from the Hallsberg shunting yard in Sweden. The results show that the new arc-based
model performs as well as the column generation approach. It returns an optimal schedule
within the execution time limit for all instances but from one, and executes as fast
as the column generation approach. Further, the short execution times of the column
generation approach and the arc-indexed model make them suitable for rolling-horizon
planning, while the direct mixed integer program proved to be too slow for this.
Extended analysis of the results shows that mixing was only required if the maximum
number of concurrent trains on the classification yard exceeds 29 (there are 32 available
tracks), and that after this point the number of extra car roll-ins increases heavily
Algorithm Engineering in Robust Optimization
Robust optimization is a young and emerging field of research having received
a considerable increase of interest over the last decade. In this paper, we
argue that the the algorithm engineering methodology fits very well to the
field of robust optimization and yields a rewarding new perspective on both the
current state of research and open research directions.
To this end we go through the algorithm engineering cycle of design and
analysis of concepts, development and implementation of algorithms, and
theoretical and experimental evaluation. We show that many ideas of algorithm
engineering have already been applied in publications on robust optimization.
Most work on robust optimization is devoted to analysis of the concepts and the
development of algorithms, some papers deal with the evaluation of a particular
concept in case studies, and work on comparison of concepts just starts. What
is still a drawback in many papers on robustness is the missing link to include
the results of the experiments again in the design
- …