文档视界 最新最全的文档下载
当前位置:文档视界 › 智能充电宝报告讲解

智能充电宝报告讲解

智能充电宝报告讲解
智能充电宝报告讲解

实习名称:测控综合大实习

实习内容:智能充电宝设计

姓名:

学号:

专业:测控技术与仪器

学期: 2013-2014 第一学期

任课教师:

实习地点:校内

实习时间: 2013.12 -2014.1

智能充电宝

摘要:现如今,大屏智能手机,平板电脑,笔记本电脑,数码相机等,功能日益多样化,使用也更加频,特别是外出旅游时又是这些终端设备的使用高峰期,

使用频繁带来的电量不够用,于是移动电源充电宝应运而生。虽然手机因品牌,型号等各有不同,但目前市场上的主要多功能性充电宝,都配置有标准的USB 输出,基本能满足目前市场常见的移动设备手机,MP3,MP4,蓝牙耳机,数码相机等数码产品。

本论文将以MSP430和充电芯片MAX1898为基础设计一款手机理电池智能充电宝。首先MAX1898对锂电池进行充电,再接入升压电路、电池保护电路,通过开关切换使终端输出不同电压,充电完成报警引脚以及充电断开控制引脚均用单片机来进行控制,并显示充电状态和充电进度。

关键字:充电宝终端报警控制

Abstract: Now, the big screen intelligent mobile phone, tablet computer, notebook computer, digital camera, functional diversification and the use is more frequency.The terminal equipment using peak when the tourist season. With the frequent use of power brought is not enough, the charging mobile being produced.Although mobile phone is different because of the brand, model , but currently mainly multifunctional charging Po, are equipped with a standard USB output on the market, can basically meet the current market common mobile equipment such as mobile phone, MP3, MP4, Bluetooth headsets, digital cameras and other digital products.

This paper will design a Intelligent charging Po based on Single chip microcomputer MSP430 and charging chip MAX1898 .First MAX1898 charging the lithium battery , then access to boost circuit and battery protection circuit.Through the switch terminal output different voltage. Charging complete alarm pin and charging disconnect control pins are regulated by single-chip microcomputer ,and display the state of charge and charging schedule.

Key word:charge pal terminal alarming control

目录

第一章绪论

1.1本次课程设计的任务 (1)

1.1.1 功能描述 (1)

1.1.2 方案选择 (1)

1.1.3 总体框图 (2)

第二章硬件设计部分 (2)

2.1 主要器件及其功能 (2)

2.1.1 充电芯片MAX1898 (2)

2.1.2 电流型DC-DC升压器TC6291 (4)

2.1.3 光耦芯片6N137 (5)

2.1.4 可充电电池保护芯片S-8261 (5)

2.2电路原理图及说明 (6)

2.2.1 充电管理部分 (6)

2.2.2 升压部分 (8)

2.2.3 光耦部分 (9)

2.2.4 过压、过流保护部分 (10)

第三章软件设计部分 (10)

第四章调试

第五章参考文献

第六章附录

第一章绪论

1.1本次课程设计的任务

1.1.1 功能描述

本课题欲设计一款智能手机锂电池充电器,要为控制核心,选择适当的配套元件,设计硬件电路,并编制相应软件,使所设计的充电宝具有智能化特点,可以存储电量,并实现对手机锂电池的充电,充电过程可以显示充电状态和充电进度,充电完成后可以自动断电并提示。

1.1.2方案设计与比较

方案一:市电输入的电压经过整流滤波稳压之后输入到充电芯片(比如TP4056)进行充电,然后接入升压电路和电池保护电路,通过开关切换来实现快充慢充输出相应的电压对手机终端进行充电。此方案不是智能的,而且没有实现输出不同终端电压,所以没有选择此方案

方案二:市电输入的电压经过整流滤波稳压之后接入到充电芯片(MAX1898)对充电宝里面的锂电池进行充电,再接入升压电路电池保护电路,通过开关切换来达到终端输出不同电压的目的,同时相应的充电完成报警引脚以及充电断开控制引脚用单片机来进行控制处理,同时把相应的电量进行显示出来。此方案用到了单片机,是可调的,能输出不同的终端电压,符合设计要求,简单可行,所以选择了此方案。

1.1.3 总体框图

输入部分 充电管理部分 MSP430 液晶显示 升压电路 输出部分

电池保护电路

档位切换、快充慢充换挡

第二章硬件设计部分

2.1 主要器件及其功能

2.1.1 充电芯片MAX1898

图1 芯片MAX1898

其引脚功能如下:

IN(1脚):传感输入,检测输入的电压或电流。

/CHG(2脚):充电状态指示脚,同时驱动LED。

EN/OK(3脚):使能输入脚/输入电源“好”输出指示脚。EN为输入脚,可以通过输入禁止芯片工作;OK为输出脚,用于指示输入电源是否与充电器连接。

ISET(4脚):充电电流调节引脚。通过串联议和电阻到地来设置最大充电电流。

CT(5脚):安全充电时间设计引脚。接一个时间电容来设置充电时间,电容为100nF时,几乎为3个小时,此引脚直接接地将禁用此功能。

RSTRT(6脚):自动重新启动控制引脚。当此引脚直接接地时,如果电池电压掉至基准电压阀值以下200mV,将会重新开始一轮充电周期。此引脚通过电阻接地时,可以降低他的电压阀值。

BATT(7脚):电池传感输入脚,接单个LI+电池的正极。此引脚需旁接一个大电解电容到地。

GND(8脚):接地端。

DRV(9脚):外部晶体管驱动器,接晶体管的基极。

CS(10脚):电流传感输入,接晶体管的发射极。

MAX1898的关键特性如下:

简单、安全的线形充电方式。

●使用低成本的PNP或PMOS调整元件。

●输入电压:4.5~12V。

●内置检流电阻。

●±0.75%电压精度。

●可编程充电电流。

●输入电源自动检测。

●LED充电状态指示。

●可编程安全定时器。

●检流监视输出。

●可选/可调节自动重启。

●小尺寸μMAX封装。

MAX1898外接限流型充电电源和P沟道场效应管,可以对单节锂电池进行安全有效的快充,其最大特点是:在不使用电感的情况下,仍能做到很低的功率耗散,可以实现预充电,具有过压保护和温度保护功能,最长充电时间的限制可为锂电池提供二次保护。

本设计的核心器件是MAX189。MAX1898可对所有化学类型的LI+电池进行安全充电,它具有高集成度,在小尺寸内集成了更多功能,尽可能多地覆盖了基本应用电路,只需要少数外部元件。

2.1.2 电流型DC-DC升压器TC6291

TC6291其引脚功能如下:

LX(1脚):电源端

GND(2脚):IC地

FB(3脚):误差信号放大器反相输入端

EN(4脚):使能控制,高电平有效

VCC(5脚):IC电源

OC(6脚):可调电流限制(浮接有效)

TC6291的关键特性:

●过温保护功能

●精准反馈参考电压:0.6V(正负2%)

●可调输出电压高达12V

TC6291是一款电流模式升压型DC-DC转换器。其脉宽调制电路,内置0.2欧功率场效应管使用这个调节器具有高功率效率。内部补偿网络也减少了多达6个的外部原件。误差信号放大器的同相输入端连接到0.6V的精密基准电压,内部软启动功能可以减小瞬间突增电流。

2.1.3 光耦芯片6N137

6N137引脚功能如下:

NC(1脚、4脚):悬空。

+(2脚)、-(3脚):发光二极管的正负极。

GND(5脚):接地端。

OUTPUT(6脚):输出脚。

EN(7脚):使能脚。为低时,无论有无输入,输出都为高。不使用时,悬空即可。

VCC(8脚):电源输出脚。

2.1.4 可充电电池保护芯片S-8261

S-8261引脚功能如下:

DO(1脚):放电控制用FET门极连接端子

VW(2脚):VM-VSS间的电压检测端子

CO(3脚):充电控制用FET门极连接端子

DP(4脚):延迟时间测定用测试端子

VDD(5脚):电源正极

VSS(6脚):电源负极

S8261特性:

S8261系列内置高精度电压检测电路和延时电路,是用于锂离子/锂聚合物可充电电池保护的IC。本IC最适合于对1节锂电池/锂聚合物可充电电池组的过充电、过放电和过电流保护。

2.2电路原理图及说明

2.2.1 充电管理部分

图所示的为充电控制部分的电路原理图,其核心器件为充电芯片MAX1898,LED1为绿色发光二极管,绿灯表示处于充电状态。Q4为P沟道的场效应管,由MAX1898提供驱动。图中,R2为设置充电电流的电阻,阻值为2.8kΩ,设置最大充电电流为500mA;C5为设置充电时间的电容,容值为100nF,设置最大充电时间为3小时。C4为滤波电容,电容C3隔直通交。通过外接的场效应管提供锂电池的接口。

通过外接的电容CcT来设置充电时间tCHG。这里的充电时间指的是快充时的最大充电时间,它和定时电容CcT的关系如下式所示。

CcT=34.33*tCHG

式中,tCHG的单位为小时,CcT的单位为nF。

在限制电流的模式下,通过外接的电阻RSET来设置最大充电电流IFSTCHG,关系如下式所示。

IFSTCHG = 1400/RSET;

式中,RSET的单位为Ω,IFSTCHG的单位为nF。

当充电电源和电池在正常的工作温度范围内时,插入电池将启动一次充电过程。平均的脉冲充电电流低于设置的快充电流的20%,或者充电时间超出片上预置的最大充电时间时,充电周期结束。 MAX1989 能够自动检测充电电源,没有电源时自动关断以减少电池的漏电。启动快充后,打开外接的P 型场效应管,当检测到电池电压达到设定的门限时进入脉冲充电方式,P 型场效应管打开的时间会越来越短。充电结束时,LED 指示灯将会呈现周期性的闪烁,具体的闪烁含义如表1所示。

MAX1898典型充电电路的LED指示状态说明

充电状态LED指示灯

电池或充电器没有安装灭

预充或快充亮

充电结束灭

充电出错以1.2HZ频率闪烁

2.2.2 升压部分

此部分为升压、换挡和快充、慢充控制。其中四个电容均为滤波电容,Q0、Q5、R10等对电路其保护作用,电感有储能作用。其3脚FB1外接换挡按钮,可进行5V和9V换挡。内部有0.6V的精密基准电压,由于给手机充电都需要5V左右的电压,经公式(V out=Vref*(1+R1/R2))计算得到R12、R13的值,此时输出为5V左右电压,同理经换挡后可得到9V左右的电压。其6脚外接快、慢充换挡。由于换挡后阻值的不同(计算公式:I=48000/R),得出分别能达到500mA和1A。通过开关来切换,可实现快充和慢充的转换。

2.2.3 光耦部分

光耦隔离电路使被隔离的两部分之间没有电的直接连接,主要是防止因有电的连接而引起的干扰,特别是低压的控制电路与外部高压电路之间。上图中,光耦隔离芯片的输入为5V电压,输出为经过隔离的5V电压。

2.2.4 过压、过流保护部分

第三章软件设计部分

设计思路

/*-----------数据区----------------*/ #define uint unsigned int

#define uchar unsigned char

uint result = 0;

uint a = 0;

uint b =0; /******************************************

功能描述 : 初始化系统时钟

******************************************/

void Init_Clk()

{ uchar i;

BCSCTL1&=~XT2OFF; //打开XT 振荡器

BCSCTL2|=SELM1+SELS;//MCLK 8M and SMCLK 1M

do

{ IFG1 &= ~OFIFG; //清除振荡错误标志

开始 系统初始化 AD 转换,液晶显示 充满后蜂鸣器报警 结 束

for(i = 0; i < 100; i++)

_NOP(); //延时等待 }

while ((IFG1 & OFIFG) != 0); //如果标志为1继续循环等待

IFG1&=~OFIFG;

}

/******************************************

功能描述:显示学好姓名

******************************************/

void Set_Name(void)

{

Display_StrChar(0xB9,1,0,"组");

Display_StrChar(0xB9,4,0,"员");

Display_Lin(0xc5,0,14,0,1,64);

Display_StrChar(0xB9,0,3,"201006010313 荣浪"); }

/************************************

功能描述:初始化ADC

************************************/

void Init_ADC(void)

{ P6SEL |= BIT4; //选择AD通道A4

ADC12CTL0 |= ADC12ON + SHT0_2 + REF2_5V + REFON ; //ADC电源开;采样保持时间 16个ADC12CLK ; 参考电压模块开;参考电压2.5V ;

ADC12CTL1 |= ADC12SSEL_0+SHP+CSTARTADD_4 ; //采样信号采用时序电路产生单通道单次转换

ADC12MCTL4 |= INCH_4 + SREF_1 ; //ref += REF2_5V ; Channel = A0

ADC12IE |= 0X10; //通道使能转换

ADC12CTL0 |= ENC ; //使能ADC转换器

//ADC12CTL0 |= ADC12SC ; //开始转换 }

/************************************

功能描述:锂电池的电量

************************************/

void Display_V(void)

{ Display_StrChar(0xB9,0,0,"锂电池的电量:");

Display_StrChar(0xB9,1,0,"充电进度:");}

/************************************

功能描述:采样数据转换

************************************/

void Volatage_Collect(uint x1,uint x2,uint y)

{ uchar c = 0;

uint temp = 0;

temp = (uint)(((result*2.5)/4096.0)*1000.0) ;

a= temp*2;

Display_Byte(0XC2, x1, y, a/1000+0x30);

Display_StrChar(0xDC,x1,y+6,".");

Display_Byte(0XC2, x1, y+12, a%1000/100+0x30) ;

Display_Byte(0XC2, x1, y+18, a%1000%100/10+0x30) ;

Display_Byte(0XC2, x1, y+24, a%10+0x30) ;

Display_Byte(0XC2,x1,y+30,'V') ;

b = a*2-7400;

Display_Byte(0XC2, x2, y, b/100+0x30);

Display_Byte(0XC2, x2, y+6, b%100/10+0x30) ; Display_StrChar(0xDC,x2,y+12,".");

Display_Byte(0XC2, x2, y+18,b%10+0x30) ;

Display_StrChar(0xDC,x2,y+24,"%"); }

/*-----------中断区----------------*/

/************************************

功能描述: ADC - A0通道中断;读取转换所得数据

************************************/

#pragma vector = ADC_VECTOR

__interrupt void ADC12ISR(void)

{ result = ADC12MEM4 ;}

/*-----------主函数----------------*/

void main(void)

{uchar key ;

WDTCTL = WDTPW + WDTHOLD; //关闭看门狗

Init_Clk() ; //初始化系统时钟

Init_Usart() ; //初始化串口

Init_ADC () ;

Clear_Screen(); //初始化液晶

Stating () ; //开始

_EINT();

while(1)

{key = 0;

IFG1&= ~URXIFG0;

key = U0RXBUF;

ADC12CTL0 |= ADC12SC ; //开始转换

switch(key)

{case 0:

{KEY_OnOff(off);

Screen_Con(0xF4);

Set_Name();

KEY_OnOff(on); }

break;

case 1: {

KEY_OnOff(off);

Screen_Con(0xF4);

Display_V();

Volatage_Collect(0,12,80);

KEY_OnOff(on); }

break;

default :break;} }}

第四章调试

☆注意事项:

1.认清器件,电容电阻使用前先用万用表测试一下看其阻值、电容值是否正确,三极管要分清三个脚,以免接错。焊接时对照原理图注意不要焊错。每一个器件

焊好后都用万用表打一下,看是否连接好了。

2.外接稳压电源,上电注意先调好电压。

3.第一次上电前先不插芯片,通电稳定好电源指示灯正常亮时断电后再插芯片,以免焊接失误导致芯片烧坏。

4.模块分开依次调试。

☆调试过程

1.刚开始充电指示灯没有亮,用万用表检测发现将小的USB接口的地和5V脚与外部电路连接时弄反了,由于小的USB接口引脚很小,导致有时接触不是很稳定。

2.刚调试时输出只是电池两端电压,需要的是5V左右,经检查一处地线忘记连接,更改后课输出5V电压。但换挡键打到9V时输出不正确,我仔细检查了电路的连接,觉得没有问题,可能是电路有保护左右,输出不会升压那么快的原因。

3.对可充电电池进行电量检测

有换挡电路,经调试换到9V挡只是显示锂电池的电压3.7V左右,检查了很久,未调试出结果。

第五章参考文献

1.https://www.docsj.com/doc/db18433024.html,/link?url=uRkAQrkdgSGA4ZmcGJQ-uQKsMC4rPm9f8A3 nYIRPmn3QigiWUt0rzKreecmiTzlu4D4CGLpQ2miFgRzfX_WK88r8ONvnGNP0ol C_LAmmv2W(MAX1898芯片)

2.储开斌,何宝祥,徐权编著,模拟电路及其应用,清华大学出版社,2013

3.曹文主编,电子设计基础,机械工业出版社,2012

4.https://www.docsj.com/doc/db18433024.html,/link?url=fCtg96WnuSOT9g71VzggRaKlXOKUDCi3Qip pckQe8kEyw3sC651wuIWoFwCUyDyoDwYUWTZv23y_nz-cYB2lQ33RjwhOpR384escSE8Q

z5u(TC6291)

第六章附录附录一原理图

附录二PCB图

致谢:

此次测控技术综合设计是对我们知识运用能力的一次全面的考核,培养我们综合运用所学知识独立地分析问题和解决问题的能力。本次设计能够顺利完成,我要感谢学校的老师们,他们不仅教会我们专业方面的知识,而且教会我们做人做事的道理,尤其要感谢在本次设计中给与我大力支持和帮助的王敏老师,每当我懈怠时,老师总会督促我,关心我的进度,使我能够充满热情的投入到毕业设计中去;其次感谢我的同学们,他们毫无保留的帮助我,在我遇到困难时细心为我找原因,解决问题;最后我要感谢所有此次设计中所用到资料的撰写者,你们打开了我的疑惑,使本次设计圆满完成。

评语:

人工智能实验报告大全

人工智能实验报告大 全

人工智能课内实验报告 (8次) 学院:自动化学院 班级:智能1501 姓名:刘少鹏(34) 学号: 06153034 目录 课内实验1:猴子摘香蕉问题的VC编程实现 (1) 课内实验2:编程实现简单动物识别系统的知识表示 (5)

课内实验3:盲目搜索求解8数码问题 (18) 课内实验4:回溯算法求解四皇后问题 (33) 课内实验5:编程实现一字棋游戏 (37) 课内实验6:字句集消解实验 (46) 课内实验7:简单动物识别系统的产生式推理 (66) 课内实验8:编程实现D-S证据推理算法 (78)

人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现 学院:自动化学院 班级:智能1501 姓名:刘少鹏(33) 学号: 06153034 日期: 2017-3-8 10:15-12:00

实验1:猴子摘香蕉问题的VC编程实现 一、实验目的 (1)熟悉谓词逻辑表示法; (2)掌握人工智能谓词逻辑中的经典例子——猴子摘香蕉问题的编程实现。 二、编程环境 VC语言 三、问题描述 房子里有一只猴子(即机器人),位于a处。在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。要求通过VC语言编程实现猴子摘香蕉问题的求解过程。 图1 猴子摘香蕉问题

四、源代码 #include unsigned int i; void Monkey_Go_Box(unsigned char x, unsigned char y) { printf("Step %d:monkey从%c走到%c\n", ++i, x, y);//x表示猴子的位置,y为箱子的位置 } void Monkey_Move_Box(char x, char y) { printf("Step %d:monkey把箱子从%c运到%c\n", ++i, x, y);//x表示箱子的位置,y为香蕉的位置 } void Monkey_On_Box() { printf("Step %d:monkey爬上箱子\n", ++i); } void Monkey_Get_Banana() { printf("Step %d:monkey摘到香蕉\n", ++i); } void main() { unsigned char Monkey, Box, Banana; printf("********智能1501班**********\n"); printf("********06153034************\n"); printf("********刘少鹏**************\n"); printf("请用a b c来表示猴子箱子香蕉的位置\n"); printf("Monkey\tbox\tbanana\n"); scanf("%c", &Monkey); getchar(); printf("\t"); scanf("%c", &Box); getchar(); printf("\t\t"); scanf("%c", &Banana); getchar(); printf("\n操作步骤如下\n"); if (Monkey != Box) { Monkey_Go_Box(Monkey, Box); } if (Box != Banana)

游戏人工智能实验报告记录四

游戏人工智能实验报告记录四

————————————————————————————————作者:————————————————————————————————日期:

实验四有限状态机实验 实验报告 一、实验目的 通过蚂蚁世界实验掌握游戏中追有限状态机算法 二、实验仪器 Windows7系统 Microsoft Visual Studio2015 三、实验原理及过程 1)制作菜单 设置参数:点击会弹出对话框,设置一些参数,红、黑蚂蚁的家会在地图上标记出来 运行:设置好参数后点击运行,毒药、食物、水会在地图上随机显示 下一步:2只红蚂蚁和2只黑蚂蚁会随机出现在地图上,窗口右方还会出现红、黑蚂蚁当前数量的统计 不断按下一步,有限状态机就会不断运行,使蚁群产生变化 2)添加加速键

资源视图中下方 选择ID和键值

3)新建头文件def.h 在AntView.cpp中加入#include"def.h" 与本实验有关的数据大都是在这里定义的 int flag=0; #define kForage 1 #define kGoHome 2 #define kThirsty 3 #define kDead 4 #define kMaxEntities 200 class ai_Entity{ public: int type; int state; int row; int col; ai_Entity(); ~ai_Entity() {} void New (int theType,int theState,int theRow,int theCol); void Forage(); void GoHome(); void Thirsty(); void Dead();

人工智能实验报告

《人工智能》课外实践报告 项目名称:剪枝法五子棋 所在班级: 2013级软件工程一班 小组成员:李晓宁、白明辉、刘小晶、袁成飞、程小兰、李喜林 指导教师:薛笑荣 起止时间: 2016-5-10——2016-6-18

项目基本信息 一、系统分析 1.1背景

1.1.1 设计背景 智力小游戏作为人们日常休闲娱乐的工具已经深入人们的生活,五子棋更成为了智力游戏的经典,它是基于AI的αβ剪枝法和极小极大值算法实现的人工智能游戏,让人们能和计算机进行对弈。能使人们在与电脑进行对弈的过程中学习五子棋,陶冶情操。并且推进人们对AI的关注和兴趣。 1.1.2可行性分析 通过研究,本游戏的可行性有以下三方面作保障 (1)技术可行性 本游戏采用Windows xp等等系统作为操作平台,使用人工智能进行算法设计,利用剪枝法进行编写,大大减少了内存容量,而且不用使用数据库,便可操作,方便可行,因此在技术上是可行的。 (2)经济可行性 开发软件:SublimText (3)操作可行性 该游戏运行所需配置低、用户操作界面友好,具有较强的操作可行性。 1.2数据需求 五子棋需要设计如下的数据字段和数据表: 1.2.1 估值函数:

估值函数通常是为了评价棋型的状态,根据实现定义的一个棋局估值表,对双方的棋局形态进行计算,根据得到的估值来判断应该采用的走法。棋局估值表是根据当前的棋局形势,定义一个分值来反映其优势程度,来对整个棋局形势进行评价。本程序采用的估值如下: 状态眠二假活三眠三活二冲四假活三活三活四连五 分值 2 4 5 8 12 15 40 90 200 一般来说,我们采用的是15×15的棋盘,棋盘的每一条线称为一路,包括行、列和斜线,4个方向,其中行列有30路,两条对角线共有58路,整个棋盘的路数为88路。考虑到五子棋必须要五子相连才可以获胜,这样对于斜线,可以减少8路,即有效的棋盘路数为72路。对于每一路来说,第i路的估分为E(i)=Ec(i)-Ep(i),其中Ec(i)为计算机的i路估分,Ep(i)为玩家的i路估分。棋局整个形势的估值情况通过对各路估分的累加进行判断,即估值函数: 72 F(n)= Σ E(i) i=1 1.2.2 极小极大值算法: 极大极小搜索算法就是在博弈树在寻找最优解的一个过程,这主要是一个对各个子结点进行比较取舍的过程,定义一个估值函数F(n)来分别计算各个终结点的分值,通过双方的分值来对棋局形势进行分析判断。以甲乙两人下棋为例,甲为max,乙为min。当甲走棋时,自然在博弈树中寻找最大点的走法,轮到乙时,则寻找最小点的走法,如此反复,这就是一个极大极小搜索过程,以此来寻找对机器的最佳走法。

游戏人工智能实验报告四

实验四有限状态机实验 实验报告 一、实验目的 通过蚂蚁世界实验掌握游戏中追有限状态机算法 二、实验仪器 Windows7系统 Microsoft Visual Studio2015 三、实验原理及过程 1)制作菜单 设置参数:点击会弹出对话框,设置一些参数,红、黑蚂蚁的家会在地图上标记出来 运行:设置好参数后点击运行,毒药、食物、水会在地图上随机显示 下一步:2只红蚂蚁和2只黑蚂蚁会随机出现在地图上,窗口右方还会出现红、黑蚂蚁当前数量的统计 不断按下一步,有限状态机就会不断运行,使蚁群产生变化 2)添加加速键 资源视图中 下方

选择ID和键值 3)新建头文件def.h 在AntView.cpp中加入#include"def.h" 与本实验有关的数据大都是在这里定义的 int flag=0; #define kForage 1 #define kGoHome 2 #define kThirsty 3 #define kDead 4 #define kMaxEntities 200 class ai_Entity{ public: int type; int state; int row; int col; ai_Entity(); ~ai_Entity() {} void New (int theType,int theState,int theRow,int theCol); void Forage(); void GoHome(); void Thirsty(); void Dead(); }; ai_Entity entityList[kMaxEntities]; #define kRedAnt 1 #define kBlackAnt 2

(完整word版)哈工大人工智能导论实验报告

人工智能导论实验报告 学院:计算机科学与技术学院 专业:计算机科学与技术 2016.12.20

目录 人工智能导论实验报告 (1) 一、简介(对该实验背景,方法以及目的的理解) (3) 1. 实验背景 (3) 2. 实验方法 (3) 3. 实验目的 (3) 二、方法(对每个问题的分析及解决问题的方法) (4) Q1: Depth First Search (4) Q2: Breadth First Search (4) Q3: Uniform Cost Search (5) Q4: A* Search (6) Q5: Corners Problem: Representation (6) Q6: Corners Problem: Heuristic (6) Q7: Eating All The Dots: Heuristic (7) Q8: Suboptimal Search (7) 三、实验结果(解决每个问题的结果) (7) Q1: Depth First Search (7) Q2: Breadth First Search (9) Q3: Uniform Cost Search (10) Q4: A* Search (12) Q5: Corners Problem: Representation (13) Q6: Corners Problem: Heuristic (14) Q7: Eating All The Dots: Heuristic (14) Q8: Suboptimal Search (15) 自动评分 (15) 四、总结及讨论(对该实验的总结以及任何该实验的启发) (15)

人工智能实验报告大全

人工智能课内实验报告 (8次) 学院:自动化学院 班级:智能1501 姓名:刘少鹏(34) 学号: 06153034

目录 课内实验1:猴子摘香蕉问题的VC编程实现 (1) 课内实验2:编程实现简单动物识别系统的知识表示 (5) 课内实验3:盲目搜索求解8数码问题 (18) 课内实验4:回溯算法求解四皇后问题 (33) 课内实验5:编程实现一字棋游戏 (37) 课内实验6:字句集消解实验 (46) 课内实验7:简单动物识别系统的产生式推理 (66) 课内实验8:编程实现D-S证据推理算法 (78)

人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现 学院:自动化学院 班级:智能1501 姓名:刘少鹏(33) 学号: 06153034 日期: 2017-3-8 10:15-12:00

实验1:猴子摘香蕉问题的VC编程实现 一、实验目的 (1)熟悉谓词逻辑表示法; (2)掌握人工智能谓词逻辑中的经典例子——猴子摘香蕉问题的编程实现。 二、编程环境 VC语言 三、问题描述 房子里有一只猴子(即机器人),位于a处。在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。要求通过VC语言编程实现猴子摘香蕉问题的求解过程。 图1 猴子摘香蕉问题 四、源代码 #include unsigned int i; void Monkey_Go_Box(unsigned char x, unsigned char y) {

充电器的调试和测试流程

充电器的调试和测试流程 充电器的测试很复杂,首先必须对测试工具比较熟,其次就是测试报告的编写,大多数技术人员对报告的编写不熟悉,笔者在此一一做个解说,后面的介绍说明是在网上下载的,笔者认为此文讲得比较透彻,所以刊登出来供各位参考。 第一节测试标准及流程 测试标准共分为12章节,在此不一一列出,需要的人士数可以参考我们的下载中心的规定,各节内容描述如下: 谢! 第二节测试报告的编写 测试报告的编写内容必须条理化,首先必须要有时间、地点、人物、环境、使用设备等等,其次才是测试内容,内容一定要真实,方法一定要正确,否则,测试的数据就会不准确。测试前必须熟悉测试标准及测试测试注意事项,同时要注意安全,另外,各位可以参考自身的条件作一些修订和删减。 充电器测试报告 充电器型号:基本电气参数: 测试人员:测试时间: 环境描述: 1.测试内容: 1.静态工作特性测试(测试方法参考测试标准,宽压机必须测试高低压,低压机和高压机只测试相应的电压即可): 使用仪器. ⊙示波器⊙电子负载⊙功率表⊙交流电源⊙数字电压表

高温测试 2 使用的仪器⊙数字存储示波器⊙浪涌电流测试仪⊙掉电测试仪⊙电子负载⊙数字万用表等 1 2.开关机时输出电压过冲与欠冲测试

低温测试 3.电磁兼容测试(测试方法参考测试标准): 1.传导干扰测试:(暂时不做) 2.辐射干扰测试:(暂时不做) 3.静电放电测试: 1.空气放电测试: 2.接触放电测试: 4.谐波电流测试 4.安全标准测试(测试方法参考测试标准): 使用仪表: ⊙DVM表⊙有效值表⊙高压仪⊙.电子负载⊙漏电测试仪⊙数字温度表⊙烤箱1.高压测试:(Class 2 类电源) 输入对输出:3600V ac(高压机),1800 Vac(低压机) 漏电流= (小于10mA) 2.绝缘测试:(用500V的兆欧绝缘表测量初﹑次级间的阻值) 初级次级间的电阻:(大于100兆欧)

人工智能实验报告

计算机科学与技术1341901301 敏 实验一:知识表示方法 一、实验目的 状态空间表示法是人工智能领域最基本的知识表示方法之一,也是进一步学习状态空间搜索策略的基础,本实验通过牧师与野人渡河的问题,强化学生对知识表示的了解和应用,为人工智能后续环节的课程奠定基础。 二、问题描述 有n个牧师和n个野人准备渡河,但只有一条能容纳c个人的小船,为了防止野人侵犯牧师,要求无论在何处,牧师的人数不得少于野人的人数(除非牧师人数为0),且假定野人与牧师都会划船,试设计一个算法,确定他们能否渡过河去,若能,则给出小船来回次数最少的最佳方案。 三、基本要求 输入:牧师人数(即野人人数):n;小船一次最多载人量:c。 输出:若问题无解,则显示Failed,否则,显示Successed输出一组最佳方案。用三元组(X1, X2, X3)表示渡河过程中的状态。并用箭头连接相邻状态以表示迁移过程:初始状态->中间状态->目标状态。 例:当输入n=2,c=2时,输出:221->110->211->010->021->000 其中:X1表示起始岸上的牧师人数;X2表示起始岸上的野人人数;X3表示小船现在位置(1表示起始岸,0表示目的岸)。 要求:写出算法的设计思想和源程序,并以图形用户界面实现人机交互,进行输入和输出结果,如: Please input n: 2 Please input c: 2 Successed or Failed?: Successed Optimal Procedure: 221->110->211->010->021->000 四、算法描述 (1)算法基本思想的文字描述;

人工智能实验报告

实验报告 1.对CLIPS和其运行及推理机制进行介绍 CLIPS是一个基于前向推理语言,用标准C语言编写。它具有高移植性、高扩展性、 强大的知识表达能力和编程方式以及低成本等特点。 CLIPS由两部分组成:知识库、推理机。它的基本语法是: (defmodule< module-n ame >[< comme nt >]) CLIPS的基本结构: (1).知识库由事实库(初始事实+初始对象实例)和规则库组成。 事实库: 表示已知的数据或信息,用deftemplat,deffact定义初始事实表FACTLIS,由关系名、后跟 零个或多个槽以及它们的相关值组成,其格式如下: 模板: (deftemplate [] *) :: = | 事实: (deffacts [] *) 当CLIPS系统启动推理时,会把所有用deffact定义的事实自动添加到工作存储器中。常用命令如下:asser:把事实添加到事实库(工作存储器)中retract:删除指定事实 modify :修改自定义模板事实的槽值duplicate :复制事实 clear:删除所有事实 规则库 表示系统推理的有关知识,用defrule命令来定义,由规则头、后跟零个或多个条件元素以 及行为列表组成,其格式如下: (defrule [] * ; =>

人工智能导论1-4章作业

《人工智能导论》作业(1-4章) 1.人工智能有哪几个主要的学派?各学派的基本理论框架和主要研究方向有何不同?2.用谓词逻辑方法表述下面问题积木世界的问题。 (定义谓词、描述状态、定义操作、给出操作序列) 3.请给出下列描述的语义网络表示: 1)11月5日,NBA常规赛火箭主场对阵小牛,火箭107-76大胜小牛。 2)张老师从9月至12月给自动化专业学生教授《自动控制原理》。李老师从10至12月 给计算机专业学生教授《操作系统原理》。 3)树和草都是植物;树和草都有根和叶;水草是草,生活在水中;果树是树,会结果; 苹果树是果树,结苹果。 4.请用相应谓词公式描述下列语句: 1)有的人喜欢足球、有的人喜欢篮球;有的人既喜欢足球又喜欢篮球。 2)喜欢编程的同学都喜欢计算机。 3)不是每个自控系的学生都喜欢编程。 4)有一个裁缝,他给所有不自己做衣服的人做衣服。 5)如果星期六不下雨,汤姆就会去爬山。 5.什么是谓词公式的解释?对于公式?x ?y (P(x)→Q(f(x),y)) D={1,2,3} 分别给出使公式为真和假的一种解释。 6.什么是合一?求出下面公式的最一般合一: P(f(y), y, x) P(x, f(a),z)。 7.把下面谓词公式化为子句集 ?x ?y (P(x,y)∨Q(x,y))→R(x,y)) ?x (P(x) →?y(P(y)∧R(x,y))

?x (P(x)∧?y(P(y) →R(x,y))) 8.证明下面各题中,G是否是F的逻辑结论? F1: ?x (P(x) →?y(Q(y)→L(x,y))) F2: ?x (P(x)∧?y(R(y) →L(x,y))) G: ?x (R(x) →~Q(x)) F1: ?z (~B(z)→?y(D(z,y)∧C(y))) F2: ?x (E(x)∧A(x)∧?y (D(x,y) →E(y))) F3: ?y(E(y) →~B(y)) G: ?z (E(z) ∧C(z)) 9.已知:John, Mike, Sam是高山俱乐部成员。 高山俱乐部成员都是滑雪运动员或登山运动员(也可以都是)。 登山运动员不喜欢雨。 滑雪运动员都喜欢雪。 凡是Mike喜欢的,John就不喜欢。 凡是Mike 不喜欢的,John就喜欢。 Mike喜欢雨和雪。 问:高山俱乐部是否有一个成员,他是登山运动员,但不是滑雪运动员?如果有,他是谁?10.为什么说归结式是其亲本子句的逻辑结论? 11.何为完备的归结策略?有哪些归结策略是完备的? 12.何谓搜索?有哪些常用的搜索方法?盲目搜索与启发式搜索的根本区别是什么?13.用状态空间法表示问题时,什么是问题的解?什么是最优解?在图搜索算法中,OPEN 表和CLOSED表的作用是什么?f(x)有何不同含义? 14.宽度优先搜索和深度优先搜索有何不同?在何种情况下,宽度优先搜索优于深度优先搜索,何种情况反之? 15.什么是启发式搜索,g(x)与h(x)各有什么作用?A*算法的限制条件是什么?

E24充电器测试报告

目录 1快速充电器测试规范.................................................................................. 错误!未定义书签。 1.1 快速充电器外观.............................................................................. 错误!未定义书签。 1.2 输入特性.......................................................................................... 错误!未定义书签。 1.2.1 电源指示............................................................................... 错误!未定义书签。 1.2.2 输入范围............................................................................... 错误!未定义书签。 1.2.3 交流输入浪涌电流............................................................... 错误!未定义书签。 1.2.4 启动延迟............................................................................... 错误!未定义书签。 1.3 输出特性.......................................................................................... 错误!未定义书签。 1.3.1 输出管脚检查....................................................................... 错误!未定义书签。 1.3.2 输出电压............................................................................... 错误!未定义书签。 1.3.3 输出电流............................................................................... 错误!未定义书签。 1.3.4 输出纹波............................................................................... 错误!未定义书签。 13.5 动态响应................................................................................ 错误!未定义书签。 1.3.6 工作效率............................................................................... 错误!未定义书签。 1.3.7 噪声....................................................................................... 错误!未定义书签。 1.4 安全特性.......................................................................................... 错误!未定义书签。 1.4.1 过充保护............................................................................... 错误!未定义书签。 1.4.2 过压保护............................................................................... 错误!未定义书签。 1.4.3 过载保护............................................................................... 错误!未定义书签。 1.4.4 短路保护............................................................................... 错误!未定义书签。 1.5 连续工作能力.................................................................................. 错误!未定义书签。 1.5.1连续工作16h......................................................................... 错误!未定义书签。 1.5.2连续工作96h......................................................................... 错误!未定义书签。 1.6温升................................................................................................... 错误!未定义书签。 1.6.1 短路温升............................................................................... 错误!未定义书签。 1.6.2 工作温升............................................................................... 错误!未定义书签。 1.7 电气安全.......................................................................................... 错误!未定义书签。 1.7.1 绝缘要求............................................................................... 错误!未定义书签。 1.7.2 EMC&ESD测试 ................................................................... 错误!未定义书签。 1.7.3 导线拉力测试....................................................................... 错误!未定义书签。 1.7.4 护套拉力测试....................................................................... 错误!未定义书签。 1.7.5 护套摇摆测试....................................................................... 错误!未定义书签。 1.8 使用环境.......................................................................................... 错误!未定义书签。2测试结果(下表包含了所有测试项有些结果可向PRT要求)............. 错误!未定义书签。3结论 ............................................................................................................. 错误!未定义书签。4参考文档...................................................................................................... 错误!未定义书签。1快速充电器测试规范 1.1 快速充电器外观 快速充电器外表面应清洁、无机械损伤、触点无锈蚀;快速充电器表面应有必须的产品标识;与蜂窝电话连接可靠、插拔自如。

人工智能导论实验

人工智能导论 实验报告 姓名:蔡鹏 学号:1130310726 实验一

一、实验内容 有如下序列,试把所有黑色格移到所有白色格的右边,黄色格代表空格,黑色格和白色格可以和距离不超过三的空格交换。 二、实验代码 #include #include #include #define N 10 #define inf 9999 int g=999; void tree_gener(struct node *fn,struct node *root); struct node { char seq[7]; int f,g,n; struct node *sn[N]; }; struct stack { int num; struct node *n[50]; }; void Enstack(struct node *sn,struct stack *S) { S->n[S->num]=sn; S->num++; } struct node *Destack(struct stack *S) { S->num--; return S->n[S->num]; } void find_min_f(struct node *root) { int i; struct node *n,*min; struct stack S; S.num=0; min=root;

Enstack(root,&S); while(S.num!=0) { n=Destack(&S); if(n->f < min->f) { min=n; } for(i=0;in;i++) { Enstack(n->sn[i],&S); } } tree_gener(min,root); if(g>min->g) { printf("seq:%c %c %c %c %c %c %c | g:%d \n",min->seq[0],min->seq[1],min->seq[2],min->seq[3],min->seq[4],min->seq[5],min->seq[6],min->g); } g=min->g; } void swap(struct node *sn,struct node *fn,int n,int m) { int i; for(i=0;i<7;i++) { sn->seq[i]=fn->seq[i]; } sn->seq[n]=fn->seq[m]; sn->seq[m]=fn->seq[n]; } int calcu_h(char seq[]) { int m=0,n=0,i; for(i=0;i<7;i++) { if(seq[i]=='B') { m++; } if(seq[i]=='W')

人工智能实验报告

人工智能课程项目报告 姓名: 班级:二班

一、实验背景 在新的时代背景下,人工智能这一重要的计算机学科分支,焕发出了他强大的生命力。不仅仅为了完成课程设计,作为计算机专业的学生, 了解他,学习他我认为都是很有必要的。 二、实验目的 识别手写字体0~9 三、实验原理 用K-最近邻算法对数据进行分类。逻辑回归算法(仅分类0和1)四、实验内容 使用knn算法: 1.创建一个1024列矩阵载入训练集每一行存一个训练集 2. 把测试集中的一个文件转化为一个1024列的矩阵。 3.使用knnClassify()进行测试 4.依据k的值,得出结果 使用逻辑回归: 1.创建一个1024列矩阵载入训练集每一行存一个训练集 2. 把测试集中的一个文件转化为一个1024列的矩阵。 3. 使用上式求参数。步长0.07,迭代10次 4.使用参数以及逻辑回归函数对测试数据处理,根据结果判断测试数 据类型。 五、实验结果与分析 5.1 实验环境与工具 Window7旗舰版+ python2.7.10 + numpy(库)+ notepad++(编辑)

Python这一语言的发展是非常迅速的,既然他支持在window下运行就不必去搞虚拟机。 5.2 实验数据集与参数设置 Knn算法: 训练数据1934个,测试数据有946个。

数据包括数字0-9的手写体。每个数字大约有200个样本。 每个样本保持在一个txt文件中。手写体图像本身的大小是32x32的二值图,转换到txt文件保存后,内容也是32x32个数字,0或者1,如下图所 示 建立一个kNN.py脚本文件,文件里面包含三个函数,一个用来生成将每个样本的txt文件转换为对应的一个向量:img2vector(filename):,一个用 来加载整个数据库loadDataSet():,最后就是实现测试。

电子设计实验报告——充电器

实验报告 实验课程名称直流稳压电源及充电器 专业班级电信1403班 学生学号2014213940 学生姓名凌志云 实验指导教师黄光明

实验课程名称:电子设计1 一、实验项目名称:ADS06-2型直流稳压电源及充电器设计 一般晶体管电路都需要直流电源,而且是稳定的电源,才能正常工作,如收音机,电视机等。不管是用分立元件组成电路,还是用集成电路,其中都少不了放大信号的晶体管。为了保证晶体管能够保证放大信号,必须采用稳定的直流电源供电,稳定的直流电压可由干电池或蓄电池获得,但他们储蓄电量的能力有限,不能供应电器长时间工作。 稳定的直流电源可由交流电经过降压,然后经过稳压获得,这就是常见的稳压电源,他能供电器长时间工作。本课题主要设计一个连续可调稳压电路以及用这个电路对5号和7号电池进行充电,以实现其多功能化。 二、实验目的和要求: 实验目的: 1.学会直流稳压电源及充电器的设计方法和性能指标测试方法。 2.培养实践技能以及分析和解决实际问题的能力。 实验要求: 1.制作一个连续可调直流稳压电源及充电器,主要技术指标要求 (1)输出电压:交流220V,直流3V,6V (2)最大输出电流:500mA (3)电池充电器:左通道(E1,E2)充电电流50~60MA(普通充电);右通道(E3,E4)充电电流110~130mA(快速充电) 2.稳压电源和充电器可同时使用,但两者电流之和不能超过500mA 三、实验内容和原理: 1.直流稳压电源设计思路 (1)电网供电电压交流220V(有效值)50Hz,要获得低压直流输出,首先必须采用电源变压器将电网电压降低获得所需要交流电压。 (2)降压后的交流电压,通过整流电路变成单向直流电,但其幅度变化大(即脉动大)。 (3)脉动大的直流电压须经过滤波电路变成平滑,脉动小的直流电,即将交流成份滤掉,保留其直流成份。 (4)滤波后的直流电压,再通过稳压电路稳压,便可得到基本不受外界影响的稳定直流电压输出,供给负载RL。 2.直流稳压电源原理 直流稳压电源是一种将220V工频交流电转换成稳压输出6V、9V的直流电压的装置,它需要变压、整流、滤波、稳压四个环节才能完成,见图。

人工智能实验报告

《一人工智能方向实习一》 实习报告 专业:计算机科学与技术 班级:12419013 学号: 姓名: 江苏科技大学计算机学院 2016年3月

实验一数据聚类分析 一、实验目的 编程实现数据聚类的算法。 二、实验内容 k-means聚类算法。 三、实验原理方法和手段 k-means算法接受参数k ;然后将事先输入的 n个数据对象划分为 k个聚类以便使得 所获得的聚类满足:同一聚类中的对象相似度较高 四、实验条件 Matlab2014b 五、实验步骤 (1)初始化k个聚类中心。 (2)计算数据集各数据到中心的距离,选取到中心距离最短的为该数据所属类别。 (3)计算(2)分类后,k个类别的中心(即求聚类平均距离) (4)继续执行(2)(3)直到k个聚类中心不再变化(或者数据集所属类别不再变化) 六、实验代码 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % mai n.m % k-mea ns algorithm % @author matcloud %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear; close all ; load fisheriris ; X = [meas(:,3) meas(:,4)]; figure; plot(X(:,1),X(:,2), 'ko' ,'MarkerSize' ,4); title( 'fisheriris dataset' , 'FontSize' ,18, 'Color' , 'red'); [idx,ctrs] = kmea ns(X,3); figure; subplot(1,2,1); plot(X(idx==1,1),X(idx==1,2), 'ro' , 'MarkerSize' ,4); hold on;

人工智能实验报告

****大学 人工智能基础课程实验报告 (2011-2012学年第一学期) 启发式搜索王浩算法 班级: *********** 学号: ********** 姓名: ****** 指导教师: ****** 成绩: 2012年 1 月 10 日

实验一 启发式搜索算法 1. 实验内容: 使用启发式搜索算法求解8数码问题。 ⑴ 编制程序实现求解8数码问题A *算法,采用估价函数 ()()()() w n f n d n p n ??=+???, 其中:()d n 是搜索树中结点n 的深度;()w n 为结点n 的数据库中错放的棋子个数;()p n 为结点n 的数据库中每个棋子与其目标位置之间的距离总和。 ⑵ 分析上述⑴中两种估价函数求解8数码问题的效率差别,给出一个是()p n 的上界的()h n 的定义,并测试使用该估价函数是否使算法失去可采纳性。 2. 实验目的 熟练掌握启发式搜索A *算法及其可采纳性。 3. 实验原理 使用启发式信息知道搜索过程,可以在较大的程度上提高搜索算法的时间效率和空间效率; 启发式搜索的效率在于启发式函数的优劣,在启发式函数构造不好的情况下,甚至在存在解的情形下也可能导致解丢失的现象或者找不到最优解,所以构造一个优秀的启发式函数是前提条件。 4.实验内容 1.问题描述 在一个3*3的九宫格 里有1至8 八个数以及一个空格随机摆放在格子中,如下图: 初始状态 目标状态 现需将图一转化为图二的目标状态,调整的规则为:每次只能将空格与其相邻的一个数字进行交换。实质是要求给出一个合法的移动步骤,实现从初始状态到目标状态的转变。 2.算法分析 (1)解存在性的讨论 对于任意的一个初始状态,是否有解可通过线性代数的有关理论证明。按数组存储后,算出初始状态的逆序数和目标状态的逆序数,若两者的奇偶性一致,则表明有解。 (2)估价函数的确定

人工智能 遗传算法实验报告

人工智能实验报告 学号: 姓名: 实验名称:遗传算法 实验日期:2016.1.5

【实验名称】遗传算法 【实验目的】 掌握遗传算法的基本原理,熟悉遗传算法的运行机制,学会用遗传算法来求解问题。【实验原理】 遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。 遗传算法是从代表问题可能潜在的解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。 遗传算法程度流程图为:

【实验内容】 题目:已知f(x)=x*sin(x)+1,x ∈[0,2π],求f(x)的最大值和最小值。 数据结构: struct poptype { double gene[length];//染色体 double realnumber;//对应的实数x double fitness;//适应度 double rfitness;//相对适应度 double cfitness;//累计适应度 }; struct poptype population[popsize+1];//最后一位存放max/min struct poptype newpopulation[popsize+1];// 染色体编码: [0,2]x π∈,变量长度为2 π,取小数点后6位,由于2262322*102;π<< 因此,染色体由23位字节的二进制矢量表示,则X 与二进制串()2之间的映射如下: () 222221 2 010 b b ......b 2'i i i b x =?? =?= ???∑;23 2'21x x π=- 适应度函数: 由于要求f(x)的最值,所以适应度函数即可为f(x)。但为了确保在轮赌法选择过中,每个个体都有被选中的可能性,因此需要将所有适应度调整为大于0的值。因此,设计求最大值的适应度函数如下: max ()5sin 6; eval f x x x =+=+ 将最小问题转化为求-f(x)的最大值,同理,设计最小值的适应度函数如下: min ()5sin 4;eval f x x x =-+=-+ 种群大小: 本实验默认为50,再进行种群初始化。 实验参数: 主要有迭代数,交叉概率,变异概率这三个参数。一般交叉概率在0.6-0.9范围内,变异概率在0.01-0.1范围内。可以通过手动输入进行调试。 主要代码如下: void initialize()//种群初始化 { srand(time(NULL));

相关文档
相关文档 最新文档