遗传算法的VB程序

遗传算法的VB程序
遗传算法的VB程序

遗传算法的VB程序

最近看了下遗传算法,刚看了一点,就觉得手痒,非要把程序编制出来看看效果(我现在总认为那些理论再高深,无法用计算机实现就是空话,呵呵)。下面是我调试了好久的代码,无赖没有学过数据结构&算法,程序写的很差,单效果还是出来了,高兴,和大家共同分享下成果吧。

还是一样,不想说原理,因为这里想搞个公式上去N麻烦。直接给点实际的东西。具体步骤是参考《MATLAB遗传算法工具箱及应用》(西安电子科技大学出版社)16~22页的相关说明编制的,有兴趣的同学可以去看看这本书。

在程序调试成功的同时,郁闷的是工作的事情,现在好多企业久是指名不要研究生,而我又是一个四不象,本专业是热能工程,可我本专业基本上还是本科水平,大部分时间都去自学一些杂七杂八的东西去了,比如人工智能,PLC,自动控制方面,图像处理啊,可又只是懂个皮毛,现在找工作也不知道怎么给自己定位了。有相关经历的同学可要指点我一二哦。

Option Explicit

'程序实现功能:用遗传算法求函数的最大值

'作者: laviewpbt

'联系方式:

'QQ:33184777

'版本:Version 1.4.0

'说明:复制请保留源作者信息,转载请说明,欢迎大家提出意见和建议

Dim N2(30) As Long '用来保存2的N次方的数据

Dim Script As Object '调用其Eval函数

Public Enum CrossOver

OnePointCrossOver '单点交叉

TwoPointCrossOver '两点交叉

UniformCrossOver '平均交叉

End Enum

Public Enum Selection

RouletteWheelSelection '轮盘赌选择

StochasticTourament '随机竞争选择

RandomLeagueMatches '随机联赛选择

StochasticUniversalSampleing '随机遍历取样

End Enum

Public Enum EnCoding

Binary '标准二进制编码

Gray '格雷码

End Enum

Private Type GAinfo

Max As Double

Cordinate() As Double

End Type

'*********************************** 二进制码转格雷码

***********************************

'

'函数名: BinaryToGray

'参数: Value - 要转换的二进制数的实值

'说明:如3对应的二进制表示为0011,而用格雷码表示为0010,这个函数的value为0011代表的实数

' 而返回的是0010所代表的实数(2)

'返回值:返回格雷码对应的二进制数的实值

'源作者:黄毅

'开发语言: C语言

'修改者: laviewpbt

'时间: 2006-11-4

'

'*********************************** 二进制码转格雷码

***********************************

Public Function BinaryToGray(Value As Long) As Long

Dim V As Long, Max As Long

Dim start As Long, mEnd As Long, Temp As Long, Counter As Long Dim Flag As Boolean

V = Value: Max = 1

While V > 0

V = V / 2

Max = Max * 2

Wend

If Max = 0 Then Exit Function

Flag = True

mEnd = Max - 1

While start < mEnd

Temp = (mEnd + start - 1) / 2

If Value <= Temp Then

If Not Flag Then

Counter = Counter + (mEnd - start + 1) / 2

End If

mEnd = Temp

Flag = True

Else

If Flag Then

Counter = Counter + (mEnd - start + 1) / 2

End If

Temp = Temp + 1

start = Temp

Flag = False

End If

Wend

BinaryToGray = Counter

End Function

'*********************************** 格雷码转二进制码

***********************************

'

'函数名: BinaryToGray

'参数: Value - 要转换的二进制数的实值

'说明:如3对应的二进制表示为0011,而用格雷码表示为0010,这个函数的value为0010代表的实数

' 而返回的是0010所代表的实数(2)

'返回值:返回格雷码对应的二进制数的实值

'源作者:黄毅,感谢viena(维也纳nn)

'开发语言: C语言

'修改者: laviewpbt

'时间: 2006-11-4

'

'*********************************** 格雷码转二进制码

***********************************

Public Function GrayToBinary(Value As Long) As Long

Dim V As Long, Max As Long

Dim start As Long, mEnd As Long, Temp As Long, Counter As Long Dim Flag As Boolean

V = Value: Max = 1

While V > 0

V = V / 2

Max = Max * 2

Wend

Flag = True

mEnd = Max - 1

While start < mEnd

Temp = Counter + (mEnd - start + 1) / 2

If Flag Xor (Value < Temp) Then

If Flag Then Counter = Temp

start = (start + mEnd + 1) / 2

Flag = False

Else

If Not Flag Then Counter = Temp

mEnd = (start + mEnd - 1) / 2

Flag = True

End If

Wend

GrayToBinary = start

End Function

'*********************************** 十进制转转二进制码

***********************************

'

'函数名: DecToBinary

'参数: Value - 要转换的十进制数

'返回值:返回对应的二进制数

'修改者: laviewpbt

'时间: 2006-11-4

'

'*********************************** 十进制转转二进制码

***********************************

Private Function DecToBinary(ByVal Value As Long) As String Dim StrTemp As String

Dim ModNum As Integer

Do While Value > 0

ModNum = Value Mod 2

Value = Value \ 2

StrTemp = ModNum & StrTemp

Loop

DecToBinary = StrTemp

End Function

'************************************* 二十进制转换

**********************************

'

'函数名: BinToDec

'参数: BinCode - 二进制字符串

'返回值:转换后的十进制数

'说明:二进制字符串转换位十进制数

'作者: laviewpbt

'时间: 2006-11-3

'

'************************************* 二十进制转换

**********************************

Public Function BinToDec(BinCode As String) As Long

Dim i As Integer, Dec As Long, Length As Integer

Length = Len(BinCode)

For i = 1 To Length

If Mid(BinCode, i, 1) = "1" Then

Dec = Dec + N2(Length - i)

End If

Next

BinToDec = Dec

End Function

'*********************************** 编码

***********************************

'

'过程名: Coding

'参数: Bits - 需要编码的位数

' BinGroup - 保存群体编码数据的数组

'说明:编码,准确的说应该是初始化种群,对于二进制码和格雷码这个过程一样的

'作者: laviewpbt

'时间: 2006-11-3

'

'*********************************** 编码

***********************************

Public Sub Coding(Bits As Integer, BinGroup() As String)

Dim i As Integer, j As Integer

Dim Temp As String

Randomize

For i = 1 To UBound(BinGroup, 1)

Temp = ""

For j = 1 To Bits

If Rnd >= 0.5 Then

Temp = Temp & "1"

Else

Temp = Temp & "0"

End If

Next

BinGroup(i) = Temp

Next

End Sub

遗传算法的优缺点

遗传算法属于进化算法( Evolutionary Algorithms) 的一种, 它通过模仿自然界的选择与遗传的机理来寻找最优解. 遗传算法有三个基本算子: 选择、交叉和变异. 。数值方法求解这一问题的主要手段是迭代运算。一般的迭代方法容易陷入局部极小的陷阱而出现"死循环"现象,使迭代无法进行。遗传算法很好地克服了这个缺点,是一种全局优化算法。 生物在漫长的进化过程中,从低等生物一直发展到高等生物,可以说是一个绝妙的优化过程。这是自然环境选择的结果。人们研究生物进化现象,总结出进化过程包括复制、杂交、变异、竞争和选择。一些学者从生物遗传、进化的过程得到启发,提出了遗传算法( GA)。算法中称遗传的生物体为个体( individual ),个体对环境的适应程度用适应值( fitness )表示。适应值取决于个体的染色体(chromosome),在算法中染色体常用一串数字表示,数字串中的一位对应一个基因 (gene)。一定数量的个体组成一个群体(population )。对所有个体进 行选择、交叉和变异等操作,生成新的群体,称为新一代( new generation )。遗传算法计算程序的流程可以表示如下[3]:第一步准备工作 (i)选择合适的编码方案,将变量(特征)转换为染色体(数字串,串长为m。通常用二 进制编码。 (2 )选择合适的参数,包括群体大小(个体数M)、交叉概率PC和变异概率Pm (3、确定适应值函数f (x、。f (x、应为正值。 第二步形成一个初始群体(含M个个体)。在边坡滑裂面搜索问题中,取已分析的可能滑裂 面组作为初始群体。 第三步对每一染色体(串)计算其适应值fi ,同时计算群体的总适应值。 第四步选择 计算每一串的选择概率Pi=fi/F 及累计概率。选择一般通过模拟旋转滚花轮 ( roulette ,其上按Pi大小分成大小不等的扇形区、的算法进行。旋转M次即可选出M个串来。在计算机 上实现的步骤是:产生[0,1]间随机数r,若rpc ,则该串参加交叉操作,如此选出参加交叉的一组后,随机配对。 (2)对每一对,产生[1 , m]间的随机数以确定交叉的位置。 第六步变异 如变异概率为Pm则可能变异的位数的期望值为Pm x mx M,每一位以等概率变异。具体为 对每一串中的每一位产生[0 , 1]间的随机数r,若r

遗传算法求解实例

yj1.m :简单一元函数优化实例,利用遗传算法计算下面函数的最大值 0.2)*10sin()(+=x x x f π,∈x [-1, 2] 选择二进制编码,种群中个体数目为40,每个种群的长度为20,使用代沟为0.9, 最大遗传代数为25 译码矩阵结构:?????????? ??????? ???? ?=ubin lbin scale code ub lb len FieldD 译码矩阵说明: len – 包含在Chrom 中的每个子串的长度,注意sum(len)=length(Chrom); lb 、ub – 行向量,分别指明每个变量使用的上界和下界; code – 二进制行向量,指明子串是怎样编码的,code(i)=1为标准二进制编码, code(i)=0则为格雷编码; scale – 二进制行向量,指明每个子串是否使用对数或算术刻度,scale(i)=0为算术 刻度,scale(i)=1则为对数刻度; lbin 、ubin – 二进制行向量,指明表示范围中是否包含每个边界,选择lbin=0或 ubin=0,表示从范围中去掉边界;lbin=1或ubin=1则表示范围中包含边界; 注:增加第22行:variable=bs2rv(Chrom, FieldD);否则提示第26行plot(variable(I), Y, 'bo'); 中variable(I)越界 yj2.m :目标函数是De Jong 函数,是一个连续、凸起的单峰函数,它的M 文件objfun1包含在GA 工具箱软件中,De Jong 函数的表达式为: ∑ == n i i x x f 1 2 )(, 512512≤≤-i x 这里n 是定义问题维数的一个值,本例中选取n=20,求解 )(min x f ,程序主要变量: NIND (个体的数量):=40; MAXGEN (最大遗传代数):=500; NV AR (变量维数):=20; PRECI (每个变量使用多少位来表示):=20; GGAP (代沟):=0.9 注:函数objfun1.m 中switch 改为switch1,否则提示出错,因为switch 为matlab 保留字,下同! yj3.m :多元多峰函数的优化实例,Shubert 函数表达式如下,求)(min x f 【shubert.m 】

遗 传 算 法 详 解 ( 含 M A T L A B 代 码 )

GATBX遗传算法工具箱函数及实例讲解 基本原理: 遗传算法是一种典型的启发式算法,属于非数值算法范畴。它是模拟达尔文的自然选择学说和自然界的生物进化过程的一种计算模型。它是采用简单的编码技术来表示各种复杂的结构,并通过对一组编码表示进行简单的遗传操作和优胜劣汰的自然选择来指导学习和确定搜索的方向。遗传算法的操作对象是一群二进制串(称为染色体、个体),即种群,每一个染色体都对应问题的一个解。从初始种群出发,采用基于适应度函数的选择策略在当前种群中选择个体,使用杂交和变异来产生下一代种群。如此模仿生命的进化进行不断演化,直到满足期望的终止条件。 运算流程: Step 1:对遗传算法的运行参数进行赋值。参数包括种群规模、变量个数、交叉概率、变异概 率以及遗传运算的终止进化代数。 Step 2:建立区域描述器。根据轨道交通与常规公交运营协调模型的求解变量的约束条件,设置变量的取值范围。 Step 3:在Step 2的变量取值范围内,随机产生初始群体,代入适应度函数计算其适应度值。 Step 4:执行比例选择算子进行选择操作。 Step 5:按交叉概率对交叉算子执行交叉操作。

Step 6:按变异概率执行离散变异操作。 Step 7:计算Step 6得到局部最优解中每个个体的适应值,并执行最优个体保存策略。 Step 8:判断是否满足遗传运算的终止进化代数,不满足则返回Step 4,满足则输出运算结果。 运用遗传算法工具箱: 运用基于Matlab的遗传算法工具箱非常方便,遗传算法工具箱里包括了我们需要的各种函数库。目前,基于Matlab的遗传算法工具箱也很多,比较流行的有英国设菲尔德大学开发的遗传算法工具箱GATBX、GAOT以及Math Works公司推出的GADS。实际上,GADS就是大家所看到的Matlab中自带的工具箱。我在网上看到有问为什么遗传算法函数不能调用的问题,其实,主要就是因为用的工具箱不同。因为,有些人用的是GATBX带有的函数,但MATLAB自带的遗传算法工具箱是GADS,GADS当然没有GATBX里的函数,因此运行程序时会报错,当你用MATLAB来编写遗传算法代码时,要根据你所安装的工具箱来编写代码。 以GATBX为例,运用GATBX时,要将GATBX解压到Matlab下的toolbox文件夹里,同时,set path将GATBX文件夹加入到路径当中。 这块内容主要包括两方面工作:1、将模型用程序写出来(.M文件),即目标函数,若目标函数非负,即可直接将目标函数作为适应度函数。2、设置遗传算法的运行参数。包括:种群规模、变量个数、区域描述器、交叉概率、变异概率以及遗传运算的终止进化代数等等。

vb练习题及答案.doc

vb 练习题及答案 【篇一:vb 习题(含答案)】 lass=txt>1 、vb 程序中,通常不会产生错误提示的是( )。(1 分) a、编译错误 b、逻辑错误 c、运行时错误 d、实时错误 2、在设计阶段,双击窗体上任一空白处,打开的窗口是( )。(1 分) a、工程资源管理器窗口 b、代码窗口 c、工具箱窗口 d、属性窗口 3、下列说法中,正确的说法是( )。(1 分) a、窗体名称和该窗体文件名必须一致 b、窗体名称和该窗体文件名 可以不相同 c、窗体名称和该窗体文件名不能使用汉字 d、窗体名称不能使用汉字、但该窗体文件名能使用汉字 4、visual basic 有完备的help 联机帮助功能,可以通过按下功能 键( )得到帮助。( 1 分) a、f9 b 、f8 c、f1 d 、f5 5、以下( )控件可作为容器使用。( 1 分) a、label b 、picturebox c、textbox d 、image 6、将窗体的boderstyle 属性设置为( )可使窗口不显示标题栏。( 1 分) a、0 b 、1 c、2 d 、5 7、文本框没有( )属性(1 分) a、text b 、name c、caption d 、borderstyle 23、下列( )是不合法的常量。( 1 分) a、100 b 、10e02 c、100.0 d 、10e0.5 24、下列对变量的定义中,定义x 为变体型变量的是( )。(1 分) a、dim x as double b 、dim x c、dim x! d 、x%=23

25、设有如下变量声明:dim testdate as date ,为变量testdate 正确赋值的表达方式是( )。(1 分) a、textdate=#1/1/2002# b 、testdate=#1/1/2002# c、textdate=date(1/1/2002) d 、 testdate=format(m/d/yy,1/1/2002) 26、在立即窗口中运行以下语句,a=beijing :b=shanghai :print a,b 对其输出结果的描述中,正确的是( )。(1 分) a、beijing 和shanghai 中间没有空格 b、beijing 和shanghai 中 间有1 个空格 c、beijing 和shanghai 中间有 6 个空格 d、beijing 和shanghai 前面有7 个空格 27、语句段a=3: b=5:t=a :a=b: b=t 执行后( )。(1 分) a、a 值为3,b 值为3 b 、a 值为3,b 值为5 c、a 值为5,b 值为5 d 、a 值为5,b 值为3 28、下列语句中,正确的是( )。(1 分) a、if x3*y and xy then y=x^3 b 、if x3*y and xy then y=3x c、if x3*y : xy then y=x^3 d 、if x3*y and xy then y=x**3 29、下面程序段dim x%: x=5: if x then y=x+1 else y=x 运行后, y 结果是( )。(1 分) a、5 b 、6 c、1 d 、显示出错信息 30、执行语句 a = inputbox(today, tomorrow, yesterday, 5, 5) , 将显示一个输入对话框,在对话框的输入区中显示的信息是( )。(1 分) a、today b 、tomorrow c、yesterday d 、5 31、窗体上有一个命令按钮command1, 编写如下事件过 程: private sub command1_click() :x = val(inputbox(x=)) : y = inputbox(y=) : print x + y : end sub, 单击命令按钮,先后在两个输 入对话框中输入123 和321 ,窗体显示的内容是( )。(1 分) a、444 b 、123321 c、123+321 d 、出错信息 32、执行语句msgbox aaa, 2, bbb 后,所产生的消息框的标题是 ( )。(1 分) a、aaa b 、bbb

遗传算法

基于新的混合遗传算法的订单生产工序顺序相关的流水车 间调度问题研究 A novel hybrid genetic algorithm to solve the make-to-order sequence-dependent flow-shop scheduling problem Mohammad Mirabi ?S. M. T. Fatemi Ghomi ?F. Jolai 2013年5月29号收到该文献,2014年3月18号录取,2014年4月9日出版.作者(2014).这篇文章在开放存取的https://www.360docs.net/doc/a05525407.html, 网站发表 摘要流水车间调度问题(FSP)用于处理m台机器n个工序的流水作业。尽管FSP是典 型的NP-hard问题,依然没有有效的算法以找到这个问题的最优解。为了减少库存,延迟和安装成本,在工作时间一定,序列相关的每台机器上解决流水车间调度排序问题,在这提出了一种有三个遗传算子的新型混合遗传算法(HGA)。该算法应用一种改进的方法来生成初始种群,并使用一种应用迭代交换过程改进初始解的改进启发式算法。我们认为订单式生产方式,工序间隔时间是基于最大安装成本的禁忌搜索算法的解。此外,与最近开发的启发式算法通过计算实验结果比较表明,该算法在解\的精度和效率方面表现出非常强的竞争力。 关键词:混合遗传算法流水作业调度序列相关 引言 流车间调度问题(FSP)作为在制造业研究的主要问题已经近七十年。在一个有M台机器的流水作业车间中有m个工位,每个工序又有一台或几台机器。此外,有n个工件在m个工位上依次加工。在经典的流水作业问题里,每个工位都有一台机器,这一领域的研究吸引了最多的人次。FSP的两个主要子问题是序列独立时间设置(SIST)和顺序相关时间设置(SDST)。SDST流水作业问题更具有现实意义,但是吸引的注意力却少得多,特别是2000年以前(Allahverdi等,2008) 在流水车间调度问题的目标是找到一个序列的机器加工的作业,以便一个给定的标准进行了优化。这里有n个工件在每台机器上操作的可能的顺序,以及(N!)*M个的可能处理顺序。流水作业调度的研究通常只参加置换序列,其中操作的处理顺序是所有机器。在这里,我们也采用这种限制。 最小化所有最大完工时间作业(成为完工期并通过的Cmax表示)是公知的,也是在文献M. Mirabi (&) Group of Industrial Engineering, Ayatollah Haeri University of Meybod, P.O. Box 89619-55133, Meybod, Iran e-mail: M.Mirabi@https://www.360docs.net/doc/a05525407.html, S. M. T. Fatemi Ghomi Department of Industrial Engineering, Amirkabir University of Technology, P.O. Box 15916-34311, Tehran, Iran e-mail: Fatemi@aut.ac.ir F. Jolai Department of Industrial Engineering, College of Engineering, University of Tehran, P.O. Box 14395-515, Tehran, Iran

vb试题及答案

VB试卷 一、单项选择题(每题2分,共40分) 1. 窗体的标题栏显示内容由窗体对象的属性决定。 A) BackColor B)BackStyle C)Text D)Caption 2. 窗体的示意图标可用属性来设置。 A) Picture B) Image C) Icon D) MouseIcon 3. 窗体的控制菜单的有无由窗体对象的属性决定。 A) ControlBox B) MinButton C) MaxButton D) BorderStyle 4. 若要取消窗体的最大化功能,则可设置属性为False来实现。 A) ControlBox B) MinButton C) MaxButton D) Enabled 5. 以下4个选项,不属于VB的工作模式。 A) 编译 B) 设计 C) 运行 D) 中断 6. 窗体的边框样式由窗体对象的属性来设置。 A) BackStyle B) BorderStyle C) WindowState D) FillStyle 7. 若要以程序代码方式设置在窗体中显示文本的字体大小,则可用窗体对象的属性来实现。 A) FontName B) Font C) FontSize D) FontBold 8. 命令按钮的标题文字由属性来设置。 A) Text B) Caption C) Name D) (名称) 9. VB是面向对象的程序设计,以下4个选项,不属于面向对象的三要素。 A) 变量 B) 属性 C) 事件 D) 方法 10. 若要将某命令按钮设置为默认命令按钮,可设置属性为True来实现。 A) Value B) Cancel C) Default D) Enabled 11. 若要使命令按钮不可见,可设置属性为False来实现。 A) Value B) Enabled C) Visible D) Cancel 12. 运行程序时,系统自动执行窗体的事件。 A) load B) click C) unload D) GotFocus 13. 若要设置文本框最大可接收的字符数,可通过属性来实现。 A) MultiLine B) Length C) Max D) MaxLength 14. 若要使某命令按钮获得控制焦点,可使用方法来设置。 A) Refresh B) SetFocus C) GotFocus D) Value 15. 若要使命令钮可响应事件,可通过设置属性的取值来实现。 A) Visible B) Enabled C) Default D) Value 16. 在运行时,若要调用某命令按钮的Click事件过程,可设置该命令按钮对象的 属性为True来实现。 A) Enabled B) Value C) Default D) Cancel 17. 标签框的边框,由属性的设置值决定。

(实例)matlab遗传算法工具箱函数及实例讲解

matlab遗传算法工具箱函数及实例讲解 核心函数: (1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成函数 【输出参数】 pop--生成的初始种群 【输入参数】 num--种群中的个体数目 bounds--代表变量的上下界的矩阵 eevalFN--适应度函数 eevalOps--传递给适应度函数的参数 options--选择编码形式(浮点编码或是二进制编码)[precision F_or_B], 如 precision--变量进行二进制编码时指定的精度 F_or_B--为1时选择浮点编码,否则为二进制编码,由precision指定精度) (2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,... termFN,termOps,selectFN,selectOps,xOverFNs,xOverO ps,mutFNs,mutOps)--遗传算法函数 【输出参数】 x--求得的最优解 endPop--最终得到的种群 bPop--最优种群的一个搜索轨迹 【输入参数】 bounds--代表变量上下界的矩阵 evalFN--适应度函数 evalOps--传递给适应度函数的参数 startPop-初始种群 opts[epsilon prob_ops display]--opts(1:2)等同于initializega 的options参数,第三个参数控制是否输出,一般为0。如[1e-6 1 0] termFN--终止函数的名称,如['maxGenTerm'] termOps--传递个终止函数的参数,如[100] selectFN--选择函数的名称,如['normGeomSelect'] selectOps--传递个选择函数的参数,如[0.08] xOverFNs--交叉函数名称表,以空格分开,如['arithXover heuristicXover simpleXover'] xOverOps--传递给交叉函数的参数表,如[2 0;2 3;2 0] mutFNs--变异函数表,如['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation'] mutOps--传递给交叉函数的参数表,如[4 0 0;6 100 3;4 100 3;4 0 0]

vb题库及答案

| 最新VB题库及答案 一、选择题 第1部分 1、在窗体(名称为Form1)上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写一个事件过程。程序运行后,如果在文本框中输入一个字符,则把命令按钮的标题设置为“计算机等级考试”。以下能实现上述操作的事件过程是 A、Private Sub Text1_Change() = "计算机等级考试" End Sub ] B、Private Sub Command1_Click() Caption = "计算机等级考试" End Sub C、Private Sub Form_Click() = "计算机等级考试" End Sub D、Private Sub Command1_Click() = "计算机等级考试" { End Sub 2、在一行内写多条语句时,每个语句之间用()符号分隔。 A、 , B、: C、. D、; 3、下面()是合法的变量名。 A、X_YZ B、123ABC C、INTEGER D、X-Y ] 4、下面()是合法的字符常量。 A、 ABC$ B、“ABC” C、‘ABC’ D、 ABC 5、表达式16/4 - 2^5*8 MOD 5\2的值为()。 A、14 B、 4 C、20 D、2 6、设a=”MicrosoftVisualBasic”,则以下使变量的b值为”VisualBasic”的语句是 A、b=Left(a,10) B、b=Mid(a,10) — C、b=Right(a,10) D、b=Mid(a,11,10) 7、设a="a",b="b",c="c",d="d",执行语句x = IIf((a < b) Or (c > d), "A",

遗传算法程序示例

遗传算法程序示例 %% I. 清空环境变量 %optimtool solver 中选择GA %添加gaot工具箱 clear all clc %% II. 绘制函数曲线 x = 0:0.01:9; y = x + 10*sin(5*x)+7*cos(4*x); figure plot(x, y) xlabel('自变量') ylabel('因变量') title('y = x + 10*sin(5*x) + 7*cos(4*x)') grid %% III. 初始化种群 initPop = initializega(50,[0 9],'fitness'); %种群大小;变量变化范围;适应度函数的名称 %看一下initpop 第二列代表适应度函数值 %% IV. 遗传算法优化 [x endPop bpop trace] = ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,... 'normGeomSelect',0.08,'arithXover',2,'nonUnifMutation',[2 25 3]); %变量范围上下界;适应度函数;适应度函数的参数;初始种群;精度和显示方式;终止函数的名称; %终止函数的参数;选择函数的名称;选择函数的参数;交叉函数的名称;交叉函数的参数;变异函数的 %名称;变异函数的参数 % X 最优个体endpop 优化终止的最优种群bpop 最优种群的进化轨迹trace 进化迭代过程中 %最优的适应度函数值和适应度函数值矩阵 %% V. 输出最优解并绘制最优点 x hold on plot (endPop(:,1),endPop(:,2),'ro')

vb经典题目及答案

1、在考生文件夹下有工程文件wy7、vbp及窗体文件wy7、frm,该程序就是不完整的,请在有?号的地方填入正确的程序代码,然后删除?及所有注释符号(即 '号),但不能修改其它部分。修改后的程序文件都保存,存盘时不得修改文件夹与文件名。 本题描述如下: 在窗体上有一个名为Text1的文本框,有三个命令按钮,名称分别就是C1、C2与C3,标题分别就是"读入"、"加密"与"存盘"。要求程序运行后,点击"读入"按钮,将文本文件in7、txt(该文件在考生文件夹下)中的文本信息读入文本框Text1中;点击"加密"按钮将Text1中的英文字母加密转换,并将转换后的结果显示到Text1中。转换方式为转换成该字母对应字母表中后两个位置的字母。例如,转换前的字母就是"a",则转换后的就是"c",转换前就是"E",转换后就是"G";点击"存盘"按钮, 则将转换后的文本框中的文本保存到out7、txt 文件中(该文件保存到考生文件夹下)。 Private Sub C1_Click() Dim strinfo As String Open "in7、txt" For Input As 1 Input #1, strinfo Close #1 Text1、Text = strinfo End Sub Private Sub C2_Click() Dim strchange As String Dim i As Integer For i = 1 To Len(Text1、Text) strchange = strchange + Chr(Asc(Mid(Text1、Text, i, 1)) + 2) Next Text1、Text = strchange End Sub Private Sub C3_Click() Open "out7、txt" For Output As 1 Print #1, Text1、Text Close #1 End Sub 2、(1)在考生文件夹下有工程文件wy5、vbp及窗体文件wy5、frm,该程序就是不完整的,请在有?号的地方填入正确内容,然后删除?及所有注释符(即'号),但不能修改其它部分。存盘时不得改变文件名与文件夹。本题描述如下: 在窗口中有一个RichText文本框控件(名称为rtx1)与一个文本框控件(名称为Text1),两个命令按钮,名称 分别为Command1与Command2,标题分别为"加入WY01、TXT"、"统计字符个数"。要求程序运行后,单击command1将考生文件夹下的wy01、txt的内容显示到rtx1中;单击"统计字符个数"按钮统计Text1中有多少个字符,将结果显示在Text1中。

三个遗传算法matlab程序实例

遗传算法程序(一): 说明: fga.m 为遗传算法的主程序; 采用二进制Gray编码,采用基于轮盘赌法的非线性排名选择, 均匀交叉,变异操作,而且还引入了倒位操作! function [BestPop,Trace]=fga(FUN,LB,UB,eranum,popsize,pCross,pMutation,pInversion,options) % [BestPop,Trace]=fmaxga(FUN,LB,UB,eranum,popsize,pcross,pmutation) % Finds a maximum of a function of several variables. % fmaxga solves problems of the form: % max F(X) subject to: LB <= X <= UB % BestPop - 最优的群体即为最优的染色体群 % Trace - 最佳染色体所对应的目标函数值 % FUN - 目标函数 % LB - 自变量下限 % UB - 自变量上限 % eranum - 种群的代数,取100--1000(默认200) % popsize - 每一代种群的规模;此可取50--200(默认100) % pcross - 交叉概率,一般取0.5--0.85之间较好(默认0.8) % pmutation - 初始变异概率,一般取0.05-0.2之间较好(默认0.1) % pInversion - 倒位概率,一般取0.05-0.3之间较好(默认0.2) % options - 1*2矩阵,options(1)=0二进制编码(默认0),option(1)~=0十进制编 %码,option(2)设定求解精度(默认1e-4) % % ------------------------------------------------------------------------ T1=clock; if nargin<3, error('FMAXGA requires at least three input arguments'); end if nargin==3, eranum=200;popsize=100;pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==4, popsize=100;pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==5, pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==6, pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==7, pInversion=0.15;options=[0 1e-4];end if find((LB-UB)>0) error('数据输入错误,请重新输入(LB

vb试题及答案

一、选择题(1-30 题每小题1分,共30分,31-45题每小题2分,共30分,总计60分)要使窗体Form1的标题栏中显示“正在复制文件…”,正确的语句是:a A.Form1.Caption=“正在复制文件…” B.Form1.Title=“正在复制文件…” C.Form1.Text=“正在复制文件…” D.Form1.名称=“正在复制文件…” 如果要求设置定时器时间间隔为1秒钟,那么它的Interval属性值应该等于:a A.1000 B.100 C.10 D.1 3、下列关于控件的基本操作中,错误的是 A)当控件处于活动状态时,可以对控件进行缩放 B) 在设计阶段不能移动控件 C) Visual Basic 6.0 允许对画好的控件进行复制和删除 D) 可以通过属性窗口改变控件的位置和大小 4、用Visual Basic 开发应用程序的一般步骤有:①设置窗体和控件的属性、②编写代码、③建立用户界面,其中正确的顺序是: A) ①②③B) ①③②C) ③②①D) ③①② 5、为使文本框只能显示不能输入,即只读,应设置文本框的属性是:c A.MaxLength设置为0 B.Cancel设置为True C.Locked设置为True D.Read设置为True 6、InputBox函数返回值的类型为。B A.数值B.字符串C.变体 D.数值或字符串(视输入的数据而定) 7、为了把焦点移到某个指定的控件,所使用的方法是:A A.SetFocus B.Visible C.ReFresh D.GetFocus 8、函数String(3,”str”)的功能是:b A.把数值型数据转换成字符串 B.返回有3个字符串组成的字符串 C.从字符串中第3个字符 D.从字符串中第3个字符的位置开始取字符串 9、双击窗体中的对象后,Visual Basic将显示的窗口是:c A.项目(工程)窗口B.工具箱C.代码窗口D.属性窗口 10、用于获得字符串s最左边4个字符的函数是:a A.Left(s,4) B.Left(1,4) C.LeftStr(s) D.LeftStr(3,4) 11、以下程序段的输出结果是:d a=Sqr(3) b=Sqr(2) c=a>b Print c A.-1 B.0 C.False D.True 12、用下面语句定义的数组的元素个数是:c Dim A (-4 to 6) As Integer A.6 B.7 C.11 D.9

遗传算法——耐心看完,你就掌握了遗传算法

遗传算法入门到掌握 读完这个讲义,你将基本掌握遗传算法,要有耐心看完。 想了很久,应该用一个怎么样的例子带领大家走进遗传算法的神奇世界呢?遗传算法的有趣应用很多,诸如寻路问题,8数码问题,囚犯困境,动作控制,找圆心问题(这是一个国外网友的建议:在一个不规则的多边形中,寻找一个包含在该多边形内的最大圆圈的圆心。),TSP问题(在以后的章节里面将做详细介绍。),生产调度问题,人工生命模拟等。直到最后看到一个非常有趣的比喻,觉得由此引出的袋鼠跳问题(暂且这么叫它吧),既有趣直观又直达遗传算法的本质,确实非常适合作为初学者入门的例子。这一章将告诉读者,我们怎么让袋鼠跳到珠穆朗玛峰上去(如果它没有过早被冻坏的话)。 问题的提出与解决方案 让我们先来考虑考虑下面这个问题的解决办法。 已知一元函数: 图2-1 现在要求在既定的区间内找出函数的最大值。函数图像如图2-1所示。 极大值、最大值、局部最优解、全局最优解

在解决上面提出的问题之前我们有必要先澄清几个以后将常常会碰到的概念:极大值、最大值、局部最优解、全局最优解。学过高中数学的人都知道极大值在一个小邻域里面左边的函数值递增,右边的函数值递减,在图2.1里面的表现就是一个“山峰”。当然,在图上有很多个“山峰”,所以这个函数有很多个极大值。而对于一个函数来说,最大值就是在所有极大值当中,最大的那个。所以极大值具有局部性,而最大值则具有全局性。 因为遗传算法中每一条染色体,对应着遗传算法的一个解决方案,一般我们用适应性函数(fitness function)来衡量这个解决方案的优劣。所以从一个基因组到其解的适应度形成一个映射。所以也可以把遗传算法的过程看作是一个在多元函数里面求最优解的过程。在这个多维曲面里面也有数不清的“山峰”,而这些最优解所对应的就是局部最优解。而其中也会有一个“山峰”的海拔最高的,那么这个就是全局最优解。而遗传算法的任务就是尽量爬到最高峰,而不是陷落在一些小山峰。(另外,值得注意的是遗传算法不一定要找“最高的山峰”,如果问题的适应度评价越小越好的话,那么全局最优解就是函数的最小值,对应的,遗传算法所要找的就是“最深的谷底”)如果至今你还不太理解的话,那么你先往下看。本章的示例程序将会非常形象的表现出这个情景。 “袋鼠跳”问题 既然我们把函数曲线理解成一个一个山峰和山谷组成的山脉。那么我们可以设想所得到的每一个解就是一只袋鼠,我们希望它们不断的向着更高处跳去,直到跳到最高的山峰(尽管袋鼠本身不见得愿意那么做)。所以求最大值的过程就转化成一个“袋鼠跳”的过程。下面介绍介绍“袋鼠跳”的几种方式。 爬山法、模拟退火和遗传算法 解决寻找最大值问题的几种常见的算法: 1. 爬山法(最速上升爬山法): 从搜索空间中随机产生邻近的点,从中选择对应解最优的个体,替换原来的个体,不断重复上述过程。因为只对“邻近”的点作比较,所以目光比较“短浅”,常常只能收敛到离开初始位置比较近的局部最优解上面。对于存在很多局部最优点的问题,通过一个简单的迭代找出全局最优解的机会非常渺茫。(在爬山法中,袋鼠最有希望到达最靠近它出发点的山顶,但不能保证该山顶是珠穆朗玛峰,或者是一个非常高的山峰。因为一路上它只顾上坡,没有下坡。) 2. 模拟退火: 这个方法来自金属热加工过程的启发。在金属热加工过程中,当金属的温度超过它的熔点(Melting Point)时,原子就会激烈地随机运动。与所有的其它的物理系统相类似,原子的这种运动趋向于寻找其能量的极小状态。在这个能量的变

VB程序设计试题及答案一

V B程序设计试题及答案(一) 一、单选题 1. VB6.0是一种面向B 的编程环境。 (A) 机器(B) 对象 (C) 过程(D) 应用 2. 要使FormI窗体的标题栏显示"欢迎使用VB",以下D 语句是正确的。 (A) Forml.Caption=“欢迎使用VB” (B) Forml.Caption='欢迎使用VB' (C) Forml.Caption=欢迎使用VB (D) Forml.Caption="欢迎使用VB" 3. 若要使命令按钮不可操作,要对A 属性进行设置。 (A) EnabIed (B)Visible (C) Backcolor (D)Caption 4. 如果在窗体上已经创建了一个文本框对象TextI,可以通过C 事件获得输入键值的ASCII码。 (A) Change (B) LostFocus (C) KeyPress (D) GotFocus 5. 下面A 是合法的变量名。 (A) X_yz (B) 123ab。(C) integer (D) X-Y 6. 以下关系表达式中,其值为False的是A 。 (A) "ABC">"AbC" (B) "女">"男" (C) "BASIC"=UCase("basic) (D) "123"<"23" 7. 为了给x、y、z三个变量赋初值1,下面正确的赋值语句是A 。 (A) x=1:y=1:z=1 (B) x=1,y=1,z=1 (C) x=y=z=1 (D) xyz=1 8. VB提供了结构化程序设计的三种基本结构,三种基本结构是D 。 (A)递归结构、选择结构、循环结构 (B)选择结构、过程结构、顺序结构 (C)过程结构、输入输出结构、转向结构 (D)选择结构、循环结构、顺序结构 9. 下面If语句统计满足性别为男、职称为副教授以上、年龄小于40岁条件的人数,不正确的语句是 D 。 (A) If sex="男" And age=4O And InStr(duty,"教授")>O Then n=n+l (B) If sex="男" And age=4O And (duty="教授" Or duty="副教授") Then n=n+l (C) If sex="男" And age=4O And Right(duty,2)="教授" Then n=n+l (D) If sex="男" And age=4O And duty="教授" And duty="副教授" Then n=n+l 10.下列关于Do…Loop循环结构执行循环次数的描述正确的是D 。 (A) Do While…Loop循环和Do…Loop Until循环至少都执行一次 (B) Do While…Loop循环和Do…Loop Until循环可能都不执行 (C) Do While…Loop循环至少执行一次和Do…Loop Until循环可能不执行 (D) Do While…Loop循环可能不执行和Do…Loop Until循环至少执行一次 11.以下B 是正确的For…Next结构。 (A) For x=1 To Step 10 (B) For x=3 To -3 Step -3 ……

GA遗传算法概述

遗传算法及其应用 摘要:遗传算法是一种基于生物自然选择和遗传机理的随机搜索与优化方法。近年来,由于遗传算法在求解复杂问题中的巨大潜力及其在工业工程领域的成功应用,受到了国内外学者的广泛关注。本文详细介绍了遗传算法的基本原理、主要特征以及主要应用。 关键词:遗传算法;选择算子;交叉算子;变异算子 Genetic Algorithm and Its Application Abstract: Genetic algorithm is a random search and optimization method based on biological natural selection and genetic mechanism. In recent years,genetic algorithm has attracted many domestic and overseas scholars' attention for its potential in solving many complex problems and its successful application in the field of industrial engineering, This paper introduces the basic principle ,the main characteristics and applications of genetic algorithm in detail. Key words: genetic algorithm, selection operator, crossover operator, mutation operator 1.遗传算法发展历史 1967年,Holland的学生Bagley在其博士论文中首次提出“遗传算法”[1]。1970年,Cavicchio把遗传算法应用于模式识别[2]。Hollstien最早把遗传算法应用于函数优化[3]。20世纪70年代,Holland教授提出了遗传算法的基本定理—模式定理[4],从而奠定了遗传算法的理论基础。1975年,Holland教授出版了第一本系统论述遗传算法和人工自适应系统的专著《Adaptation in Natural and Artificial Systems》。同年,K.A.De Song在博士论文《遗传自适应系统的行为分析》结合模式定理进行了大量的纯数值函数优化计算实验,建立了遗传算法的工作框架,为遗传算法及其应用打下了坚实的基础,他所得出的许多结论迄今仍具有普遍的指导意义。 2.遗传算法理论 2.1遗传算法的基本思想 遗传算法借鉴Darwin 的物竞天择、优胜劣汰、适者生存的自然选择和自然遗传的机理。与传统搜索算法不同,遗传算法从一组随机产生的初始解(称为群体)开始。群体中的每个个体是问题的一个解,称为“染色体”,这些染色体在后代迭代过程中不断进化。遗传算法主要通过选择、交叉和变异来实现,其本质是一种求解问题的高效并行全局搜索方法,它能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最优解。 遗传算法是一个迭代的过程,在每次迭代过程中都保留一组候选解,按解的好坏进行排序,按照约束条件从中选取一组解,利用遗传算法中的三个算子对其进行计算,产生新一代的候选解,重复此过程直到满足某种收敛条件为止。 2.2遗传算法的数学基础 定义1:模式是指种群个体基因串中的相似样板,它用来描述基因串中某些特征位相同的结构。在二进制编码中,模式是基于三个字符集(0,1,*)的字符串,符号*代表(0,1)中的任意字符。例如:10**1 定义2:模式H中确定位置的个数称为模式H的阶,记O(H)。例如O(10**1)=3。 定义3:模式H中第一个确定位置和最后一个确定位置之间的距离称为模式H的定义距,记作δ(H)。例如δ(10**1)=4。 模式阶用来反映不同模式间确定性的差异,模式阶数越高,模式的确定性就越高,所匹配的样本数就越少。在遗传操作中,即使阶数相同的模式,也会有不同的性质,而模式的

相关文档
最新文档