Skip to content

Commit

Permalink
Added logging
Browse files Browse the repository at this point in the history
  • Loading branch information
degtiarev committed Nov 13, 2017
1 parent 43850d9 commit 49ccb8c
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 10 deletions.
32 changes: 29 additions & 3 deletions src/Controller.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ void sellEnergy(Heater agentA, Heater agentB) {
double maxPriceA = creditsA / demandA;
int currentStageA = agentA.getCurrentStage();
int currentRequiredStageA = agentA.getCurrentRequredStage();
System.out.println("Agent A MaxPrice: " + maxPriceA);


// Agent B
double creditsB = agentB.getAmoutOfCredits();
Expand All @@ -60,9 +62,12 @@ void sellEnergy(Heater agentA, Heater agentB) {
double maxPriceB = creditsB / demandB;
int currentStageB = agentB.getCurrentStage();
int currentRequiredStageB = agentB.getCurrentRequredStage();
System.out.println("Agent B MaxPrice: " + maxPriceB);

double currentPrice = auction.getPrice();
double totalDemand = demandA + demandB;
System.out.println("Current auction price: " + currentPrice);


double paymentA = demandA * currentPrice;
double paymentB = demandB * currentPrice;
Expand All @@ -72,13 +77,15 @@ void sellEnergy(Heater agentA, Heater agentB) {

// try to sell energy (case without auction)
if (totalDemand < energyCeiling) {
System.out.println("Selling without auction...");

if (paymentA < creditsA) {
agentA.setAmoutOfCredits(agentA.getAmoutOfCredits() - paymentA); // withdraw payment for energy
this.setCreditAmount(creditAmount + paymentA); // take payment for energy
agentA.setCurrentTemperature(currentRequredTemperatureA); // set new temperature to agent
agentA.setAmoutOfCredits(agentA.getAmoutOfCredits() + rMatrixA[currentStageA][currentRequiredStageA]); // get reward to heater for being in curent state
isAboughtEnergy = true;
System.out.println("Agent A bought all need energy");
}

if (paymentB < creditsB) {
Expand All @@ -87,6 +94,8 @@ void sellEnergy(Heater agentA, Heater agentB) {
agentB.setCurrentTemperature(currentRequredTemperatureB); // set new temperature to agent
agentB.setAmoutOfCredits(agentB.getAmoutOfCredits() + rMatrixB[currentStageB][currentRequiredStageB]); // get reward to heater for being in curent state
isBboughtEnergy = true;
System.out.println("Agent B bought all need energy");

}

}
Expand All @@ -99,10 +108,12 @@ void sellEnergy(Heater agentA, Heater agentB) {

if (!isAboughtEnergy) {
agentA.setAmoutOfCredits(agentA.getAmoutOfCredits() + rMatrixA[currentStageA][currentStageA]); // get penalty to heater for being in curent state
System.out.println("Agent A did not bought energy, got penalty");
}

if (!isBboughtEnergy) {
agentB.setAmoutOfCredits(agentB.getAmoutOfCredits() + rMatrixB[currentStageB][currentStageB]); // get penalty to heater for being in curent state
System.out.println("Agent B did not bought energy, got penalty");
}
}

Expand All @@ -117,7 +128,14 @@ void sellEnergy(Heater agentA, Heater agentB) {

boolean isAstarts = false;
double random = r.nextDouble();
if (random > 0.5) isAstarts = true;
if (random > 0.5) {
isAstarts = true;
System.out.println("Agent A starts auction");

} else {
System.out.println("Agent B starts auction");
}

int bidNum = 0;
double currentBid = auction.getPrice();

Expand Down Expand Up @@ -185,26 +203,34 @@ void sellEnergy(Heater agentA, Heater agentB) {

// set reward/penalty for agents
if (isAwon) {
System.out.println("Agent A got reward");
agentA.setAmoutOfCredits(agentA.getAmoutOfCredits() - paymentA); // withdraw payment for energy
this.setCreditAmount(creditAmount + paymentA); // take payment for energy
agentA.setCurrentTemperature(currentRequredTemperatureA); // set new temperature to agent
agentA.setAmoutOfCredits(agentA.getAmoutOfCredits() + rMatrixA[currentStageA][currentRequiredStageA]); // get reward to heater for being in curent state

System.out.println("Agent B got penalty");
agentB.setAmoutOfCredits(agentB.getAmoutOfCredits() + rMatrixB[currentStageB][currentStageB]); // get penalty to heater for being in curent state


} else {

System.out.println("Agent B got reward");
agentB.setAmoutOfCredits(agentB.getAmoutOfCredits() - paymentB); // withdraw payment for energy
this.setCreditAmount(creditAmount + paymentB); // take payment for energy
agentB.setCurrentTemperature(currentRequredTemperatureB); // set new temperature to agent
agentB.setAmoutOfCredits(agentB.getAmoutOfCredits() + rMatrixB[currentStageB][currentRequiredStageB]); // get reward to heater for being in curent state

System.out.println("Agent A got penalty");
agentA.setAmoutOfCredits(agentA.getAmoutOfCredits() + rMatrixA[currentStageA][currentStageA]); // get penalty to heater for being in curent state
}


} // !isEnd

System.out.println("Updated Q matrix of agent A");
agentA.showQmatrix();

System.out.println("Updated Q matrix of agent B");
agentB.showQmatrix();
}


Expand Down
54 changes: 48 additions & 6 deletions src/Heater.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public Heater(String name, double consumptionCoefficient, int lowLimit, int upLi
} // else

if (i == j) {
rMatrix[i][j] = penaltyForStaying;
rMatrix[i][j] = rMatrix[i][j] + penaltyForStaying;
} // if

if ((i == j && j == 0) || (i == j && j == matrixSize - 1)) {
Expand All @@ -69,6 +69,34 @@ public Heater(String name, double consumptionCoefficient, int lowLimit, int upLi

} // for i

System.out.println("Creating " + name + "...");
System.out.println("Low limit: " + lowLimit);
System.out.println("Up limit: " + upLimit);
System.out.println("Initial temperature: " + currentTemperature);
System.out.println("Initial Q matrix: ");
for (int i = 0; i < matrixSize; i++) {
for (int j = 0; j < matrixSize; j++) {
System.out.print(qMatrix[i][j] + " ");
}
System.out.println();
}

System.out.println("R matrix: ");
for (int i = 0; i < matrixSize; i++) {
for (int j = 0; j < matrixSize; j++) {
System.out.print(rMatrix[i][j] + " ");
}
System.out.println();
}

System.out.println("P matrix: ");
for (int i = 0; i < matrixSize; i++) {
for (int j = 0; j < matrixSize; j++) {
System.out.print(pMatrix[i][j] + " ");
}
System.out.println();
}

}


Expand All @@ -79,13 +107,12 @@ public void computeEnergyDemand() {

int currentStage = currentTemperature - lowLimit;

double maxMaxTU=-100000000;
int stageWithMaxTU=0;
double maxMaxTU = -100000000;
int stageWithMaxTU = 0;
for (int i = 0; i < matrixSize; i++) {
double currentTU = pMatrix[currentStage][i] * qMatrix[currentStage][i];

if (currentTU > maxMaxTU)
{
if (currentTU > maxMaxTU) {
maxMaxTU = currentTU;
stageWithMaxTU = i;
}
Expand All @@ -98,7 +125,12 @@ public void computeEnergyDemand() {

currentDemand = 6 * consumptionCoefficient + 0.5 * (currentRequredTemperature - currentWeather.getTemperature());

System.out.println(name + " " + "demands for 6 ours: " + currentDemand);
System.out.println(name + ": ************************************************");
System.out.println("Demands for 6 ours: " + currentDemand);
System.out.println("Amount of credits: " + amoutOfCredits);
System.out.println("Current temperature: " + currentTemperature);
System.out.println("Requred temperature: " + currentRequredTemperature);
System.out.println("*********************************************************");

}

Expand Down Expand Up @@ -137,8 +169,18 @@ public int getCurrentStage() {
public int getCurrentRequredTemperature() {
return currentRequredTemperature;
}

public int getCurrentRequredStage() {
return currentRequredTemperature - lowLimit;
}

public void showQmatrix() {
for (int i = 0; i < matrixSize; i++) {
for (int j = 0; j < matrixSize; j++) {
System.out.print(qMatrix[i][j] + " ");
}
System.out.println();
}
}

}
1 change: 1 addition & 0 deletions src/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public class Main {
public static void main(String[] args) {

populateWeatherSet();
System.out.println("*********************************************************");

int i = 0;

Expand Down
2 changes: 1 addition & 1 deletion src/SolarPanel.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
public class SolarPanel {

private static final double peakPower = 3 ;
private static final double peakPower = 3;

double sunLevel;
double amountOfGeneratedEnergy;
Expand Down

0 comments on commit 49ccb8c

Please sign in to comment.