An Incentive-based Optimal Energy Consumption Scheduling Algorithm for Residential Users