A Genetic Algorithm for a Multi-product Dynamic Lot-Sizing and Dispatching Problem with Delivery Time Windows and Multi-vehicle Types