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

📄 afsa.h

📁 一个试卷自动生成的利用人工鱼群算法的程序
💻 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 + -