UNPKG

node-red-contrib-genetic-charging-strategy

Version:

A module for Node-RED that adds a battery charging strategy to node-red-contrib-power-saver. It uses genetic algorithms to find the best schedule

36 lines (35 loc) 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.populationFunction = void 0; const utils_1 = require("./utils"); const schedule_1 = require("./schedule"); const populationFunction = (props) => { const { totalDuration, populationSize, numberOfPricePeriods, excessPvEnergyUse } = props; const population = []; for (let i = 0; i < populationSize; i += 1) { const timePeriods = new schedule_1.DoublyLinkedList(); const activities = []; let currentNumberOfPricePeriods = 0; let previousActivity = undefined; while (currentNumberOfPricePeriods < numberOfPricePeriods) { const activity = (0, utils_1.generateRandomActivity)(previousActivity); currentNumberOfPricePeriods += activity != 0 ? 1 : 0; activities.push(activity); previousActivity = activity; } const startTimes = new Set(); startTimes.add(0); while (startTimes.size < activities.length) { startTimes.add(Math.floor(Math.random() * totalDuration)); } Array.from(startTimes) .sort((a, b) => a - b) .forEach((start, i) => timePeriods.insertBack({ start, activity: activities[i] })); population.push({ periods: timePeriods, excessPvEnergyUse, }); } return population; }; exports.populationFunction = populationFunction;