oven02Max = 0.0;

refrigeratorError = 0.0;
refrigeratorNumObs = 0.0;
refrigeratorMin = 0.0;
refrigeratorMax = 0.0;

stoveError = 0.0;
stoveNumObs = 0.0;
stoveMin = 0.0;
stoveMax = 0.0;

for i in range(0,10000):
    kitchOut2InputObs = float(kitchOut2Trace.readline().split()[1]);
    kitchOut2OutputObs = float(kitchOut2OutputTrace.readline().split()[1]);
    kitchOut2ActualObs = (kitchOut2Trainer.test([kitchOut2InputObs]));
    kitchOut2ObsError = (kitchOut2ActualObs - kitchOut2OutputObs);
##    if (kitchOut2ObsError > 0.5):
##        print((kitchOut2ActualObs, kitchOut2OutputObs));
    kitchOut2Error += abs(kitchOut2ObsError);
    kitchOut2NumObs += 1;
    kitchOut2Min = kitchOut2ObsError \
                   if (kitchOut2ObsError < kitchOut2Min) \
                   else kitchOut2Min;
    kitchOut2Max = kitchOut2ObsError \
                   if (kitchOut2ObsError > kitchOut2Max) \
                   else kitchOut2Max;
##    print(kitchOut2ActualObs, kitchOut2OutputObs);
    
    kitchOut3InputObs = float(kitchOut3Trace.readline().split()[1]);
    kitchOut3OutputObs = float(kitchOut3OutputTrace.readline().split()[1]);
class PecanStreetCE():

    def __init__(self, funcOrder=3, numOfInputs=2, numHistoryStates=0):
        self.inputData = []
        self.outputData = []
        self.flexCE = Tesla(order=funcOrder, numInputs=(numOfInputs+numHistoryStates));
        self.aggregatedError = 0.0;
        self.aggregatedCount = 0;
        self.errorNumerator = 0.0;
        self.errorDenominator = 0;
        self.predictedList = [];
        self.actualList = [];
        self.testSetPredictedList = [];
        self.testSetActualList = [];
        self.numInputs = numOfInputs;
        self.numHistoryStates = numHistoryStates;

    def runTesla(self, csvFilepath):
        with open(csvFilepath) as csvFile:
            reader = csv.reader(csvFile);
            i = 0;
            for row in reader:
                inputList = [];
                historyList = [];
                outputValue = 0.0;

                if (i != 0 and i < self.numHistoryStates):
                    self.predictedList.append(0.0);
                    self.actualList.append(float(row[self.numInputs]));  
                elif (i != 0):
                    # Append the appropriate number of values from the CSV file to the input list.
                    for j in range(0,self.numInputs):
                        inputList.append(float(row[j]));

                    # Generate a list of history states to append to the inputs
                    for k in range(0, self.numHistoryStates):
                        historyList.append(-1-k);

                    # Append the history state as an additional inputs.
                    inputList += historyList;
                    outputValue = float(row[self.numInputs]);

                    self.inputData.append(inputList);
                    self.outputData.append(outputValue);

                if (i >= self.numHistoryStates and i <= 17500):
                    self.flexCE.addSingleObservation(inputList,
                                                     outputValue);
                    # Append garbage data to predicted, since this is training.
                    self.predictedList.append(0.0);
                    self.actualList.append(outputValue);

                elif (i > 17500 and i <= 35000):
                    predicted = self.flexCE.test(inputList);
                    if (predicted < 0):
                        predicted = 0.0;
                    actual = outputValue;

                    self.aggregatedError += pow(actual-predicted, 2);
                    self.aggregatedCount += 1;

#                    print(str(actual), "\t", str(predicted))
                    self.errorNumerator += abs((actual-predicted));
                    self.errorDenominator += 1;

                    self.predictedList.append(predicted);
                    self.actualList.append(actual);
                    self.testSetPredictedList.append(predicted);
                    self.testSetActualList.append(actual);

                elif (i > 35000):
                    print(str(time.clock()));
                    break;

                if (i == 17500):
                    print("Training data loaded");
                    startTime = time.clock()
                    self.flexCE.train();
                    elapsedTime = time.clock() - startTime;
                    print("CE trained, elapsed time:",
                          str(elapsedTime));
                    print(str(time.clock()));
                i+=1;
Exemple #3
0
##print(refrigeratorTrainer3.numObservations);
##print(refrigeratorTrainer3.coefficientVector[0]);

##print(refrigeratorTrainer4.numObservations);
##print(refrigeratorTrainer4.coefficientVector[0]);

testObs1 = float(refrigeratorTrace.readline().split()[1]);
testObs2 = float(refrigeratorTrace.readline().split()[1]);
testObs3 = float(refrigeratorTrace.readline().split()[1]);

for i in range(0,10001):
    testObs4 = float(refrigeratorTrace.readline().split()[1]);

    if (testObs4 > 300):
        print((testObs4, refrigeratorTrainer1.test([testObs4])));
##        print((testObs4, refrigeratorTrainer2.test([testObs3, testObs4])));
##        print((testObs4, refrigeratorTrainer3.test([testObs2, testObs3, testObs4])));
##        print((testObs4, refrigeratorTrainer4.test([testObs1, testObs2, testObs3, testObs4])));

    testObs1 = testObs2;
    testObs2 = testObs3;
    testObs3 = testObs4;

refrigeratorTrace.close();
refrigeratorOutputTrace.close();


##if (not os.path.isfile(fridgeTraceFile)):
##    for i in range(0, 86401):
##        (timestamp, entry) = refridgeTrace.readline().split();
Exemple #4
0
oven02Max = 0.0;

refrigeratorError = 0.0;
refrigeratorNumObs = 0.0;
refrigeratorMin = 0.0;
refrigeratorMax = 0.0;

stoveError = 0.0;
stoveNumObs = 0.0;
stoveMin = 0.0;
stoveMax = 0.0;

for i in range(0,10000):
    kitchOut2InputObs = float(kitchOut2Trace.readline().split()[1]);
    kitchOut2OutputObs = float(kitchOut2OutputTrace.readline().split()[1]);
    kitchOut2ActualObs = round(kitchOut2Trainer.test([kitchOut2InputObs]));
    kitchOut2ObsError = (kitchOut2ActualObs - kitchOut2OutputObs);
##    if (kitchOut2ObsError > 0.5):
##        print((kitchOut2ActualObs, kitchOut2OutputObs));
    kitchOut2Error += abs(kitchOut2ObsError);
    kitchOut2NumObs += 1;
    kitchOut2Min = kitchOut2ObsError \
                   if (kitchOut2ObsError < kitchOut2Min) \
                   else kitchOut2Min;
    kitchOut2Max = kitchOut2ObsError \
                   if (kitchOut2ObsError > kitchOut2Max) \
                   else kitchOut2Max;
##    print(kitchOut2ActualObs, kitchOut2OutputObs);
    
    kitchOut3InputObs = float(kitchOut3Trace.readline().split()[1]);
    kitchOut3OutputObs = float(kitchOut3OutputTrace.readline().split()[1]);