Skip to content

Single Driver Multiple TimeWindows 12 Stops

Maciej Mionskowski edited this page Apr 24, 2016 · 2 revisions
client := &route4me.NewClient("11111111111111111111111111111111")
service := &routing.Service{Client: client}
addresses := []*routing.Address{&routing.Address{AddressString: "3634 W Market St, Fairlawn, OH 44333",
	//all possible originating locations are depots, should be marked as true
	//stylistically we recommend all depots should be at the top of the destinations list
	IsDepot:   true,
	Latitude:  41.135762259364,
	Longitude: -81.629313826561,

	TimeWindowStart:  0,
	TimeWindowEnd:    0,
	TimeWindowStart2: 0,
	TimeWindowEnd2:   0,
	Time:             0,
},

	&routing.Address{AddressString: "1218 Ruth Ave, Cuyahoga Falls, OH 44221",
		Latitude:  41.135762259364,
		Longitude: -81.629313826561,

		//together these two specify the time window of a destination
		//seconds offset relative to the route start time for the open availability of a destination
		TimeWindowStart: 6*3600 + 00*60,
		//seconds offset relative to the route end time for the open availability of a destination
		TimeWindowEnd: 6*3600 + 30*60,

		// Second 'TimeWindowStart'
		TimeWindowStart2: 7*3600 + 00*60,
		// Second 'TimeWindowEnd'
		TimeWindowEnd2: 7*3600 + 20*60,

		//the number of seconds at destination
		Time: 300,
	},

	&routing.Address{AddressString: "512 Florida Pl, Barberton, OH 44203",
		Latitude:         41.003671512008,
		Longitude:        -81.598461046815,
		TimeWindowStart:  7*3600 + 30*60,
		TimeWindowEnd:    7*3600 + 40*60,
		TimeWindowStart2: 8*3600 + 00*60,
		TimeWindowEnd2:   8*3600 + 10*60,
		Time:             300,
	},

	&routing.Address{AddressString: "512 Florida Pl, Barberton, OH 44203",
		Latitude:         41.003671512008,
		Longitude:        -81.598461046815,
		TimeWindowStart:  8*3600 + 30*60,
		TimeWindowEnd:    8*3600 + 40*60,
		TimeWindowStart2: 8*3600 + 50*60,
		TimeWindowEnd2:   9*3600 + 00*60,
		Time:             100,
	},

	&routing.Address{AddressString: "3495 Purdue St, Cuyahoga Falls, OH 44221",
		Latitude:         41.162971496582,
		Longitude:        -81.479049682617,
		TimeWindowStart:  9*3600 + 00*60,
		TimeWindowEnd:    9*3600 + 15*60,
		TimeWindowStart2: 9*3600 + 30*60,
		TimeWindowEnd2:   9*3600 + 45*60,
		Time:             300,
	},

	&routing.Address{AddressString: "1659 Hibbard Dr, Stow, OH 44224",
		Latitude:         41.194505989552,
		Longitude:        -81.443351581693,
		TimeWindowStart:  10*3600 + 00*60,
		TimeWindowEnd:    10*3600 + 15*60,
		TimeWindowStart2: 10*3600 + 30*60,
		TimeWindowEnd2:   10*3600 + 45*60,
		Time:             300,
	},

	&routing.Address{AddressString: "2705 N River Rd, Stow, OH 44224",
		Latitude:         41.145240783691,
		Longitude:        -81.410247802734,
		TimeWindowStart:  11*3600 + 00*60,
		TimeWindowEnd:    11*3600 + 15*60,
		TimeWindowStart2: 11*3600 + 30*60,
		TimeWindowEnd2:   11*3600 + 45*60,
		Time:             300,
	},

	&routing.Address{AddressString: "10159 Bissell Dr, Twinsburg, OH 44087",
		Latitude:         41.340042114258,
		Longitude:        -81.421226501465,
		TimeWindowStart:  12*3600 + 00*60,
		TimeWindowEnd:    12*3600 + 15*60,
		TimeWindowStart2: 12*3600 + 30*60,
		TimeWindowEnd2:   12*3600 + 45*60,
		Time:             300,
	},

	&routing.Address{AddressString: "367 Cathy Dr, Munroe Falls, OH 44262",
		Latitude:         41.148578643799,
		Longitude:        -81.429229736328,
		TimeWindowStart:  13*3600 + 00*60,
		TimeWindowEnd:    13*3600 + 15*60,
		TimeWindowStart2: 13*3600 + 30*60,
		TimeWindowEnd2:   13*3600 + 45*60,
		Time:             300,
	},

	&routing.Address{AddressString: "367 Cathy Dr, Munroe Falls, OH 44262",
		Latitude:         41.148578643799,
		Longitude:        -81.429229736328,
		TimeWindowStart:  14*3600 + 00*60,
		TimeWindowEnd:    14*3600 + 15*60,
		TimeWindowStart2: 14*3600 + 30*60,
		TimeWindowEnd2:   14*3600 + 45*60,
		Time:             300,
	},

	&routing.Address{AddressString: "512 Florida Pl, Barberton, OH 44203",
		Latitude:         41.003671512008,
		Longitude:        -81.598461046815,
		TimeWindowStart:  15*3600 + 00*60,
		TimeWindowEnd:    15*3600 + 15*60,
		TimeWindowStart2: 15*3600 + 30*60,
		TimeWindowEnd2:   15*3600 + 45*60,
		Time:             300,
	},

	&routing.Address{AddressString: "559 W Aurora Rd, Northfield, OH 44067",
		Latitude:         41.315116882324,
		Longitude:        -81.558746337891,
		TimeWindowStart:  16*3600 + 00*60,
		TimeWindowEnd:    16*3600 + 15*60,
		TimeWindowStart2: 16*3600 + 30*60,
		TimeWindowEnd2:   17*3600 + 00*60,
		Time:             50,
	},
}
routeParams := &routing.RouteParameters{
	AlgorithmType:        routing.CVRP_TW_MD,
	StoreRoute:           false,
	Name:                 "Single Driver Multiple TimeWindows 12 Stops",
	RouteDate:            time.Now().Unix(),
	RouteTime:            5*3600 + 30*60,
	Optimize:             routing.Distance,
	DistanceUnit:         routing.Miles,
	DeviceType:           routing.Web,
	TravelMode:           routing.Driving,
	Metric:               routing.Geodesic,
}

optParams := &routing.OptimizationParameters{
	Addresses:  addresses,
	Parameters: routeParams,
}
_, err := service.RunOptimization(optParams)