📄 grouppartial.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 + -