?? directpredictevaluator.java
字號:
package app.predict;import ga.*;import gep.num.*;/** * 直接預(yù)測的評價器 */public class DirectPredictEvaluator implements Evaluator{ private NFitness fitnessFunction; // 適應(yīng)度函數(shù) private double[][] parameters; // 訓(xùn)練數(shù)據(jù)的參數(shù) private int size; // 數(shù)據(jù)集的大小 private int history; // 歷史長度 private int future; // 未來長度 private double[] values; // 臨時變量 private double[] buffer; // public DirectPredictEvaluator(Fitness fitnessFunction, NDataSet dataSet) { this.fitnessFunction = (NFitness) fitnessFunction; this.parameters = dataSet.getParameters(); this.size = parameters.length; this.history = parameters[0].length; double[] targets = dataSet.getTargets(); future = targets.length / size; values = new double[size*future]; buffer = new double[history]; } public double evaluate(Protein protein) { NEvaluable evaluable = (NEvaluable) protein; // 計算每一個樣本的值 try { int s = 0; for (int i=0; i<size; i++) { for (int j=0; j<history; j++) { buffer[j] = parameters[i][j]; } for (int j=0; j<future; j++) { double value = evaluable.evaluate(buffer); // 利用剛剛計算出來的值進(jìn)行下一步預(yù)測 for (int k=1; k<history; k++) { buffer[k-1] = buffer[k]; } buffer[history-1] = value; values[s++] = value; } } } catch (Exception e) { return fitnessFunction.getMinFitness(); } // 計算適應(yīng)度 double f = fitnessFunction.calculate(values); // TODO 測試"世界簡單性原理"// if (false) f += 1/((Formula) protein).getComplex(); return f; } public String toString() { return getClass().getName(); }}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -