1 自动组卷算法比较
实现自动组卷是CET-4在线模拟考试系统的核心。随机抽取法和回溯试探法是过去经常被使用的自动组卷算法,但都存在着严重的不足。随机抽取法具有很大的随意性和不确定性。回溯试探法虽然组卷成功率远远高于随机抽取法,但其组卷效率并不高。遗传算法是在结合以上两种算法基础上所得到的一种新的改进算法,它是一种并行的、能够有效优化的算法[1],具有简单通用、鲁棒性强、全局寻优、收敛速度快等特点。
2 遗传算法的基本步骤
遗传算法的基本步骤主要包括编码、初始化群体、适应度计算、选择、交叉和变异。
3 基于遗传算法组卷的关键技术
将遗传算法应用于组卷,关键技术就在于遗传算法的基本步骤在组卷中的实现。
31 编码方案开启windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP),就可以让电脑变成无线路由器,实现共享上网,节省网费和路由器购买费。戴妃亲测通过,比conncetify方便,稳定,网速好!以 *** 作系统为win7的笔记本或装有无线网卡的台式机作为主机。主机设置如下: 1、以管理员身份运行命令提示符: “开始”---在搜索栏输入“cmd”----右键以“管理员身份运行”
启用并设定虚拟WiFi网卡:运行命令:netsh wlan set hostednetwork mode=allow ssid=wuminPC key=wuminWiFi (注意:上边命令"ssid"后红字为网络名称,自己随便命名,比如wuminPC可改为MyWiFi等等,自己喜欢怎么命名都行 "Key"后边红字为密码,自己随便命名,比如wuminWiFi 可以改为12345678,总之自己命名就可以了,不一定非得这个网络名称,这个密码,密码8位以上最好) 此命令有三个参数,mode:是否启用虚拟WiFi网卡,改为disallow则为禁用。 ssid:无线网名称,最好用英文(以wuminPC为例),即要设定的wifi名称。 key:无线网密码,八个以上字符(以wuminWiFi为例),即你要设定的wifi密码。以上三个参数可以单独使用,例如只使用mode=disallow可以直接禁用虚拟Wifi网卡。相信以前用过DOS的人都知道怎么运行命令了,那就是输入按回车netsh wlan set hostednetwork mode=allow ssid=wuminPC key=wuminWiFi 运行之后看到以下内容:
然后再打开“网络和共享中心”--“更改适配器设置”看看是不是多了一项,若果有多出的这一项“Microsoft Virtual WiFi Miniport Adapter”,那么说明你前边的设置是真确的。
开启成功,网络连接中会多出一个网卡为“Microsoft Virtual WiFi Miniport Adapter”的无线。为方便起见,将其重命名为虚拟WiFi。若没有,只需更新无线网卡驱动就OK了。 3、设置Internet连接共享:在“网络连接”窗口中,右键单击已连接到Internet的网络连接,选择“属性”→“共享”,勾上“允许其他······连接(N)”并选择“虚拟WiFi”。
确定之后,提供共享的网卡图标旁会出现“共享的”字样,表示“宽带连接”已共享至“虚拟WiFi。
开启无线网络:继续在命令提示符中运行:netsh wlan start hostednetwork 当然可以新建一个记事本文件复制:netsh wlan start hostednetwork 然后另存为:启动WIFI热点bat 下次开机的时候只需要以“管理员身份运行”就启动了。 至此,虚拟WiFi的红叉叉消失,WiFi基站已组建好,主机设置完毕。,iphone,touch,笔记本,带WiFi模块的手机等子机搜索到无线网络wuminPC,输入密码wuminWiFi,就能共享上网啦 网络名称和密码可以按照自己喜欢的写。 用这种方法建立的无线网络,比使用connetify要稳定,简单,而且网速好。同服务器一样,客户端的建立也有两种方式,使用Socket和使用TcpClient。首先介绍使用Socket来建立客户端。基本步骤和服务器的建立差不多,第一步要完成的工作是建立Socket对象,这和服务器是完全一样的。接下来调用Connect()方法连接服务器,Connect()方法具有4种重载形式,如下所示。
public void Connect(EndPoint remoteEP);
public void Connect(IPAddress address,int port);
public void Connect(IPAddress[] address,int port);
public void Connect(string host,int port);
第一种构造函数中的EndPoint和前面介绍的IPEndPoint比较相似,它也含有两个参数,只是把第一个参数换成了服务器主机名,第4种构造函数就是它的拆分形式;第二、三种均是利用服务器的IP地址和端口进行连接,第三种要稍微麻烦一些,它需要先利用服务器主机名来解析出服务器IP地址。
完成以上工作后,就只剩下与服务器之间传递数据的问题了。表17-5为一些客户端和服务器通信时要调用的Socket里的方法。
表17-5 客户端与服务器通信时常用的方法
方 法
说 明
Send()
往服务器发送数据
Receive()
从服务器接收数据
Shutdown()
禁用某Socket连接上数据的收发
下面是利用Socket建立的客户端的基本结构。
try
{
Socket s = new Socket(AddressFamilyInterNetwork,SocketTypeStream, ProtocolTypeTcp);
sConnect("2222222222",80); //2222222222为假设的服务器IP地址
sSend(message); //向服务器发送数据
sReceive(message); //从服务器接收数据
}
catch(Exception)
{
//捕获异常
}
前面提到过,TcpClient是C#提供用于简化Socket *** 作的,所以利用它来创建客户端要更简单一些。
它也是包含在SystemNetSockets命名空间中,它的构造函数具有4种重载形式,如下所示。
public TcpClient();
public TcpClient(AddressFamily family);
public TcpClient (IPEndPoint localEP);
public TcpClient (string hostname,int port);
第一种构造函数不带有参数,它需要在后面连接服务器的方法Conncet()中传入服务器的IP地址和端口信息;第二种的参数AddressFamily表示Socket类实例的寻址方案,一般情况下采用IPv4地址,即选择AddressFamilyInterNetwork,和前面一样,服务器的IP地址和端口信息需要在Conncet()中指定;后面两种构造函数的参数已经在前面多个地方提到过了,此处不再介绍。
以下是TcpClient建立的客户端程序代码。
try
{
SystemNetSocketsTcpClient tc = new TcpClient();
tcConnect("server",80);
}
catch(Exception ex)
{
//捕获异常
}
最后还要说明一个主要的属性Connected,它返回bool值,用于检测数据传输期间的服务器与客户端的连接状态。综上所述,客户端的设计相对于服务器要简单一些。在下一节中,将介绍基于流的服务器和客户端通信及数据收发。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)