📄 afsa.h
字号:
#pragma once
#include"math.h"
#include"time.h"
struct Fish_Class{
int *Position;
int Amount_Of_Neighbour;
float Food_Consistence;
};
struct Question_List_Class{
int Question_Value;
int Question_Number;
int Question_Hard_Level;
int Number_Of_Cover_Knowledge;
long *Knowledge_Number_List;//叶子知识点!!!!
};
class AFSA
{
public:
AFSA(int Visual,int Try_Number,Question_List_Class* Question_List,int Number_Of_Question,long* Knowledge_Number_List,int Number_Of_Knowledge,int Want_Hardest,int Want_Hard,int Want_Normal,int Want_Easy,int Want_Easist,float Level_Weight=1.0,float Cover_Weight=1.0,float Point_Weight=1.0,int Number_Of_fish=0,float Delta=1.0);
~AFSA(void);
protected:
//人工鱼数组
Fish_Class *Fish;
// 人工鱼的可视域,表示与自己有几位不同的鱼在可视范围内
int Visual;
// 拥挤系数
float Delta;
// 觅食时的搜索次数
int Try_Number;
// 人工鱼的条数
int Number_Of_fish;
// 表示两条鱼之间是否可见
int** Relation_Of_Fishes;
//人工鱼的维数
int Amount_Of_Dimension;
public:
// 设置某条鱼的食物浓度,鱼在数组中的号,鱼的食物浓度
int Set_Food_Consistence(int Symbol_Of_Fish, float Food_Consistence);
int Rand_Move(int Symbol_Of_Fish);
protected:
// 难易度优化权值
float Level_Weight;
// 知识点覆盖权值
float Cover_Weight;
// 总分差权值
float Point_Weight;
public:
float Get_Food_Consistence(int* Position,int &Most_Hard_Level_Difference,int &Amount_Difference,float &Cover_Difference);
protected:
// 知识点数
int Number_Of_Knowledge;
// 考试范围内的全部叶子知识点列表
long* Knowledge_Number_List;
// 考试范围内全部试题列表
Question_List_Class* Question_List;
// 希望的难题分值
int Want_Hardest;
// 希望的较难题目的分值
int Want_Hard;
// 希望的普通题分值
int Want_Normal;
// 希望的较简单题分值
int Want_Easy;
// 希望的简单题分值
int Want_Easist;
public:
// 计算第Symbol_Of_Fish条鱼和其它鱼的相邻关系
int Set_Neighbour(int Symbol_Of_Fish);
// 觅食
int Prey(int Symbol_Of_Fish);
// 聚群
int Swarm(int Symbol_Of_Fish);
// 追尾
int follow(int Symbol_Of_Fish);
protected:
// 公告板
Fish_Class Bulletin_Board;
public:
// 寻找最优解,试题列表以-1为结尾,try_number为迭代次数,负数表示最大迭代时间,Want_Most_Hard_Level_Difference可容忍的各难度部分最大分值差异,Want_Amount_Difference可容忍总分差异,Want_Cover_Difference可容忍知识点未覆盖率
int move(long double Try_Number,long *&Questions,int Want_Most_Hard_Level_Difference,int Want_Amount_Difference,float Want_Cover_Difference);
// 仅用于测试
void test(void);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -