The field of automated plan generation has recently significantly advanced. However, while several powerful domain-independent planners have been developed, no one of these clearly outperforms all the others in every known benchmark domain. The performance of the current planning systems is typically affected by the structure of the search space, which depends on the considered planning domain. In many domains, the planning performance can be improved by deriving and exploiting knowledge about the domain structure that is not explicitly given in the input formalization. The type of knowledge to extract and the way for exploiting it, are currently very interesting topics for the Artificial Intelligence community. This thesis proposes some techniques for improving the performance of domain-independent planners through automatic algorithm configuration and machine learning. Specifically, the work has three main contributions. Firstly, we propose a technique for automatically configuring highly-parameterised planning algorithms. Secondly, we describe how to configure a portfolio of planners, and related macro actions, for a given input domain. Finally, we describe a method for exploiting automatic configuration and machine learning to improve the performance of optimal SAT-based planning systems. The techniques described in this thesis are implemented in three new planning systems. Respectively: ParLPG, PbP and MacroSatPlan. The results in the last two international planning competition and a large experimental evaluation, show that our approaches work well in practice.