SlideShare a Scribd company logo
1 of 15
Download to read offline
Optimization Models
FALL 2019
Project Report On:
Transportation Company Case Study
27th
November 2019
Author
Yashwanth Kumar Y
INTRODUCTION
A transportation company is evaluating a prototype system that combines trucks and
drones for last-mile delivery services. The test run considers a set of orders that must be
delivered to known locations. A delivery truck starts from a depot and visits โ€œlaunch sitesโ€
corresponding to the customers locations. From each launch site, the truck deploys a series
of drones that deliver the orders and return to meet the truck at the launch site. Once all
the drones are recovered, the truck moves to the next launch site and repeats the process
until all orders are delivered.
The project is aimed at finding the most cost-efficient route for the trucks and the drones.
The number of drones were varied between iterations to include 1, 2 and 3 drones as viable
options to test how this changes the cost and routes. A linear mixed integer programming
approach was taken to achieve the same, with the code tested and results obtained through
FICO Xpress IVE software. This report elucidates the model that was built with the sets,
decisions and constraints, the iterations on a dataset with varying truck and dronesโ€™
combination and the summary of iterations that test the model algorithm on different
datasets. A simple cost sensitivity analysis was also performed to check how the routes and
decisions change based on changing the cost to serve a customer.
MODELING
The problem can be modeled as a linear mixed integer solution. The main datasets we have
are the total number of customer nodes, the set of drones as we need to formulate a
decision arc for each of them. For the purpose of breaking loops, we have used the MTZ
formulation, because of which, we have mimicked the depot as 2 more nodes as a virtual
customer node โ€“ a start depot node from which the truck starts, and an end depot node at
which the truck finishes it journey.
The decisions we would have to take involve choosing whether a node has to be delivered
by the truck or by a drone, based on which, we would have to decide from where does the
delivery medium arrive at the node and where it goes to next (incoming and outgoing arc).
We also need to know the order in which the customers are being delivered.
The key information that is necessary for this model includes the distance between each
node (including the customer and the depot) and the cost to serve the customer by the
truck or the drone. The objective of the solution is to come up with the most optimal set of
travel path for the truck and drone that serves every customer at the least cost possible.
The constraints for the same are elucidated in the problem description.
The formulation can be found below -
SETS
โ€ข Set of total nodes - Nodes = {1, totalCust} index i
โ€ข Set of customer nodes - customerNodes = {} index j
โ€ข Set of drones โ€“ drones = {} index k
DECISION VARIABLES
โ€ข truckArci,j : {
1 ๐‘–๐‘“ ๐‘‘๐‘’๐‘๐‘–๐‘ ๐‘–๐‘œ๐‘› ๐‘–๐‘  ๐‘ก๐‘œ ๐‘ก๐‘Ÿ๐‘Ž๐‘ฃ๐‘’๐‘™ ๐‘๐‘’๐‘ก๐‘ค๐‘’๐‘’๐‘› ๐‘–, ๐‘— โˆˆ Nodes ๐‘๐‘ฆ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜
0 ๐‘œ๐‘กโ„Ž๐‘’๐‘Ÿ๐‘ค๐‘–๐‘ ๐‘’
โ€ข droneArci,j,k : {
1 ๐‘–๐‘“ ๐‘‘๐‘’๐‘๐‘–๐‘ ๐‘–๐‘œ๐‘› ๐‘–๐‘  ๐‘ก๐‘œ ๐‘ก๐‘Ÿ๐‘Ž๐‘ฃ๐‘’๐‘™ ๐‘๐‘’๐‘ก๐‘ค๐‘’๐‘’๐‘› ๐‘–, ๐‘— โˆˆ Nodes using k โˆˆ drones
0 ๐‘œ๐‘กโ„Ž๐‘’๐‘Ÿ๐‘ค๐‘–๐‘ ๐‘’
โ€ข truckNodei : {
1 ๐‘–๐‘“ ๐‘– โˆˆ Nodes is visited by the truck
0 ๐‘œ๐‘กโ„Ž๐‘’๐‘Ÿ๐‘ค๐‘–๐‘ ๐‘’
โ€ข droneNodei : {
1 ๐‘–๐‘“ ๐‘– โˆˆ Nodes is visited by a drone
0 ๐‘œ๐‘กโ„Ž๐‘’๐‘Ÿ๐‘ค๐‘–๐‘ ๐‘’
โ€ข positioni : The position of the customer i โˆˆ Nodes to be delivered by truck or drone
DATA
โ€ข distancei,j : Distance between i,j โˆˆ Nodes
โ€ข costTruck : Cost for each distance unit travelled by Truck
โ€ข costDrone : Cost for each distance unit travelled by Drone
โ€ข totalCustomers : The number of customers in the delivery iteration
OBJECTIVE
min ((โˆ‘ โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘(๐‘–, ๐‘—) โˆ— ๐‘‘๐‘–๐‘ ๐‘ก๐‘Ž๐‘›๐‘๐‘’(๐‘–, ๐‘—) โˆ— ๐‘๐‘œ๐‘ ๐‘ก๐‘‡๐‘Ÿ๐‘ข๐‘๐‘˜๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  ) +
(โˆ‘ โˆ‘ โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘(๐‘–, ๐‘—, ๐‘˜) โˆ— ๐‘‘๐‘–๐‘ ๐‘ก๐‘Ž๐‘›๐‘๐‘’(๐‘–, ๐‘—) โˆ— 2 โˆ— ๐‘๐‘œ๐‘ ๐‘ก๐ท๐‘Ÿ๐‘œ๐‘›๐‘’๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  )
CONSTRAINTS
โ€ข Truck leaves the start depot exactly once to some other customer node
โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘(1, ๐‘—) = 1๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  1
โ€ข No travel can end at the start depot node
โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, 1) = 0๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  2
โ€ข Truck reaches the end depot from exactly one other customer node
โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘  + 2) = 1๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  3
โ€ข No travel can start at the end depot node
โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐‘๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘  + 2, ๐‘—) = 0๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  4
โ€ข There can be only 1 outgoing truck movement for each customer node
โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—) = 1 โˆ— ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆ€๐‘– โˆˆ ๐‘๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  5
โ€ข There can be only 1 incoming truck movement for each customer node
โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—) = 1 โˆ— ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘—) โˆ€๐‘— โˆˆ ๐‘๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  6
โ€ข No drone can be launched from the start depot
โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘(1, ๐‘—, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  7
โ€ข No drone can land at the start depot node
โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, 1, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  8
โ€ข No drone can land at the end depot node
โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  9
โ€ข No drone can start from the end depot node
โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2, ๐‘—, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  10
โ€ข A customer node can either be delivered by a drone or the truck
๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) + ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘๐‘œ๐‘‘๐‘’( ๐‘–) = 1 โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  11
โ€ข A drone is allowed to start from a customer node only if it is served by the truck
โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜) โ‰ค ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  12
โ€ข Only one drone can visit a customer from a truck node
โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜) โ‰ค 1 โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘— โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  13
โ€ข If a node is selected to be delivered by a drone, it can have only one incoming travel
โˆ‘ โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜) = 1 โˆ— ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘๐‘œ๐‘‘๐‘’( ๐‘—) โˆ€๐‘— โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  14
โ€ข The start depot and the end depot are the 1st
and the last customers to be delivered
๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›(1) = 1 15
๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›( ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2) = ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2 16
โ€ข MTZ customer position constraint
๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›(๐‘—) โ‰ฅ ๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›(๐‘–) + 1 + โˆ‘ โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘(๐‘–, ๐‘—, ๐‘˜)๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘›๐‘œ๐‘‘๐‘’๐‘  โˆ’ ๐‘€ โˆ— (1 โˆ’ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘(๐‘–, ๐‘—)) 17
โ€ข No customer should be selected as the origin and destination at the same time for
truck or drone travel
๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–) = 0 โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘  18
๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–, ๐‘˜) = 0 โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  19
โ€ข The decision variables for truck and drone travel arcs are binary variables
๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–) โˆˆ [0,1] โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘  20
๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–, ๐‘˜) โˆˆ [0,1] โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  21
โ€ข The decision variables for choosing if a node is to be visited by a truck or a drone are
binary variables
๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆˆ [0,1]โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  22
๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆˆ [0,1]โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  23
โ€ข The decision variable that holds the position of the customer is an integer variable
๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›( ๐‘–) = ๐›ง+
โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  24
COMPLETE MODEL
min ((โˆ‘ โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘(๐‘–, ๐‘—) โˆ— ๐‘‘๐‘–๐‘ ๐‘ก๐‘Ž๐‘›๐‘๐‘’(๐‘–, ๐‘—) โˆ— ๐‘๐‘œ๐‘ ๐‘ก๐‘‡๐‘Ÿ๐‘ข๐‘๐‘˜๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  ) +
(โˆ‘ โˆ‘ โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘(๐‘–, ๐‘—, ๐‘˜) โˆ— ๐‘‘๐‘–๐‘ ๐‘ก๐‘Ž๐‘›๐‘๐‘’(๐‘–, ๐‘—) โˆ— 2 โˆ— ๐‘๐‘œ๐‘ ๐‘ก๐ท๐‘Ÿ๐‘œ๐‘›๐‘’๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  )
s.t
โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘(1, ๐‘—) = 1
๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ 
1
โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, 1) = 0
๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ 
2
โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘  + 2) = 1
๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ 
3
โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐‘๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘  + 2, ๐‘—) = 0
๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ 
4
โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—) = 1 โˆ— ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆ€๐‘– โˆˆ ๐‘๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘๐‘œ๐‘‘๐‘’๐‘ 
๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ 
5
โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—) = 1 โˆ— ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘—) โˆ€๐‘— โˆˆ ๐‘๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘๐‘œ๐‘‘๐‘’๐‘ 
๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ 
6
โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘(1, ๐‘—, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ 
๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ 
7
โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, 1, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ 
๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ 
8
โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ 
๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ 
9
โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2, ๐‘—, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ 
๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ 
10
๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) + ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘๐‘œ๐‘‘๐‘’( ๐‘–) = 1 โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  11
โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜) โ‰ค ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ 
๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ 
12
โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜) โ‰ค 1 โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘— โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ 
๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ 
13
โˆ‘ โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜) = 1 โˆ— ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘๐‘œ๐‘‘๐‘’( ๐‘—) โˆ€๐‘— โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ 
๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ 
14
๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›(1) = 1 15
๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›( ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2) = ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2 16
๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›( ๐‘—) โ‰ฅ ๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›( ๐‘–) + 1 + โˆ‘ โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜))
๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘›๐‘œ๐‘‘๐‘’๐‘ 
โˆ’ ๐‘€ โˆ— (1 โˆ’ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—)) 17
๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–) = 0 โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘  18
๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–, ๐‘˜) = 0 โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  19
๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–) โˆˆ [0,1] โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘  20
๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–, ๐‘˜) โˆˆ [0,1] โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  21
๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆˆ [0,1]โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  22
๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆˆ [0,1]โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  23
๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›( ๐‘–) = ๐›ง+
โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  24
SOLUTION
In the visualizations below, the truck path and the drone path are shown in different
colours. The cost of the route is mentioned and the travel arcs are displayed as a sequence
of nodes as {Depot->Node1->Node2->โ€ฆ.->Depot}, while each drone path is shown as a set
of triples such as {(StartNode->DroneNode->StartNode,โ€ฆ)}. The cost of the truck is $10/unit
and the cost for a drone is $3/unit
Simulation 1
This solution includes 15 customer nodes that were generated randomly, with the cost to
serve for truck as 10/unit distance and for the drone as 3/unit distance. The simulated data
and a simple delivery route solution including only the single truck is shown below.
Cost = $5510
Truck Route = {Depot->15->12->14->11->16->13->10->9->6->8->5->7->3->4->2->Depot}
The solution for the same set of customers for different drone iterations are elaborated
below.
Case 1 โ€“ 1 Truck, 1 Drones
Cost = $4788
Truck Route = {Depot->15->12->14->16->10->7->5->4->2->Depot}
Drone Route = {(14->11->14), (16->13->16), (10->9->10), (7->6->7), (5->8->5), (4->3->4)}
Case 2 โ€“ 1 Truck, 2 Drones
Cost = $4710
Truck Route = {Depot->2->4->5->7->10->16->14->12->15->Depot}
Drone 1 Routes = {(5->6->5), (10->9->10), (16->13->16), (14->11->11)}
Drone 2 Routes = {(5->8->5)}
Case 3 โ€“ 1 Truck, 3 Drones
Cost = $4618
Truck Route = {Depot->2->4->5->10->7->3->12->15->Depot}
Drone 1 Routes = {(5->8->5), (10->9->10), (12->14->12)
Drone 2 Routes = {(5->6->5), (10->13->10), (12->11->12)}
Drone 3 Routes = {(10,16,10)}
Simulation 2
The data present as example in the problem statement was used to see how the solution
comes out based on the suggested methodology. This contains again of 15 customer nodes,
and the cost remains the same as before.
Case 1 โ€“ 1 Truck, 2 Drones
Cost = $3230
Truck Route = {Depot->2->3->4->8->9->11->7->13->12->Depot}
Drone 1 Routes = {(4->5->4), (8->6->8), (9->10->9), (11->16->11), (13->14->13)}
Drone 2 Routes = {(13->15->13)}
Case 2 โ€“ 1 Truck, 3 Drones
Cost = $3218
Truck Route = {Depot->12->7->11->9->8->4->3->2->Depot}
Drone 1 Routes = {(4->5->4), (8->6->8), (9->10->9), (11->16->11), (12->13->12)}
Drone 2 Routes = {(12->14->12)}
Drone 3 Routes = {(12->15->12)}
Simulation 3
An iteration was also run using 20 customer nodes, the result of which is summarized
below.
COST SENSITIVITY ANALYSIS
Using the same dataset used in the simulation above, 2 variations were run with respect to
the cost to serve. In the first iteration, the cost to serve the customer using the drone was
changed to $4/unit distance, keeping the truck cost the same. In the second iteration, the
NumberofCustomers NumberofDrones ObjectiveAchieved BestBound TruckNodes Drone Path
20 2 3432 2999 13 7
Truck(Depot-8-5-13-15-10-21-14-6-4-17-7-9-12-Depot)
Drone1=((4,3,4),(7,2,7),(12,11,12),(14,16,14),(15,19,15))
Drone2=((7,18,7),(14,20,14))
20 3 3462 2914 10 10
Truck=(Depot-8-5-13-15-21-14-4-17-9-12-Depot)
Drone1=((4,3,4),(12,11,12),(14,6,14),(15,10,15),(17,2,17),(21,20,21))
Drone2=((14,16,14),(15,19,15),(17,7,17)))
Drone3=((17,18,17))
cost to serve the customer using the truck was changed to $15/unit distance, keeping the
drone cost the same. The results are shown below.
Simulation 1 โ€“ 1 Truck 1 Drone
Case 1 โ€“ Truck @ $10/unit distance, Drone @ 4/unit distance
Truck Route = {Depot->2->4->->8->->5->7->10->16->14->12->15->Depot}
Drone Routes = {(4->3->4), (8->6->8), (10->9->10), (16->13->16), (14->11->14)}
Case 2 โ€“ Truck @ $15/unit distance, Drone @ 3/unit distance
Truck Route = {Depot->2->4->5->7->10->16->14->12->15->Depot}
Drone Routes = {(4->3->4), (5->8->5), (7->6->7), (10->9->10), (16->13>16), (14->11->14)}
Simulation 2 โ€“ 1 Truck, 2 Drones
Case 1 โ€“ Truck @ $10/unit distance, Drone @ 4/unit distance
Truck Route = {Depot->2->4->3->5->7->10->16->14->12->15->Depot}
Drone 1 Routes = {(5->8->5), (10->9->10), (16->13->16), (14->11->14)}
Drone 2 Routes = {(5,6,5)}
Case 2 โ€“ Truck @ $15/unit distance, Drone @ 3/unit distance
Truck Route = {Depot->2->4->5->7->10->3->12->15->Depot}
Drone 1 Routes = {(4->8->4), (5->6->5), (7->10->7), (3->16->3), (12->14->12)}
Simulation 3 โ€“ 1 Truck, 3 Drones
Case 1 โ€“ Truck @ $10/unit distance, Drone @ 4/unit distance, the solution is same as above
Case 2 โ€“ Truck @ $15/unit distance, Drone @ 3/unit distance
Truck Route = {Depot->15->3->7->5->4->2->Depot}
Drone 1 Routes = {(3->12->3), (7->16->7), (5->9->5)}
Drone 2 Routes = {(3->11->3), (7->13->7), (5->6->5)}
Drone 3 Routes = {(3->14->3), (7->10->7), (5->8->5)}
CONCLUSION
Running the algorithm through different datasets and different cost structures, we can
safely conclude that -
โ€ข We notice that as the number of drones used increases, the overall cost is further
optimized, but this comes with some computational overhead.
โ€ข The algorithm performs well for spread out nodes, effectively deploying drones from
the appropriate customer node, but minimizes the drones when the spread is small.
โ€ข When we increase the truck cost, the algorithm corrects itself to launch more drones
to further away customers, forming a close truck loop.
โ€ข When the cost of drone is increased, there is no significant difference in the model
results, although the number of drones were lesser than the previous iteration.
APPENDIX
Code -
!@encoding CP1252
model ModelName
uses "mmxprs"; !gain access to the Xpress-Optimizer solver
setparam("XPRS_MAXTIME", 900)
declarations
nodes = 1..17 !All nodes including start and end
customerNodes = 2..16 !Customer nodes without start and end
drones = 1..3
! Binary variable for checking truck takes arc
truckArc : array(nodes, nodes) of mpvar
droneArc : array(nodes, nodes, drones) of mpvar !MN
! Distance arc
distance: array(nodes, nodes) of integer
!Position
position : array(nodes) of mpvar
!Inserted by MN
!Truck node or drone node
truckNode : array(nodes) of mpvar
droneNode : array(nodes) of mpvar
!Cost for truck
costTruck : real !Cost per unit for truck travel
bigMNumber : real !Just a big big number
costDrone : real !Cost per unit for drone travel
totalCustomer : integer
end-declarations
!Data Declarations
costTruck := 10
costDrone := 3
initializations from 'D:AcademiaGrad - UC MSBANAFall 19BANA 7020
OptimizationProjectCodesDataInPDF.txt'
distance
end-initializations
!Initializing a big big number
bigMNumber := 10000
totalCustomer := 15
!Making the decision variables binary - for Truck arcs
forall(startNode in nodes, endNode in nodes) truckArc(startNode, endNode) is_binary
!Making the decision variables binary - for Drone arcs - MN
forall(startNode in nodes, endNode in nodes, drone in drones) droneArc(startNode,
endNode, drone) is_binary
!Making truckNode and droneNode decision variables - MN
forall (customerNode in nodes) truckNode(customerNode) is_binary
forall (customerNode in nodes) droneNode(customerNode) is_binary
!Making the position an integer array
forall(node in nodes) position(node) is_integer
!Objective Function
obj :=
(sum(startNode in nodes, endNode in nodes)
(truckArc(startNode, endNode) * distance(startNode, endNode) * costTruck) +
sum(startNode in nodes, endNode in nodes, drone in drones)
(droneArc(startNode, endNode, drone) * distance(startNode, endNode) *
2*costDrone))
!Constraints
!Truck related constraints
!Truck leaves depot exactly once to some other node
sum(endNode in nodes) truckArc(1, endNode) = 1
!No node can end at the Depot node
sum(startNode in nodes) truckArc(startNode, 1) = 0
!Truck reaches the depot from exactly one other node
sum(startNode in nodes) truckArc(startNode, totalCustomer + 2) = 1
!No node can start at the End Depot node
sum(endNode in nodes) truckArc(totalCustomer + 2,endNode) = 0
!Only one arc can be travelled from some arc | outgoing for all nodes is 1
forall(customerNode in customerNodes)
sum(endNode in nodes) truckArc(customerNode, endNode) = 1 *
truckNode(customerNode)
!Only one arc can be travelled from some arc | incoming for all nodes is 1
forall(customerNode in customerNodes)
sum(startNode in nodes) truckArc(startNode, customerNode) = 1 *
truckNode(customerNode)
! No node should be selected as both origin and destination at same time
forall(node in nodes) truckArc(node,node) = 0
forall(node in nodes, drone in drones) droneArc(node,node, drone) = 0
truckArc(1,totalCustomer+2) = 0
!Drone related constraints -MN
!Drone cannot be launched from the Depot node
forall(drone in drones)
sum(endNode in nodes) droneArc(1, endNode, drone) = 0
!Drone node cannot end at the Depot Node
forall(drone in drones)
sum(startNode in nodes) droneArc(startNode, 1, drone) = 0
!Drone cannot land at the Depot node
forall(drone in drones)
sum(startNode in nodes) droneArc(startNode, totalCustomer + 2, drone) = 0
!No node can start at the End Depot node
forall(drone in drones)
sum(endNode in nodes) droneArc(totalCustomer + 2,endNode, drone) = 0
!A customer node can be either drone node or truck node
forall(node in nodes)
truckNode(node) + droneNode(node) = 1
!An arc can be either truck arc or drone arc or neither
!forall(startNode in nodes)
! sum(endNode in nodes, drone in drones) droneArc(startNode, endNode, drone) <=
2*truckNode(startNode)
forall(startNode in nodes, drone in drones)
sum(endNode in nodes) droneArc(startNode, endNode, drone) <=
truckNode(startNode)
forall(startNode in nodes, endNode in nodes)
sum(drone in drones) droneArc(startNode, endNode, drone) <= 1
forall(endNode in nodes)
sum(startNode in nodes, drone in drones) droneArc(startNode, endNode, drone) =
1*droneNode(endNode)
!Breaking Loops
position(1) = 1
position(totalCustomer + 2) = totalCustomer+2
!MTZ position constraint
forall(startNode in nodes) forall(endNode in nodes)
(position(endNode) >= ((position(startNode) + 1) + (sum(node in nodes, drone in
drones)droneArc(startNode, node, drone)) - (bigMNumber * (1 - truckArc(startNode,
endNode)))))
minimize(obj)
writeln("Begin running model")
writeln("n Total Cost : ", getobjval)
forall(startNode in nodes, endNode in nodes|getsol(truckArc(startNode,
endNode))>0)
writeln("Truck","Start Node: ", startNode, ", EndNode: ", endNode, " - Travel :
", getsol(truckArc(startNode, endNode)))
forall(startNode in nodes, endNode in nodes, drone in
drones|getsol(droneArc(startNode, endNode, drone))>0)
writeln("Drone", drone ," Start Node: ", startNode, ", EndNode: ", endNode, "
- Travel : ", getsol(droneArc(startNode, endNode, drone)))
forall(node in nodes) writeln("Customer Node ", node," ", getsol(truckNode(node)),"
",getsol(droneNode(node)))
!forall(node in nodes) writeln(getsol(position(node)))
writeln("End running model")
end-model

More Related Content

Similar to Transportation Co Optimization Models Project

Reinforcement Learning for EVRP with V2G
Reinforcement Learning for EVRP with V2GReinforcement Learning for EVRP with V2G
Reinforcement Learning for EVRP with V2GPrasant Misra
ย 
A Dynamic Logistic Dispatching System With Set-Based Particle Swarm Optimization
A Dynamic Logistic Dispatching System With Set-Based Particle Swarm OptimizationA Dynamic Logistic Dispatching System With Set-Based Particle Swarm Optimization
A Dynamic Logistic Dispatching System With Set-Based Particle Swarm OptimizationRajib Roy
ย 
ESCC 2016, July 10-16, Athens, Greece
ESCC 2016, July 10-16, Athens, GreeceESCC 2016, July 10-16, Athens, Greece
ESCC 2016, July 10-16, Athens, GreeceLIFE GreenYourMove
ย 
Establishing Line-of-Sight Communication Via Autonomous Relay Vehicles
Establishing Line-of-Sight Communication Via Autonomous Relay VehiclesEstablishing Line-of-Sight Communication Via Autonomous Relay Vehicles
Establishing Line-of-Sight Communication Via Autonomous Relay VehiclesMd Mahbubur Rahman
ย 
Presentation escc 2016
Presentation escc 2016Presentation escc 2016
Presentation escc 2016LIFE GreenYourMove
ย 
Presentation of GreenYourMove's hybrid approach in 3rd International Conferen...
Presentation of GreenYourMove's hybrid approach in 3rd International Conferen...Presentation of GreenYourMove's hybrid approach in 3rd International Conferen...
Presentation of GreenYourMove's hybrid approach in 3rd International Conferen...GreenYourMove
ย 
Vehicle Routing Problem using PSO (Particle Swarm Optimization)
Vehicle Routing Problem using PSO (Particle Swarm Optimization)Vehicle Routing Problem using PSO (Particle Swarm Optimization)
Vehicle Routing Problem using PSO (Particle Swarm Optimization)Niharika Varshney
ย 
Multi-Vehicle Path Planning In Dynamically Changing Environments - 2012-11-19
Multi-Vehicle Path Planning In Dynamically Changing Environments - 2012-11-19Multi-Vehicle Path Planning In Dynamically Changing Environments - 2012-11-19
Multi-Vehicle Path Planning In Dynamically Changing Environments - 2012-11-19Aritra Sarkar
ย 
Recent Research for IISE Conference
Recent Research for IISE ConferenceRecent Research for IISE Conference
Recent Research for IISE ConferenceRichard Alaimo
ย 
Cs403 Parellel Programming Travelling Salesman Problem
Cs403   Parellel Programming Travelling Salesman ProblemCs403   Parellel Programming Travelling Salesman Problem
Cs403 Parellel Programming Travelling Salesman ProblemJishnu P
ย 
Mixed Integer Linear Programming Formulation for the Taxi Sharing Problem
Mixed Integer Linear Programming Formulation for the Taxi Sharing ProblemMixed Integer Linear Programming Formulation for the Taxi Sharing Problem
Mixed Integer Linear Programming Formulation for the Taxi Sharing Problemjfrchicanog
ย 
3 Vehicle Class Write a fully documented class named Vehicl.pdf
3 Vehicle Class Write a fully documented class named Vehicl.pdf3 Vehicle Class Write a fully documented class named Vehicl.pdf
3 Vehicle Class Write a fully documented class named Vehicl.pdfabhishekcctv
ย 
3 Vehicle Class Write a fully documented class named Vehicl.pdf
3 Vehicle Class Write a fully documented class named Vehicl.pdf3 Vehicle Class Write a fully documented class named Vehicl.pdf
3 Vehicle Class Write a fully documented class named Vehicl.pdfVANDANASINHACONSULT
ย 
A feasible solution algorithm for a primitive vehicle routing problem
A feasible solution algorithm for a primitive vehicle routing problemA feasible solution algorithm for a primitive vehicle routing problem
A feasible solution algorithm for a primitive vehicle routing problemCem Recai ร‡ฤฑrak
ย 
How much time will be used for driving
How much time will be used for drivingHow much time will be used for driving
How much time will be used for drivingRuo Yang
ย 
Cab travel time prediction using ensemble models
Cab travel time prediction using ensemble modelsCab travel time prediction using ensemble models
Cab travel time prediction using ensemble modelsAyan Sengupta
ย 
1. BooleanSourceHW4 classpublic BooleanSourceHW4(double initProbab.pdf
1. BooleanSourceHW4 classpublic BooleanSourceHW4(double initProbab.pdf1. BooleanSourceHW4 classpublic BooleanSourceHW4(double initProbab.pdf
1. BooleanSourceHW4 classpublic BooleanSourceHW4(double initProbab.pdfalimacal
ย 
Tugger Route Generation - Flow Planner - Dr. Dave Sly
Tugger Route Generation - Flow Planner - Dr. Dave SlyTugger Route Generation - Flow Planner - Dr. Dave Sly
Tugger Route Generation - Flow Planner - Dr. Dave SlyProplanner Asia
ย 
Operation Research
Operation ResearchOperation Research
Operation ResearchVanishriKornu
ย 

Similar to Transportation Co Optimization Models Project (20)

Reinforcement Learning for EVRP with V2G
Reinforcement Learning for EVRP with V2GReinforcement Learning for EVRP with V2G
Reinforcement Learning for EVRP with V2G
ย 
A Dynamic Logistic Dispatching System With Set-Based Particle Swarm Optimization
A Dynamic Logistic Dispatching System With Set-Based Particle Swarm OptimizationA Dynamic Logistic Dispatching System With Set-Based Particle Swarm Optimization
A Dynamic Logistic Dispatching System With Set-Based Particle Swarm Optimization
ย 
ESCC 2016, July 10-16, Athens, Greece
ESCC 2016, July 10-16, Athens, GreeceESCC 2016, July 10-16, Athens, Greece
ESCC 2016, July 10-16, Athens, Greece
ย 
Establishing Line-of-Sight Communication Via Autonomous Relay Vehicles
Establishing Line-of-Sight Communication Via Autonomous Relay VehiclesEstablishing Line-of-Sight Communication Via Autonomous Relay Vehicles
Establishing Line-of-Sight Communication Via Autonomous Relay Vehicles
ย 
Presentation escc 2016
Presentation escc 2016Presentation escc 2016
Presentation escc 2016
ย 
Presentation of GreenYourMove's hybrid approach in 3rd International Conferen...
Presentation of GreenYourMove's hybrid approach in 3rd International Conferen...Presentation of GreenYourMove's hybrid approach in 3rd International Conferen...
Presentation of GreenYourMove's hybrid approach in 3rd International Conferen...
ย 
Vehicle Routing Problem using PSO (Particle Swarm Optimization)
Vehicle Routing Problem using PSO (Particle Swarm Optimization)Vehicle Routing Problem using PSO (Particle Swarm Optimization)
Vehicle Routing Problem using PSO (Particle Swarm Optimization)
ย 
Multi-Vehicle Path Planning In Dynamically Changing Environments - 2012-11-19
Multi-Vehicle Path Planning In Dynamically Changing Environments - 2012-11-19Multi-Vehicle Path Planning In Dynamically Changing Environments - 2012-11-19
Multi-Vehicle Path Planning In Dynamically Changing Environments - 2012-11-19
ย 
Transportation Systems In Buildings
Transportation Systems In BuildingsTransportation Systems In Buildings
Transportation Systems In Buildings
ย 
Recent Research for IISE Conference
Recent Research for IISE ConferenceRecent Research for IISE Conference
Recent Research for IISE Conference
ย 
Cs403 Parellel Programming Travelling Salesman Problem
Cs403   Parellel Programming Travelling Salesman ProblemCs403   Parellel Programming Travelling Salesman Problem
Cs403 Parellel Programming Travelling Salesman Problem
ย 
Mixed Integer Linear Programming Formulation for the Taxi Sharing Problem
Mixed Integer Linear Programming Formulation for the Taxi Sharing ProblemMixed Integer Linear Programming Formulation for the Taxi Sharing Problem
Mixed Integer Linear Programming Formulation for the Taxi Sharing Problem
ย 
3 Vehicle Class Write a fully documented class named Vehicl.pdf
3 Vehicle Class Write a fully documented class named Vehicl.pdf3 Vehicle Class Write a fully documented class named Vehicl.pdf
3 Vehicle Class Write a fully documented class named Vehicl.pdf
ย 
3 Vehicle Class Write a fully documented class named Vehicl.pdf
3 Vehicle Class Write a fully documented class named Vehicl.pdf3 Vehicle Class Write a fully documented class named Vehicl.pdf
3 Vehicle Class Write a fully documented class named Vehicl.pdf
ย 
A feasible solution algorithm for a primitive vehicle routing problem
A feasible solution algorithm for a primitive vehicle routing problemA feasible solution algorithm for a primitive vehicle routing problem
A feasible solution algorithm for a primitive vehicle routing problem
ย 
How much time will be used for driving
How much time will be used for drivingHow much time will be used for driving
How much time will be used for driving
ย 
Cab travel time prediction using ensemble models
Cab travel time prediction using ensemble modelsCab travel time prediction using ensemble models
Cab travel time prediction using ensemble models
ย 
1. BooleanSourceHW4 classpublic BooleanSourceHW4(double initProbab.pdf
1. BooleanSourceHW4 classpublic BooleanSourceHW4(double initProbab.pdf1. BooleanSourceHW4 classpublic BooleanSourceHW4(double initProbab.pdf
1. BooleanSourceHW4 classpublic BooleanSourceHW4(double initProbab.pdf
ย 
Tugger Route Generation - Flow Planner - Dr. Dave Sly
Tugger Route Generation - Flow Planner - Dr. Dave SlyTugger Route Generation - Flow Planner - Dr. Dave Sly
Tugger Route Generation - Flow Planner - Dr. Dave Sly
ย 
Operation Research
Operation ResearchOperation Research
Operation Research
ย 

Recently uploaded

Identifying Appropriate Test Statistics Involving Population Mean
Identifying Appropriate Test Statistics Involving Population MeanIdentifying Appropriate Test Statistics Involving Population Mean
Identifying Appropriate Test Statistics Involving Population MeanMYRABACSAFRA2
ย 
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfKantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfSocial Samosa
ย 
High Class Call Girls Noida Sector 39 Aarushi ๐Ÿ”8264348440๐Ÿ” Independent Escort...
High Class Call Girls Noida Sector 39 Aarushi ๐Ÿ”8264348440๐Ÿ” Independent Escort...High Class Call Girls Noida Sector 39 Aarushi ๐Ÿ”8264348440๐Ÿ” Independent Escort...
High Class Call Girls Noida Sector 39 Aarushi ๐Ÿ”8264348440๐Ÿ” Independent Escort...soniya singh
ย 
RABBIT: A CLI tool for identifying bots based on their GitHub events.
RABBIT: A CLI tool for identifying bots based on their GitHub events.RABBIT: A CLI tool for identifying bots based on their GitHub events.
RABBIT: A CLI tool for identifying bots based on their GitHub events.natarajan8993
ย 
20240419 - Measurecamp Amsterdam - SAM.pdf
20240419 - Measurecamp Amsterdam - SAM.pdf20240419 - Measurecamp Amsterdam - SAM.pdf
20240419 - Measurecamp Amsterdam - SAM.pdfHuman37
ย 
ๅŠž็†ๅญฆไฝ่ฏไธญไฝ›็ฝ—้‡Œ่พพๅคงๅญฆๆฏ•ไธš่ฏ,UCFๆˆ็ปฉๅ•ๅŽŸ็‰ˆไธ€ๆฏ”ไธ€
ๅŠž็†ๅญฆไฝ่ฏไธญไฝ›็ฝ—้‡Œ่พพๅคงๅญฆๆฏ•ไธš่ฏ,UCFๆˆ็ปฉๅ•ๅŽŸ็‰ˆไธ€ๆฏ”ไธ€ๅŠž็†ๅญฆไฝ่ฏไธญไฝ›็ฝ—้‡Œ่พพๅคงๅญฆๆฏ•ไธš่ฏ,UCFๆˆ็ปฉๅ•ๅŽŸ็‰ˆไธ€ๆฏ”ไธ€
ๅŠž็†ๅญฆไฝ่ฏไธญไฝ›็ฝ—้‡Œ่พพๅคงๅญฆๆฏ•ไธš่ฏ,UCFๆˆ็ปฉๅ•ๅŽŸ็‰ˆไธ€ๆฏ”ไธ€F sss
ย 
DBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdfDBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdfJohn Sterrett
ย 
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM TRACKING WITH GOOGLE ANALYTICS.pptx
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM  TRACKING WITH GOOGLE ANALYTICS.pptxEMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM  TRACKING WITH GOOGLE ANALYTICS.pptx
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM TRACKING WITH GOOGLE ANALYTICS.pptxthyngster
ย 
NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...
NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...
NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...Boston Institute of Analytics
ย 
RadioAdProWritingCinderellabyButleri.pdf
RadioAdProWritingCinderellabyButleri.pdfRadioAdProWritingCinderellabyButleri.pdf
RadioAdProWritingCinderellabyButleri.pdfgstagge
ย 
Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024Colleen Farrelly
ย 
ๅŽŸ็‰ˆ1:1ๅฎšๅˆถๅ—ๅๅญ—ๆ˜Ÿๅคงๅญฆๆฏ•ไธš่ฏ๏ผˆSCUๆฏ•ไธš่ฏ๏ผ‰#ๆ–‡ๅ‡ญๆˆ็ปฉๅ•#็œŸๅฎž็•™ไฟกๅญฆๅŽ†่ฎค่ฏๆฐธไน…ๅญ˜ๆกฃ
ๅŽŸ็‰ˆ1:1ๅฎšๅˆถๅ—ๅๅญ—ๆ˜Ÿๅคงๅญฆๆฏ•ไธš่ฏ๏ผˆSCUๆฏ•ไธš่ฏ๏ผ‰#ๆ–‡ๅ‡ญๆˆ็ปฉๅ•#็œŸๅฎž็•™ไฟกๅญฆๅŽ†่ฎค่ฏๆฐธไน…ๅญ˜ๆกฃๅŽŸ็‰ˆ1:1ๅฎšๅˆถๅ—ๅๅญ—ๆ˜Ÿๅคงๅญฆๆฏ•ไธš่ฏ๏ผˆSCUๆฏ•ไธš่ฏ๏ผ‰#ๆ–‡ๅ‡ญๆˆ็ปฉๅ•#็œŸๅฎž็•™ไฟกๅญฆๅŽ†่ฎค่ฏๆฐธไน…ๅญ˜ๆกฃ
ๅŽŸ็‰ˆ1:1ๅฎšๅˆถๅ—ๅๅญ—ๆ˜Ÿๅคงๅญฆๆฏ•ไธš่ฏ๏ผˆSCUๆฏ•ไธš่ฏ๏ผ‰#ๆ–‡ๅ‡ญๆˆ็ปฉๅ•#็œŸๅฎž็•™ไฟกๅญฆๅŽ†่ฎค่ฏๆฐธไน…ๅญ˜ๆกฃ208367051
ย 
Advanced Machine Learning for Business Professionals
Advanced Machine Learning for Business ProfessionalsAdvanced Machine Learning for Business Professionals
Advanced Machine Learning for Business ProfessionalsVICTOR MAESTRE RAMIREZ
ย 
Top 5 Best Data Analytics Courses In Queens
Top 5 Best Data Analytics Courses In QueensTop 5 Best Data Analytics Courses In Queens
Top 5 Best Data Analytics Courses In Queensdataanalyticsqueen03
ย 
IMA MSN - Medical Students Network (2).pptx
IMA MSN - Medical Students Network (2).pptxIMA MSN - Medical Students Network (2).pptx
IMA MSN - Medical Students Network (2).pptxdolaknnilon
ย 
PKS-TGC-1084-630 - Stage 1 Proposal.pptx
PKS-TGC-1084-630 - Stage 1 Proposal.pptxPKS-TGC-1084-630 - Stage 1 Proposal.pptx
PKS-TGC-1084-630 - Stage 1 Proposal.pptxPramod Kumar Srivastava
ย 
Multiple time frame trading analysis -brianshannon.pdf
Multiple time frame trading analysis -brianshannon.pdfMultiple time frame trading analysis -brianshannon.pdf
Multiple time frame trading analysis -brianshannon.pdfchwongval
ย 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]๐Ÿ“Š Markus Baersch
ย 
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024thyngster
ย 

Recently uploaded (20)

Identifying Appropriate Test Statistics Involving Population Mean
Identifying Appropriate Test Statistics Involving Population MeanIdentifying Appropriate Test Statistics Involving Population Mean
Identifying Appropriate Test Statistics Involving Population Mean
ย 
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfKantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
ย 
High Class Call Girls Noida Sector 39 Aarushi ๐Ÿ”8264348440๐Ÿ” Independent Escort...
High Class Call Girls Noida Sector 39 Aarushi ๐Ÿ”8264348440๐Ÿ” Independent Escort...High Class Call Girls Noida Sector 39 Aarushi ๐Ÿ”8264348440๐Ÿ” Independent Escort...
High Class Call Girls Noida Sector 39 Aarushi ๐Ÿ”8264348440๐Ÿ” Independent Escort...
ย 
RABBIT: A CLI tool for identifying bots based on their GitHub events.
RABBIT: A CLI tool for identifying bots based on their GitHub events.RABBIT: A CLI tool for identifying bots based on their GitHub events.
RABBIT: A CLI tool for identifying bots based on their GitHub events.
ย 
20240419 - Measurecamp Amsterdam - SAM.pdf
20240419 - Measurecamp Amsterdam - SAM.pdf20240419 - Measurecamp Amsterdam - SAM.pdf
20240419 - Measurecamp Amsterdam - SAM.pdf
ย 
ๅŠž็†ๅญฆไฝ่ฏไธญไฝ›็ฝ—้‡Œ่พพๅคงๅญฆๆฏ•ไธš่ฏ,UCFๆˆ็ปฉๅ•ๅŽŸ็‰ˆไธ€ๆฏ”ไธ€
ๅŠž็†ๅญฆไฝ่ฏไธญไฝ›็ฝ—้‡Œ่พพๅคงๅญฆๆฏ•ไธš่ฏ,UCFๆˆ็ปฉๅ•ๅŽŸ็‰ˆไธ€ๆฏ”ไธ€ๅŠž็†ๅญฆไฝ่ฏไธญไฝ›็ฝ—้‡Œ่พพๅคงๅญฆๆฏ•ไธš่ฏ,UCFๆˆ็ปฉๅ•ๅŽŸ็‰ˆไธ€ๆฏ”ไธ€
ๅŠž็†ๅญฆไฝ่ฏไธญไฝ›็ฝ—้‡Œ่พพๅคงๅญฆๆฏ•ไธš่ฏ,UCFๆˆ็ปฉๅ•ๅŽŸ็‰ˆไธ€ๆฏ”ไธ€
ย 
DBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdfDBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdf
ย 
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM TRACKING WITH GOOGLE ANALYTICS.pptx
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM  TRACKING WITH GOOGLE ANALYTICS.pptxEMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM  TRACKING WITH GOOGLE ANALYTICS.pptx
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM TRACKING WITH GOOGLE ANALYTICS.pptx
ย 
NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...
NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...
NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...
ย 
RadioAdProWritingCinderellabyButleri.pdf
RadioAdProWritingCinderellabyButleri.pdfRadioAdProWritingCinderellabyButleri.pdf
RadioAdProWritingCinderellabyButleri.pdf
ย 
Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024
ย 
ๅŽŸ็‰ˆ1:1ๅฎšๅˆถๅ—ๅๅญ—ๆ˜Ÿๅคงๅญฆๆฏ•ไธš่ฏ๏ผˆSCUๆฏ•ไธš่ฏ๏ผ‰#ๆ–‡ๅ‡ญๆˆ็ปฉๅ•#็œŸๅฎž็•™ไฟกๅญฆๅŽ†่ฎค่ฏๆฐธไน…ๅญ˜ๆกฃ
ๅŽŸ็‰ˆ1:1ๅฎšๅˆถๅ—ๅๅญ—ๆ˜Ÿๅคงๅญฆๆฏ•ไธš่ฏ๏ผˆSCUๆฏ•ไธš่ฏ๏ผ‰#ๆ–‡ๅ‡ญๆˆ็ปฉๅ•#็œŸๅฎž็•™ไฟกๅญฆๅŽ†่ฎค่ฏๆฐธไน…ๅญ˜ๆกฃๅŽŸ็‰ˆ1:1ๅฎšๅˆถๅ—ๅๅญ—ๆ˜Ÿๅคงๅญฆๆฏ•ไธš่ฏ๏ผˆSCUๆฏ•ไธš่ฏ๏ผ‰#ๆ–‡ๅ‡ญๆˆ็ปฉๅ•#็œŸๅฎž็•™ไฟกๅญฆๅŽ†่ฎค่ฏๆฐธไน…ๅญ˜ๆกฃ
ๅŽŸ็‰ˆ1:1ๅฎšๅˆถๅ—ๅๅญ—ๆ˜Ÿๅคงๅญฆๆฏ•ไธš่ฏ๏ผˆSCUๆฏ•ไธš่ฏ๏ผ‰#ๆ–‡ๅ‡ญๆˆ็ปฉๅ•#็œŸๅฎž็•™ไฟกๅญฆๅŽ†่ฎค่ฏๆฐธไน…ๅญ˜ๆกฃ
ย 
Advanced Machine Learning for Business Professionals
Advanced Machine Learning for Business ProfessionalsAdvanced Machine Learning for Business Professionals
Advanced Machine Learning for Business Professionals
ย 
Top 5 Best Data Analytics Courses In Queens
Top 5 Best Data Analytics Courses In QueensTop 5 Best Data Analytics Courses In Queens
Top 5 Best Data Analytics Courses In Queens
ย 
IMA MSN - Medical Students Network (2).pptx
IMA MSN - Medical Students Network (2).pptxIMA MSN - Medical Students Network (2).pptx
IMA MSN - Medical Students Network (2).pptx
ย 
Deep Generative Learning for All - The Gen AI Hype (Spring 2024)
Deep Generative Learning for All - The Gen AI Hype (Spring 2024)Deep Generative Learning for All - The Gen AI Hype (Spring 2024)
Deep Generative Learning for All - The Gen AI Hype (Spring 2024)
ย 
PKS-TGC-1084-630 - Stage 1 Proposal.pptx
PKS-TGC-1084-630 - Stage 1 Proposal.pptxPKS-TGC-1084-630 - Stage 1 Proposal.pptx
PKS-TGC-1084-630 - Stage 1 Proposal.pptx
ย 
Multiple time frame trading analysis -brianshannon.pdf
Multiple time frame trading analysis -brianshannon.pdfMultiple time frame trading analysis -brianshannon.pdf
Multiple time frame trading analysis -brianshannon.pdf
ย 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]
ย 
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
ย 

Transportation Co Optimization Models Project

  • 1. Optimization Models FALL 2019 Project Report On: Transportation Company Case Study 27th November 2019 Author Yashwanth Kumar Y
  • 2. INTRODUCTION A transportation company is evaluating a prototype system that combines trucks and drones for last-mile delivery services. The test run considers a set of orders that must be delivered to known locations. A delivery truck starts from a depot and visits โ€œlaunch sitesโ€ corresponding to the customers locations. From each launch site, the truck deploys a series of drones that deliver the orders and return to meet the truck at the launch site. Once all the drones are recovered, the truck moves to the next launch site and repeats the process until all orders are delivered. The project is aimed at finding the most cost-efficient route for the trucks and the drones. The number of drones were varied between iterations to include 1, 2 and 3 drones as viable options to test how this changes the cost and routes. A linear mixed integer programming approach was taken to achieve the same, with the code tested and results obtained through FICO Xpress IVE software. This report elucidates the model that was built with the sets, decisions and constraints, the iterations on a dataset with varying truck and dronesโ€™ combination and the summary of iterations that test the model algorithm on different datasets. A simple cost sensitivity analysis was also performed to check how the routes and decisions change based on changing the cost to serve a customer. MODELING The problem can be modeled as a linear mixed integer solution. The main datasets we have are the total number of customer nodes, the set of drones as we need to formulate a decision arc for each of them. For the purpose of breaking loops, we have used the MTZ formulation, because of which, we have mimicked the depot as 2 more nodes as a virtual customer node โ€“ a start depot node from which the truck starts, and an end depot node at which the truck finishes it journey. The decisions we would have to take involve choosing whether a node has to be delivered by the truck or by a drone, based on which, we would have to decide from where does the delivery medium arrive at the node and where it goes to next (incoming and outgoing arc). We also need to know the order in which the customers are being delivered. The key information that is necessary for this model includes the distance between each node (including the customer and the depot) and the cost to serve the customer by the truck or the drone. The objective of the solution is to come up with the most optimal set of travel path for the truck and drone that serves every customer at the least cost possible. The constraints for the same are elucidated in the problem description.
  • 3. The formulation can be found below - SETS โ€ข Set of total nodes - Nodes = {1, totalCust} index i โ€ข Set of customer nodes - customerNodes = {} index j โ€ข Set of drones โ€“ drones = {} index k DECISION VARIABLES โ€ข truckArci,j : { 1 ๐‘–๐‘“ ๐‘‘๐‘’๐‘๐‘–๐‘ ๐‘–๐‘œ๐‘› ๐‘–๐‘  ๐‘ก๐‘œ ๐‘ก๐‘Ÿ๐‘Ž๐‘ฃ๐‘’๐‘™ ๐‘๐‘’๐‘ก๐‘ค๐‘’๐‘’๐‘› ๐‘–, ๐‘— โˆˆ Nodes ๐‘๐‘ฆ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜ 0 ๐‘œ๐‘กโ„Ž๐‘’๐‘Ÿ๐‘ค๐‘–๐‘ ๐‘’ โ€ข droneArci,j,k : { 1 ๐‘–๐‘“ ๐‘‘๐‘’๐‘๐‘–๐‘ ๐‘–๐‘œ๐‘› ๐‘–๐‘  ๐‘ก๐‘œ ๐‘ก๐‘Ÿ๐‘Ž๐‘ฃ๐‘’๐‘™ ๐‘๐‘’๐‘ก๐‘ค๐‘’๐‘’๐‘› ๐‘–, ๐‘— โˆˆ Nodes using k โˆˆ drones 0 ๐‘œ๐‘กโ„Ž๐‘’๐‘Ÿ๐‘ค๐‘–๐‘ ๐‘’ โ€ข truckNodei : { 1 ๐‘–๐‘“ ๐‘– โˆˆ Nodes is visited by the truck 0 ๐‘œ๐‘กโ„Ž๐‘’๐‘Ÿ๐‘ค๐‘–๐‘ ๐‘’ โ€ข droneNodei : { 1 ๐‘–๐‘“ ๐‘– โˆˆ Nodes is visited by a drone 0 ๐‘œ๐‘กโ„Ž๐‘’๐‘Ÿ๐‘ค๐‘–๐‘ ๐‘’ โ€ข positioni : The position of the customer i โˆˆ Nodes to be delivered by truck or drone DATA โ€ข distancei,j : Distance between i,j โˆˆ Nodes โ€ข costTruck : Cost for each distance unit travelled by Truck โ€ข costDrone : Cost for each distance unit travelled by Drone โ€ข totalCustomers : The number of customers in the delivery iteration OBJECTIVE min ((โˆ‘ โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘(๐‘–, ๐‘—) โˆ— ๐‘‘๐‘–๐‘ ๐‘ก๐‘Ž๐‘›๐‘๐‘’(๐‘–, ๐‘—) โˆ— ๐‘๐‘œ๐‘ ๐‘ก๐‘‡๐‘Ÿ๐‘ข๐‘๐‘˜๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  ) + (โˆ‘ โˆ‘ โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘(๐‘–, ๐‘—, ๐‘˜) โˆ— ๐‘‘๐‘–๐‘ ๐‘ก๐‘Ž๐‘›๐‘๐‘’(๐‘–, ๐‘—) โˆ— 2 โˆ— ๐‘๐‘œ๐‘ ๐‘ก๐ท๐‘Ÿ๐‘œ๐‘›๐‘’๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  ) CONSTRAINTS โ€ข Truck leaves the start depot exactly once to some other customer node โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘(1, ๐‘—) = 1๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  1 โ€ข No travel can end at the start depot node โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, 1) = 0๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  2 โ€ข Truck reaches the end depot from exactly one other customer node โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘  + 2) = 1๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  3 โ€ข No travel can start at the end depot node โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐‘๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘  + 2, ๐‘—) = 0๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  4 โ€ข There can be only 1 outgoing truck movement for each customer node โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—) = 1 โˆ— ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆ€๐‘– โˆˆ ๐‘๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  5 โ€ข There can be only 1 incoming truck movement for each customer node โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—) = 1 โˆ— ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘—) โˆ€๐‘— โˆˆ ๐‘๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  6 โ€ข No drone can be launched from the start depot โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘(1, ๐‘—, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  7 โ€ข No drone can land at the start depot node โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, 1, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  8 โ€ข No drone can land at the end depot node โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  9
  • 4. โ€ข No drone can start from the end depot node โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2, ๐‘—, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  10 โ€ข A customer node can either be delivered by a drone or the truck ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) + ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘๐‘œ๐‘‘๐‘’( ๐‘–) = 1 โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  11 โ€ข A drone is allowed to start from a customer node only if it is served by the truck โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜) โ‰ค ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  12 โ€ข Only one drone can visit a customer from a truck node โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜) โ‰ค 1 โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘— โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  13 โ€ข If a node is selected to be delivered by a drone, it can have only one incoming travel โˆ‘ โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜) = 1 โˆ— ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘๐‘œ๐‘‘๐‘’( ๐‘—) โˆ€๐‘— โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  14 โ€ข The start depot and the end depot are the 1st and the last customers to be delivered ๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›(1) = 1 15 ๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›( ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2) = ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2 16 โ€ข MTZ customer position constraint ๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›(๐‘—) โ‰ฅ ๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›(๐‘–) + 1 + โˆ‘ โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘(๐‘–, ๐‘—, ๐‘˜)๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘›๐‘œ๐‘‘๐‘’๐‘  โˆ’ ๐‘€ โˆ— (1 โˆ’ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘(๐‘–, ๐‘—)) 17 โ€ข No customer should be selected as the origin and destination at the same time for truck or drone travel ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–) = 0 โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘  18 ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–, ๐‘˜) = 0 โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  19 โ€ข The decision variables for truck and drone travel arcs are binary variables ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–) โˆˆ [0,1] โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘  20 ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–, ๐‘˜) โˆˆ [0,1] โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  21 โ€ข The decision variables for choosing if a node is to be visited by a truck or a drone are binary variables ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆˆ [0,1]โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  22 ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆˆ [0,1]โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  23 โ€ข The decision variable that holds the position of the customer is an integer variable ๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›( ๐‘–) = ๐›ง+ โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  24
  • 5. COMPLETE MODEL min ((โˆ‘ โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘(๐‘–, ๐‘—) โˆ— ๐‘‘๐‘–๐‘ ๐‘ก๐‘Ž๐‘›๐‘๐‘’(๐‘–, ๐‘—) โˆ— ๐‘๐‘œ๐‘ ๐‘ก๐‘‡๐‘Ÿ๐‘ข๐‘๐‘˜๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  ) + (โˆ‘ โˆ‘ โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘(๐‘–, ๐‘—, ๐‘˜) โˆ— ๐‘‘๐‘–๐‘ ๐‘ก๐‘Ž๐‘›๐‘๐‘’(๐‘–, ๐‘—) โˆ— 2 โˆ— ๐‘๐‘œ๐‘ ๐‘ก๐ท๐‘Ÿ๐‘œ๐‘›๐‘’๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  ) s.t โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘(1, ๐‘—) = 1 ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  1 โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, 1) = 0 ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  2 โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘  + 2) = 1 ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  3 โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐‘๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘  + 2, ๐‘—) = 0 ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  4 โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—) = 1 โˆ— ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆ€๐‘– โˆˆ ๐‘๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘๐‘œ๐‘‘๐‘’๐‘  ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  5 โˆ‘ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—) = 1 โˆ— ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘—) โˆ€๐‘— โˆˆ ๐‘๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ๐‘๐‘œ๐‘‘๐‘’๐‘  ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  6 โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘(1, ๐‘—, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  7 โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, 1, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  8 โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  9 โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2, ๐‘—, ๐‘˜) = 0 โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  10 ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) + ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘๐‘œ๐‘‘๐‘’( ๐‘–) = 1 โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  11 โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜) โ‰ค ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  ๐‘— ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  12 โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜) โ‰ค 1 โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘— โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  ๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  13 โˆ‘ โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜) = 1 โˆ— ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘๐‘œ๐‘‘๐‘’( ๐‘—) โˆ€๐‘— โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  ๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘– ๐‘–๐‘› ๐‘๐‘œ๐‘‘๐‘’๐‘  14 ๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›(1) = 1 15 ๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›( ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2) = ๐‘ก๐‘œ๐‘ก๐‘Ž๐‘™๐ถ๐‘ข๐‘ ๐‘ก๐‘œ๐‘š๐‘’๐‘Ÿ + 2 16 ๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›( ๐‘—) โ‰ฅ ๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›( ๐‘–) + 1 + โˆ‘ โˆ‘ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—, ๐‘˜)) ๐‘˜ ๐‘–๐‘› ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘ ๐‘— ๐‘–๐‘› ๐‘›๐‘œ๐‘‘๐‘’๐‘  โˆ’ ๐‘€ โˆ— (1 โˆ’ ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘—)) 17 ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–) = 0 โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘  18 ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–, ๐‘˜) = 0 โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  19 ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–) โˆˆ [0,1] โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘  20 ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐ด๐‘Ÿ๐‘( ๐‘–, ๐‘–, ๐‘˜) โˆˆ [0,1] โˆ€๐‘– โˆˆ ๐‘›๐‘œ๐‘‘๐‘’๐‘ , โˆ€๐‘˜ โˆˆ ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘  21 ๐‘ก๐‘Ÿ๐‘ข๐‘๐‘˜๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆˆ [0,1]โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  22 ๐‘‘๐‘Ÿ๐‘œ๐‘›๐‘’๐‘๐‘œ๐‘‘๐‘’( ๐‘–) โˆˆ [0,1]โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  23 ๐‘๐‘œ๐‘ ๐‘–๐‘ก๐‘–๐‘œ๐‘›( ๐‘–) = ๐›ง+ โˆ€๐‘– โˆˆ ๐‘๐‘œ๐‘‘๐‘’๐‘  24
  • 6. SOLUTION In the visualizations below, the truck path and the drone path are shown in different colours. The cost of the route is mentioned and the travel arcs are displayed as a sequence of nodes as {Depot->Node1->Node2->โ€ฆ.->Depot}, while each drone path is shown as a set of triples such as {(StartNode->DroneNode->StartNode,โ€ฆ)}. The cost of the truck is $10/unit and the cost for a drone is $3/unit Simulation 1 This solution includes 15 customer nodes that were generated randomly, with the cost to serve for truck as 10/unit distance and for the drone as 3/unit distance. The simulated data and a simple delivery route solution including only the single truck is shown below. Cost = $5510 Truck Route = {Depot->15->12->14->11->16->13->10->9->6->8->5->7->3->4->2->Depot} The solution for the same set of customers for different drone iterations are elaborated below. Case 1 โ€“ 1 Truck, 1 Drones Cost = $4788 Truck Route = {Depot->15->12->14->16->10->7->5->4->2->Depot} Drone Route = {(14->11->14), (16->13->16), (10->9->10), (7->6->7), (5->8->5), (4->3->4)}
  • 7. Case 2 โ€“ 1 Truck, 2 Drones Cost = $4710 Truck Route = {Depot->2->4->5->7->10->16->14->12->15->Depot} Drone 1 Routes = {(5->6->5), (10->9->10), (16->13->16), (14->11->11)} Drone 2 Routes = {(5->8->5)} Case 3 โ€“ 1 Truck, 3 Drones Cost = $4618 Truck Route = {Depot->2->4->5->10->7->3->12->15->Depot} Drone 1 Routes = {(5->8->5), (10->9->10), (12->14->12)
  • 8. Drone 2 Routes = {(5->6->5), (10->13->10), (12->11->12)} Drone 3 Routes = {(10,16,10)} Simulation 2 The data present as example in the problem statement was used to see how the solution comes out based on the suggested methodology. This contains again of 15 customer nodes, and the cost remains the same as before. Case 1 โ€“ 1 Truck, 2 Drones Cost = $3230 Truck Route = {Depot->2->3->4->8->9->11->7->13->12->Depot}
  • 9. Drone 1 Routes = {(4->5->4), (8->6->8), (9->10->9), (11->16->11), (13->14->13)} Drone 2 Routes = {(13->15->13)} Case 2 โ€“ 1 Truck, 3 Drones Cost = $3218 Truck Route = {Depot->12->7->11->9->8->4->3->2->Depot} Drone 1 Routes = {(4->5->4), (8->6->8), (9->10->9), (11->16->11), (12->13->12)} Drone 2 Routes = {(12->14->12)} Drone 3 Routes = {(12->15->12)} Simulation 3 An iteration was also run using 20 customer nodes, the result of which is summarized below. COST SENSITIVITY ANALYSIS Using the same dataset used in the simulation above, 2 variations were run with respect to the cost to serve. In the first iteration, the cost to serve the customer using the drone was changed to $4/unit distance, keeping the truck cost the same. In the second iteration, the NumberofCustomers NumberofDrones ObjectiveAchieved BestBound TruckNodes Drone Path 20 2 3432 2999 13 7 Truck(Depot-8-5-13-15-10-21-14-6-4-17-7-9-12-Depot) Drone1=((4,3,4),(7,2,7),(12,11,12),(14,16,14),(15,19,15)) Drone2=((7,18,7),(14,20,14)) 20 3 3462 2914 10 10 Truck=(Depot-8-5-13-15-21-14-4-17-9-12-Depot) Drone1=((4,3,4),(12,11,12),(14,6,14),(15,10,15),(17,2,17),(21,20,21)) Drone2=((14,16,14),(15,19,15),(17,7,17))) Drone3=((17,18,17))
  • 10. cost to serve the customer using the truck was changed to $15/unit distance, keeping the drone cost the same. The results are shown below. Simulation 1 โ€“ 1 Truck 1 Drone Case 1 โ€“ Truck @ $10/unit distance, Drone @ 4/unit distance Truck Route = {Depot->2->4->->8->->5->7->10->16->14->12->15->Depot} Drone Routes = {(4->3->4), (8->6->8), (10->9->10), (16->13->16), (14->11->14)} Case 2 โ€“ Truck @ $15/unit distance, Drone @ 3/unit distance Truck Route = {Depot->2->4->5->7->10->16->14->12->15->Depot} Drone Routes = {(4->3->4), (5->8->5), (7->6->7), (10->9->10), (16->13>16), (14->11->14)} Simulation 2 โ€“ 1 Truck, 2 Drones Case 1 โ€“ Truck @ $10/unit distance, Drone @ 4/unit distance
  • 11. Truck Route = {Depot->2->4->3->5->7->10->16->14->12->15->Depot} Drone 1 Routes = {(5->8->5), (10->9->10), (16->13->16), (14->11->14)} Drone 2 Routes = {(5,6,5)} Case 2 โ€“ Truck @ $15/unit distance, Drone @ 3/unit distance Truck Route = {Depot->2->4->5->7->10->3->12->15->Depot} Drone 1 Routes = {(4->8->4), (5->6->5), (7->10->7), (3->16->3), (12->14->12)} Simulation 3 โ€“ 1 Truck, 3 Drones Case 1 โ€“ Truck @ $10/unit distance, Drone @ 4/unit distance, the solution is same as above Case 2 โ€“ Truck @ $15/unit distance, Drone @ 3/unit distance Truck Route = {Depot->15->3->7->5->4->2->Depot} Drone 1 Routes = {(3->12->3), (7->16->7), (5->9->5)} Drone 2 Routes = {(3->11->3), (7->13->7), (5->6->5)} Drone 3 Routes = {(3->14->3), (7->10->7), (5->8->5)} CONCLUSION Running the algorithm through different datasets and different cost structures, we can safely conclude that - โ€ข We notice that as the number of drones used increases, the overall cost is further optimized, but this comes with some computational overhead. โ€ข The algorithm performs well for spread out nodes, effectively deploying drones from the appropriate customer node, but minimizes the drones when the spread is small. โ€ข When we increase the truck cost, the algorithm corrects itself to launch more drones to further away customers, forming a close truck loop. โ€ข When the cost of drone is increased, there is no significant difference in the model results, although the number of drones were lesser than the previous iteration.
  • 12. APPENDIX Code - !@encoding CP1252 model ModelName uses "mmxprs"; !gain access to the Xpress-Optimizer solver setparam("XPRS_MAXTIME", 900) declarations nodes = 1..17 !All nodes including start and end customerNodes = 2..16 !Customer nodes without start and end drones = 1..3 ! Binary variable for checking truck takes arc truckArc : array(nodes, nodes) of mpvar droneArc : array(nodes, nodes, drones) of mpvar !MN ! Distance arc distance: array(nodes, nodes) of integer !Position position : array(nodes) of mpvar !Inserted by MN !Truck node or drone node truckNode : array(nodes) of mpvar droneNode : array(nodes) of mpvar !Cost for truck costTruck : real !Cost per unit for truck travel bigMNumber : real !Just a big big number costDrone : real !Cost per unit for drone travel totalCustomer : integer end-declarations !Data Declarations costTruck := 10 costDrone := 3 initializations from 'D:AcademiaGrad - UC MSBANAFall 19BANA 7020 OptimizationProjectCodesDataInPDF.txt' distance end-initializations
  • 13. !Initializing a big big number bigMNumber := 10000 totalCustomer := 15 !Making the decision variables binary - for Truck arcs forall(startNode in nodes, endNode in nodes) truckArc(startNode, endNode) is_binary !Making the decision variables binary - for Drone arcs - MN forall(startNode in nodes, endNode in nodes, drone in drones) droneArc(startNode, endNode, drone) is_binary !Making truckNode and droneNode decision variables - MN forall (customerNode in nodes) truckNode(customerNode) is_binary forall (customerNode in nodes) droneNode(customerNode) is_binary !Making the position an integer array forall(node in nodes) position(node) is_integer !Objective Function obj := (sum(startNode in nodes, endNode in nodes) (truckArc(startNode, endNode) * distance(startNode, endNode) * costTruck) + sum(startNode in nodes, endNode in nodes, drone in drones) (droneArc(startNode, endNode, drone) * distance(startNode, endNode) * 2*costDrone)) !Constraints !Truck related constraints !Truck leaves depot exactly once to some other node sum(endNode in nodes) truckArc(1, endNode) = 1 !No node can end at the Depot node sum(startNode in nodes) truckArc(startNode, 1) = 0 !Truck reaches the depot from exactly one other node sum(startNode in nodes) truckArc(startNode, totalCustomer + 2) = 1 !No node can start at the End Depot node sum(endNode in nodes) truckArc(totalCustomer + 2,endNode) = 0 !Only one arc can be travelled from some arc | outgoing for all nodes is 1 forall(customerNode in customerNodes) sum(endNode in nodes) truckArc(customerNode, endNode) = 1 * truckNode(customerNode)
  • 14. !Only one arc can be travelled from some arc | incoming for all nodes is 1 forall(customerNode in customerNodes) sum(startNode in nodes) truckArc(startNode, customerNode) = 1 * truckNode(customerNode) ! No node should be selected as both origin and destination at same time forall(node in nodes) truckArc(node,node) = 0 forall(node in nodes, drone in drones) droneArc(node,node, drone) = 0 truckArc(1,totalCustomer+2) = 0 !Drone related constraints -MN !Drone cannot be launched from the Depot node forall(drone in drones) sum(endNode in nodes) droneArc(1, endNode, drone) = 0 !Drone node cannot end at the Depot Node forall(drone in drones) sum(startNode in nodes) droneArc(startNode, 1, drone) = 0 !Drone cannot land at the Depot node forall(drone in drones) sum(startNode in nodes) droneArc(startNode, totalCustomer + 2, drone) = 0 !No node can start at the End Depot node forall(drone in drones) sum(endNode in nodes) droneArc(totalCustomer + 2,endNode, drone) = 0 !A customer node can be either drone node or truck node forall(node in nodes) truckNode(node) + droneNode(node) = 1 !An arc can be either truck arc or drone arc or neither !forall(startNode in nodes) ! sum(endNode in nodes, drone in drones) droneArc(startNode, endNode, drone) <= 2*truckNode(startNode) forall(startNode in nodes, drone in drones) sum(endNode in nodes) droneArc(startNode, endNode, drone) <= truckNode(startNode) forall(startNode in nodes, endNode in nodes) sum(drone in drones) droneArc(startNode, endNode, drone) <= 1 forall(endNode in nodes) sum(startNode in nodes, drone in drones) droneArc(startNode, endNode, drone) = 1*droneNode(endNode)
  • 15. !Breaking Loops position(1) = 1 position(totalCustomer + 2) = totalCustomer+2 !MTZ position constraint forall(startNode in nodes) forall(endNode in nodes) (position(endNode) >= ((position(startNode) + 1) + (sum(node in nodes, drone in drones)droneArc(startNode, node, drone)) - (bigMNumber * (1 - truckArc(startNode, endNode))))) minimize(obj) writeln("Begin running model") writeln("n Total Cost : ", getobjval) forall(startNode in nodes, endNode in nodes|getsol(truckArc(startNode, endNode))>0) writeln("Truck","Start Node: ", startNode, ", EndNode: ", endNode, " - Travel : ", getsol(truckArc(startNode, endNode))) forall(startNode in nodes, endNode in nodes, drone in drones|getsol(droneArc(startNode, endNode, drone))>0) writeln("Drone", drone ," Start Node: ", startNode, ", EndNode: ", endNode, " - Travel : ", getsol(droneArc(startNode, endNode, drone))) forall(node in nodes) writeln("Customer Node ", node," ", getsol(truckNode(node))," ",getsol(droneNode(node))) !forall(node in nodes) writeln(getsol(position(node))) writeln("End running model") end-model