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

📄 grouppartial.h

📁 PSO(Particle Swarm Optimization 粒子群优化算法),是课程的一个小项目,实现了单机调度排序
💻 H
字号:
#ifndef _GROUPPARTIAL_H_
#define _GROUPPARTIAL_H_

#pragma once

#include "resource.h"

#include <vector>
#include <iostream>

using namespace std;

struct jobInfoNode 
{
	int p; //processing time
	int d; //due time
	float w1;
	float w2;
};

class Group
{
public:
	//parameters
	int partialNum ;  //种群数 一般20-40
	int jobNum;
	vector< vector<float> > jobInfo;  // jobInfo[i][j], i = 0 ~ N-1 其中N表示job数,j = 0 ~ 4, 存储w', w'',d, p 四个信息。因此 jibInfo[0], 表示第一个job的信息,是一个1*4的向量
	vector < vector<float> > groupPartial; // groupPartial[i][j], i = 0 ~ partialNum-1, j = 0 ~ N-1. 因此,groupPartial[0] 表示第一个粒子 即 X0,groupPartial[0] 是1*N的向量
	vector< vector<int> > localBest; // groupPartial[i][j], i = 0 ~ partialNum-1, j = 0 ~ N-1. 因此,groupPartial[0] 表示第一个粒子的local best,存的是job的排序
	vector<int> globalBest;  // globalBest 是一个1*N的向量,存的是job的排序
	vector<float> speed; // speed 是一个1*N的向量,每一个分量表示每一个job所对应的float数飞行的速度

	//methods
	Group(int N, int M);  //构造函数, 第一个int 是指partialNum 数, 第二个 int 指的是 jobNum 
	vector <jobInfoNode > Group::readInJobInfo(long jobNumber);   // 读入每个job的信息(w', w'',d, p),并把它写到 jobInfo中
	vector<int> mapping (vector<float> floatVec);   // vector<int> mapping (vector<float> 这里输入变量是 xj), 输出是 xj 相对应的工作的一个排序
	void initialGroup();   // 初始化 Grou中 groupPartial,使之变成groupPartial[partialNum][N]大小的变量,因为之前这个二位数组是空的
	float calculatefiteness(vector<int>);  // 输入的vector<int> 是mapping 后的输出结果, 也就是一个排序,然后根据这个排序计算适应度 输出
	void renewerSpeed(vector<float>) ;  // 更新速度,输入的是原来的速度,改了以后存在原来的地方就可以了
	void renewerPartial(vector<float>);   // 更新粒子,输入的是更新前的粒子,更新后存在原来的地方就可以了
	void renewerGlobalBest(vector<int>);  //更新local best 输入的是更新前的 local best
	void renewerLocalBest(vector<int>);    // 更新全局 best 输入的是更新前的全局 best
	void getResult(vector<int>);   // 输出结果
};

#endif

⌨️ 快捷键说明

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