虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

贴装

  • 遗传算法的MATLAB代码

    遗传算法为群体优化算法,也就是从多个初始解开始进行优化,每个解称为一个染色体,各染色体之间通过竞争、合作、单独变异,不断进化。 优化时先要将实际问题转换到遗传空间,就是把实际问题的解用染色体表示,称为编码,反过程为解码,因为优化后要进行评价,所以要返回问题空间,故要进行解码。SGA采用二进制编码,染色体就是二进制位串,每一位可称为一个基因;解码时应注意将染色体解码到问题可行域内。 遗传算法模拟“适者生存,优胜劣汰”的进化机制,染色体适应生存环境的能力用适应度函数衡量。对于优化问题,适应度函数由目标函数变换而来。一般遗传算法求解最大值问题,如果是最小值问题,则通过取倒数或者加负号处理。SGA要求适应度函数>0,对于<0的问题,要通过加一个足够大的正数来解决。这样,适应度函数值大的染色体生存能力强。 遗传算法有三个进化算子:选择(复制)、交叉和变异。 SGA中,选择采用轮盘赌方法,也就是将染色体分布在一个圆盘上,每个染色体占据一定的扇形区域,扇形区域的面积大小和染色体的适应度大小成正比。如果轮盘中心装一个可以转动的指针的话,旋转指针,指针停下来时会指向某一个区域,则该区域对应的染色体被选中。显然适应度高的染色体由于所占的扇形区域大,因此被选中的几率高,可能被选中多次,而适应度低的可能一次也选不中,从而被淘汰。算法实现时采用随机数方法,先将每个染色体的适应度除以所有染色体适应度的和,再累加,使他们根据适应度的大小分布于0-1之间,适应度大的占的区域大,然后随机生成一个0-1之间的随机数,随机数落到哪个区域,对应的染色体就被选中。重复操作,选出群体规模规定数目的染色体。这个操作就是“优胜劣汰,适者生存”,但没有产生新个体。 交叉模拟有性繁殖,由两个染色体共同作用产生后代,SGA采用单点交叉。由于SGA为二进制编码,所以染色体为二进制位串,随机生成一个小于位串长度的随机整数,交换两个染色体该点后的那部分位串。参与交叉的染色体是轮盘赌选出来的个体,并且还要根据选择概率来确定是否进行交叉(生成0-1之间随机数,看随机数是否小于规定的交叉概率),否则直接进入变异操作。这个操作是产生新个体的主要方法,不过基因都来自父辈个体。 变异采用位点变异,对于二进制位串,0变为1,1变为0就是变异。采用概率确定变异位,对每一位生成一个0-1之间的随机数,看是否小于规定的变异概率,小于的变异,否则保持原状。这个操作能够使个体不同于父辈而具有自己独立的特征基因,主要用于跳出局部极值。 遗传算法认为生物由低级到高级进化,后代比前一代强,但实际操作中可能有退化现象,所以采用最佳个体保留法,也就是曾经出现的最好个体,一定要保证生存下来,使后代至少不差于前一代。大致有两种类型,一种是把出现的最优个体单独保存,最后输出,不影响原来的进化过程;一种是将最优个体保存入子群,也进行选择、交叉、变异,这样能充分利用模式,但也可能导致过早收敛。 由于是基本遗传算法,所以优化能力一般,解决简单问题尚可,高维、复杂问题就需要进行改进了。 下面为代码。函数最大值为3905.9262,此时两个参数均为-2.0480,有时会出现局部极值,此时一个参数为-2.0480,一个为2.0480。算法中变异概率pm=0.05,交叉概率pc=0.8。如果不采用最优模式保留,结果会更丰富些,也就是算法最后不一定收敛于极值点,当然局部收敛现象也会有所减少,但最终寻得的解不一定是本次执行中曾找到过的最好解。

    标签: 遗传算法

    上传时间: 2015-06-04

    上传用户:芃溱溱123

  • U盘重装系统

    很方便的装机方法。。。。。。。。。。。。。。。。

    标签: 电脑重装

    上传时间: 2015-06-13

    上传用户:xiaodanmo

  • 计算机操作系统

    WIN7系统操作技术,主要是修改开机启动背景,把自己喜欢的照片贴上去!

    标签: win

    上传时间: 2015-11-26

    上传用户:bfchngfcxf

  • USB3.0 AF规格书

    USB 3.0 AF插座分为USB2.0 90度,180度, SMT贴片式,沉板式

    标签: USB3.0插座 USB3.0 AF插座 USB 3.0图纸 USB 3.0 AF规格书 USB AF插座图纸 USB AF 90度

    上传时间: 2016-01-09

    上传用户:1234lucy

  • USB3.0 AF SMT规格图

    USB3.0 AF 插座可分为插板式,贴板式和沉板式,侧插式等几种方式

    标签: USB3.0 AF SMT规格图 USB3.0 SMT图纸 SMT USB3.0 贴片USB3.0 USB3.0贴片图纸 USB3.0插座 USB3.0贴片插座图纸

    上传时间: 2016-01-09

    上传用户:1234lucy

  • 霍根班德飞

    个人斯蒂芬若尔盖如果热更多的双方围绕更贴合人体

    标签: 发的

    上传时间: 2016-01-14

    上传用户:就好好学习呀

  • AVR单片机转速表

    /****************************************************************                  外部晶振8M                  PA0~3:四位数码管的位选                  PB0~7:数码管的8位段选                  外部中断0用于计数                  定时器0溢出中断的定时为1ms                  说明 :检测到水流较小时,继电器延时1秒关闭  ******************************************************************/                #include<iom16v.h>   #include<macros.h>   #define uchar unsigned char   #define uint unsigned int       char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};  //数码管段选        char position[4]={0xfe,0xfd,0xfb,0xf7};//数码管位选        uint sumnum=0;  //用于记录1000ms内进入中断的次数        uint time=0;   //记录进入比较定时器0的次数        uint num=0;     //记录1ms内进入中断的次数        uint count=0;   //进入外部中断0的次数        uchar flag;        uint sumnum1;   //记录100ms内的数目       /***************************函数声明***************************/        void delay();        void display(uint m );        void init();        void init_0();        void init_2();    void _delay_us(uint l)   {        unsigned int i;        for(i=0;i<l;i++)        {        asm("nop");        }   }           /**************************主函数***********************************/       void main()   {        init();        init_0();        init_2();        while(sumnum<5)        {           PORTD=0XBF;           segdisplay(sumnum1);        }       while(1)       {           segdisplay(sumnum1);       }           }        /*************************扫描数码管时的延时函数*********************/        void delay()    {         uchar i,j;         for(i=6;i>0;i--)         for(j=225;j>0;j--);    }        /************************数码管显示函数*****************************/       void segdisplay( int temp)        {         int seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};         int temp1,temp2,temp3,temp4;         temp1=temp/1000;         temp2=(temp/100)%10;         temp3=(temp/10)%10;         temp4=temp%10;         DDRB=0xff;         DDRA|=0x0f;           PORTA=~BIT(3);           PORTB=seg[temp1];           _delay_us(100);           PORTA=~BIT(2);           PORTB=seg[temp2];           _delay_us(100);           PORTA=~BIT(1);           PORTB=seg[temp3];           _delay_us(100);           PORTA=~BIT(0);           PORTB=seg[temp4];           _delay_us(100);       }        /***********************管脚初始化函数*********************/        void init()    {                      DDRD|=0X40;   //PD4 设置为输出             PORTD=0XBF;                DDRA=0XFF;             DDRB=0XFF;             PORTA=0XFF;             PORTB=0XFF;    }        /***********************外部中断0初始化*********************/        void init_0()    {         MCUCR=0X02;   //INT0为下降沿触发         GICR=0X40;   //使能INT0中断         SREG=0X80;  //使能总中断    }        /**********************定时器2初始化***********************/        void init_2()    {         TCCR0=0x03;   // 内部时钟,64 分频(8M/64=125KHz)          TCNT0=0x83;   //装初值           TIMSK=0x01;   // 允许 T/C0溢出中断中断      }          /***********************外部中断0子函数********************/        #pragma interrupt_handler int0_isr:2        void int0_isr(void)        {             count++;        }        /*********************定时计数器0溢出中断子函数*****************/       #pragma interrupt_handler int0_over:10        void int0_over(void)       {           TCNT0=0x83;   //重装初值            if((time%100) == 0)               sumnum1 = num;           if(time == 1000)           {               sumnum=num;               if(sumnum<10)               {                                      if((flag==1)&&(sumnum<10))                   {                       PORTD=0XFF;                       flag=0;                   }                                      flag++;               }               else                       PORTD=0XBF;               num=0;               time=0;           }           num+=count;           count=0;           ++time;        } 

    标签: C语言

    上传时间: 2016-03-09

    上传用户:彦 yan

  • 电脑技艺汇总

    主要是介绍电脑的一些实用技能,好比如重装教程,杀毒教程,死机教程等等,里面一共有12个关于电脑的使用的技巧,以及在使用过程中电脑出现的问题以及对应的解决方案,这对于电脑的使用和维护是份很好的资料。

    标签: 技巧篇 禁忌篇 空间篇 快捷篇 破解篇 软件篇 杀毒篇 死机篇 提速篇 网址篇 优化篇 重装篇

    上传时间: 2016-03-19

    上传用户:jpjia

  • mutisim电路仿真软件

    本软件mutisim是10.1版本的,我的是win7系统,没在其他系统装过mutisim10.1,压缩文件夹里了也有安装说明,也可以参考百度,很简单就装好了。

    标签: mutisim 电路仿真软件

    上传时间: 2016-07-24

    上传用户:酷购11帅

  • 面向微机电系统组装与封装的微操作装备关键技术

    对微机电系统(Micro electro mechanical systems,MEMS)组装与封装工艺的特点进行了总结分析,给出了MEMS组装与封装设备的研究现状。针对MEMS产业发展的特点,分析了面向MEMS组装与封装的微操作设备中的工艺参数优化数据库、快速精密定位、模块化作业工具、快速显微视觉、柔性装夹和自动化物流等关键技术。在此基础上,详细介绍了研制的MEMS传感器阳极化键合设备和引线键合设备的组成结构,工作原理,并给出了组装和封装试验结果。最后,指出了MEMS组装与封装技术及设备研制的发展趋势。

    标签: 微机电系统 封装 关键技术 操作

    上传时间: 2016-07-26

    上传用户:leishenzhichui