Skip to content
Snippets Groups Projects
Commit e73e8dba authored by Tor-Einar Skog's avatar Tor-Einar Skog
Browse files

Optimization: Check that we have MSC observations before attempting to optimize MSC

parent dd850cdb
No related branches found
No related tags found
No related merge requests found
......@@ -27,7 +27,7 @@
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</project>
\ No newline at end of file
......@@ -260,7 +260,9 @@ public class RoughageNutritionModelImpl implements CostFunction {
boolean first = true;
Date forrigeDato = null;
for (Iterator<WeatherObservation> tempI = this.luftTemperaturVerdier.iterator(); tempI.hasNext();) {
// Avoiding concurrentmodificationexception
List<WeatherObservation> tempCopy = new ArrayList<>(this.luftTemperaturVerdier);
for (Iterator<WeatherObservation> tempI = tempCopy.iterator(); tempI.hasNext();) {
temperatur = tempI.next();
// Beregner TS1
......@@ -1612,9 +1614,7 @@ public class RoughageNutritionModelImpl implements CostFunction {
NelderMead nelderMead = new NelderMead();
Collections.sort(this.observasjoner); // For å sikre oss mhp. en del datoavhengige rutiner
// Rekkefølge:
// 1. Optimerer parametre for utvikling
this.optimeringsMaal = RoughageNutritionModelImpl.OPTIMERING_UTVIKLING;
/**
* Denne metoden forteller NelderMead-klassen om vi er "nær nok" til at
......@@ -1645,22 +1645,35 @@ public class RoughageNutritionModelImpl implements CostFunction {
}
};
// Optimize only if we've got optimization observations
boolean foundMSC = this.observasjoner.stream().filter(
(obs) -> obs.getMSC() != null
).count() > 0;
// Rekkefølge:
// 1. Optimerer parametre for utvikling
if(this.observasjoner.stream().filter( (obs) -> obs.getMSC() != null ).count() > 0)
{
this.optimeringsMaal = RoughageNutritionModelImpl.OPTIMERING_UTVIKLING;
// Rekkefølge for elementene: {alfa}
// Max og min-verdier for de ulike elementene:
// alfa {0.002-0.004}
double[][] verticesUtvikling = {{0.0025}, {0.0035}};
// Rekkefølge for elementene: {alfa}
// Max og min-verdier for de ulike elementene:
// alfa {0.002-0.004}
double[][] verticesUtvikling = {{0.0025}, {0.0035}};
PointCostPair optimumUtvikling = nelderMead.minimize(this, 1000, cChecker, verticesUtvikling);
if (DEBUG) {
System.out.println("[GrovforModell/optimerParametre] DEBUG: alfa=" + optimumUtvikling.getPoint()[0]);
}
this.alfa = ((Double) optimumUtvikling.getPoint()[0]);
//this.AIbeta = ((Double) optimumUtvikling.getPoint()[1]).doubleValue();
// Nullstiller AI-matrisen, slik at øvrige beregninger går som planlagt
this.AIBakgrunnsdataMatrise = null;
PointCostPair optimumUtvikling = nelderMead.minimize(this, 1000, cChecker, verticesUtvikling);
if (DEBUG) {
System.out.println("[GrovforModell/optimerParametre] DEBUG: alfa=" + optimumUtvikling.getPoint()[0]);
}
this.alfa = ((Double) optimumUtvikling.getPoint()[0]);
//this.AIbeta = ((Double) optimumUtvikling.getPoint()[1]).doubleValue();
// Nullstiller AI-matrisen, slik at øvrige beregninger går som planlagt
this.AIBakgrunnsdataMatrise = null;
}
// 2. Optimering av parametre for avling
// Sjekker først om vi har observasjoner av avling i peroden før førsteslått og mellom førsteslått og andreslått.
boolean avlingMaaltFoerFoersteslaatt = false;
......@@ -1938,6 +1951,7 @@ public class RoughageNutritionModelImpl implements CostFunction {
}
differanse += Math.pow(maaltUtviklingstrinn - beregnetUtviklingstrinn, 2);
}
System.out.println("Differanse=" + differanse);
return differanse;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment