Dynamic pricing based on congestion would solve this. It would also almost certainly result in higher costs for drivers though.