A production system involves constant and numerous decisions that greatly impact its performances. Our team develops the methods to help engineers to make the best choices when designing or using production systems. Such systems range from a simple machine on a production line to a complete logistic platform with many interacting industrial partners. We show that optimization is playing a key role for specific elements of these systems. We work at establishing the complexity of these problems before building models and dedicated solving methods relying on discrete mathematics and operations research. More precisely, the approaches we propose are often based on graph theory, linear programming, meta-heuristics, dynamic programming or constraint programming.