#pragma once
#include "pandaAlgorithm.h"
#include "OptScheduling.h"
#include  <vector>

/**
*@brief ֱ���Ż�����
*/
class PANDAALGORITHM_API  FirstOptScheduling:public OptScheduling
{
public:
	FirstOptScheduling();
	~FirstOptScheduling();


	/**
	* @brief Ŀ�꺯����������Ӧ��ֵ
	* @param [in] monitorVals
	*/
	virtual double objectiveFunction(float cost, const map<string, double>& monitorVals);
	/**
	* @brief ����ѹ���
	* @param [in] HC[i]: ��ѹ��iԤ��ѹ��ֵ
	* @param [in] HF[I]: ��ѹ��iҪ�����͹�ˮ����ѹ����
	* @return
	*/
	virtual double pressureDifference(const std::vector<double>& HC, const std::vector<double>& HF);

	/**
	* @brief ˮ�ù�ˮ����
	* @param
	* @param
	* @return
	*/
	virtual double pumpPower(const PumpStruct& pumpParam);

	/**
	* @brief ��ˮ�ɱ�
	* @param [vector<double>] Q[i] ��i����վ��ˮ��
	* @param [vector<double>] S3[i] ��i����վ����ˮ�ɱ�����λ: Ԫ/m3
	* @return
	*/
	virtual double waterProductionCost(const vector<double>& Q, const vector<double>& S3);

	virtual double waterSupplyAndDemand(const vector<double>& Q, const double& Qd);
};