⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tabulist.h

📁 求解梯级水库群优化调度
💻 H
字号:
# ifndef _TABULIST_H_
# define _TABULIST_H_
#pragma warning(disable:4786)
#include <deque>
#include <vector>
#include <iostream>
#ifndef _PLANT_H_
#include "Plant.h"
#endif
#ifndef _OS_H_
#include "Os.h"
#endif
using namespace std;

class CTabuList
{
private:
	int IteratorNum;//迭代次数,定义为I
	int TabuLength;//禁忌长度,定义为T
	int NeighborNum;//邻域解个数,定义为N
	double CurrentObjectValue;//当前解对应目标函数值
	double BestSoFarObjectValue;//目前最好解对应目标函数值
	deque<deque<deque<double > > > TabuList;//禁忌表
	deque<double > Step;//步长矢量,一个电站一个步长
	deque<int > StepAccept;//各个电站步长接受次数
	deque<int > StepAttept;//各个电站步长尝试次数
    deque<double > TabuListAspiration;//禁忌表中对应目标函数值,AL	
    deque<double > NeighborObjectValue;//邻域解对应目标函数
	deque<deque<double > > BestSoFarWaterLevel;//目前最好解
	deque<deque<double > > BestSoFarPowerFlow;//
	deque<deque<double > > BestSoFarDischarge;//
	deque<deque<double > > CurrentWaterLevel;//当前解
	deque<deque<double > > CurrentPowerFlow;//
	deque<deque<double > > CurrentDischarge;//
	deque<deque<double > > StartWaterLevel;//初始解
	deque<deque<double > > StartPowerFlow;
	deque<deque<double > > StartDischarge;
	double StartObject;
	deque<deque<deque<double > > > NeighborWaterLevel;//邻域解
    deque<deque<deque<double > > > NeighborPowerFlow;//
	deque<deque<deque<double > > > NeighborDischarge;//
	CPlant plants[8];//参加调度的电站


public:
	CTabuList();//构造函数
	CTabuList(int iteratornum,int tabulength,int neighbornum);
	~CTabuList();//析构函数
private:
	void Init();//初始化,初始化禁忌参数,步长参数,生成初始解,初始化当前解、当前最优解
	void InitPlant();//初始化电站信息
	void InitStep();//初始化步长信息
	void InitSolution();//解初始化
	void SetTabuLength(int l);//设置禁忌长度
	void SetNeighborNum(int n);//设置邻域解个数
	void StepAdjust();//调整步长矢量
	void PushToTabuList(deque<deque<double > > &tabuitem);//加入禁忌表
	void UpdateAspiration(double l);//更新禁忌表对应目标函数值
	bool IsTabu(deque<deque<double > > &neighbor);//判断是否禁忌
	bool AlTest(int n);//对第n个邻域解进行AL TEST
	void GetNeighborSolutions();//获取邻域解
	double ObjectValue(deque<deque<double > > &w,deque<deque<double > > &p,deque<deque<double > > &d);//计算目标函数值
public:
	void OutputResult();//输出求解结果
	void RunTabuSearch();//运行禁忌搜索算法
	void RunTabuSearch(int n);//负荷给定
};
# endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -