/*
    TCFbEWeightedSum.h    June 6, 2004.

    Copyright (C) 2003-2004 CFbE Research Group,
    Software Engineering Laboratory,
    Graduate School of Information Science,
    Nara Institute of Science and Technology,
    All rights reserved.

    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2, (at your option) or
    any later version.

    This program is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with GNU Emacs; see the file COPYING.  If not, write to the
    Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.
*/
//---------------------------------------------------------------------------
#ifndef TCFbEWeightedSumH
#define TCFbEWeightedSumH
//---------------------------------------------------------------------------
#include <math.h>
#include "TCFbEPredictionAlgorithm.h"
#include "TCFbEToolkit.h"
#include "TCFbENeighbor.h"
#include "TCFbECustomTableEx.h"
#include "TCFbESimilarityComputationAlgorithm.h"
//---------------------------------------------------------------------------
class TCFbEWeightedSum : public TCFbEPredictionAlgorithm
{
public:
    virtual __fastcall TCFbEWeightedSum(void);    // コンストラクタ
    __fastcall ~TCFbEWeightedSum();    // デストラクタ

    // 計算に必要なキャッシュを準備する
    virtual void __fastcall PrepareCache(TCFbECustomTableEx* PredictionTable) {}

    virtual double __fastcall Predict(TCFbECustomTableEx* PredictionTable, int TargetRowIndex, int TargetColumnIndex, TObjectList* NeighborList, TCFbECustomTableEx* VWPredictionTable, TCFbESimilarityComputationAlgorithm* VWPredictionAlgorithm);    // TargetRowIndex 行目の TargetColumnIndex の値を予測する

protected:
    int             TargetRowIndex;
    int             TargetColumnIndex;

    virtual void __fastcall ClearCash(void);    // キャッシュをクリアする
    virtual double __fastcall GetNumerator(int NeighborIndex, int TargetColumnIndex);    // 分子の値を得る
    virtual double __fastcall GetDenominator(int NeighborIndex);    // 分母の値を得る
    virtual double __fastcall GetPredictedValue(double Numerator, double Denominator);    // 予測値を得る

private:

};
//---------------------------------------------------------------------------
#endif
