Many combinatorial problems coming from the real world may not have a clear and well defined structure, typically being
dirtied by side constraints, or being composed of two or more sub-problems, usually not disjoint. Such problems are not
suitable to be solved with pure approaches based on a single programming paradigm, because a paradigm that can effectively
face a problem characteristic may behave inefficiently when facing other characteristics. In these cases, modelling the
problem using different programming techniques, trying to "take the best" from each technique, can produce solvers that
largely dominate pure approaches. We demonstrate the effectiveness of hybridization and we discuss about different
hybridization techniques by analyzing two classes of problems with particular structures, exploiting Constraint
Programming and Integer Linear Programming as solving tools and Algorithm Portfolios and Logic Based Benders Decomposition
as integration and hybridization frameworks.