Giter VIP home page Giter VIP logo

sdn's Introduction

整体思路

首先我们定义学生缺勤有三种情况

一、长期缺勤,每门课程均有5-8位同学缺席了该学期80%的课 二、开学初很有激情,随着课越上越不知道自己在干嘛,慢慢地随着旷课次数的增加,旷课的概率也增加 三 、并不是有意旷课,每节课因为各种原因旷课没请假

第一种旷课情况,在第一次上课时生成一个不爱上课的同学的名单用于记录这些同学,方便后续的数据生成,当然老师看不见这些数据

对于第二种旷课情况,我们引入一种因子来衡量其旷课的概率,该因子应该有两部分组成,包括学生的绩点和对于该科目的兴趣, 对于科目的兴趣推测可以从该课程的先修课程中,同学的成绩获得,如果再相关课程取得优异成绩,推测会对这门课同样有兴趣 当然我们并没有这个数据,于是随机生成符合正态分布的随机数,用于模拟学生的兴趣,该值与绩点无关,最后通过二者值的加权和得到该因子 . 得到这个因子的值以后,选出值最大的前几位同学,设置其出勤值为1

第三种类型的旷课的同学的数据则随机生成

同样的,老师点到每位同学的概率也有一个因子决定,该因子由学生的绩点和老师对于学生的怀疑值决定 教师对于学生的初始怀疑值都为0,第一次课堂点名我们选择全点,对于旷课的同学,老师的怀疑值增加一定数值,因子由学生绩点和怀疑值加权和获得。同时,老师会在后续的点名中着重注意因子值比较高的同学,本次实验中,除了第一次点名为全点以外,其他每次点名都只点25名同学,包含15名缺勤值度量因子考前的同学,以及10名随机抽点的同学

使用方法

进入文件夹后即可看见本次实验提交的材料,其中.py文件是本次实验的主要代码,txt文件为随机生成的学生数据

具体函数用法:

init_student_list和init_teacher_list方法用于生成随机学生数据 ran_num_project()用于生成随机(5,8)个缺席80%课程的同学fiirst attend函数模拟学生出席的情况,roll_call函数模拟点名过程,其中,每次点名之前学生要先调用attend函数模拟学生出席 由于第一次点名为全点,采用first_roll_call函数进行第一次点名 attend函数负责模拟所有学生的出席情况

write_student()
write_teacher()
write_situation(day)
以上三个函数用于将学生表和教师表打印出来,write_situation负责打印点名情况,day表示的是点名的日期或者第几次课

get_E()函数用于获取每次点名得到的e值

call(day)函数通过调用 attend() roll_call() write_student() write_teacher() write_situation(day) get_E()

等函数,完成一次点名的全过程

read_data()函数用于读取给出的表格中的信息,只需读取学生表即可,其他表格的初始化都可以通过students表格来实现

sdn's People

Contributors

fzuchenhe avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.