Bilevel programming models for multi-product location problems