23,500 research outputs found

    Survey on Combinatorial Register Allocation and Instruction Scheduling

    Full text link
    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

    Get PDF
    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

    Full text link
    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
    • …
    corecore