Electric forklift trucks - Pyosch/powertac-server GitHub Wiki
Large warehouses often operate fleets of (possibly autonomous) battery-operated forklift trucks. These trucks typically run on large lead-acid batteries that are swapped out for charging at the end of each shift. Lead-acid batteries have the advantages of low cost and high mass/energy ratio, which in this application provides needed counterweight mass for the truck. They also have a limited lifetime determined primarily by the number of charge-discharge cycles, and so they are not good candidates for battery-to-grid operation. Instead, they can be treated as thermal storage, capacity determined by battery capacity, charge rate, charging capacity, and the difference between current state of charge (SOC) and the required SOC at the end of the current shift.
Because the available capacity and other data are known at least for the current shift, and predictable over one or more subsequent shifts, the fleet operator can minimize the cost of charging its batteries, and can take advantage of compensation for regulating capacity (up-regulation by slowing the charge rate, down-regulation by charging faster than planned).
Time is divided into discrete 'blocks' that break on shift boundaries and on price-change boundaries in the case of time-of-use tariffs or dynamic-price tariffs. Of course, the effectiveness of dynamic pricing is degraded if prices are not known at least out to the start of the next shift. The objective function is
minimize Sum over blocks (energy_block * price_block) subject to -- sum energy over blocks in shift >= min energy needed for shift -- sum energy over blocks in shift <= max charge capacity for shift
The resulting slack variables can then be used to determine available regulation capacity. Problem is always solved at least one shift ahead, re-solved whenever regulation is used, or when prices change. It is also used to generate cost estimates for new tariffs.