分享
 
 
 

人工生命—群集智能—蚁群算法js版

王朝html/css/js·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

前言(摘自网上,代码是自己想出来的)

对于普通大众来说,“人工生命”、“群集智能”、“仿生机器人”等等可能是一些新鲜名词,他们可能会问,这些新鲜而时髦的科技的内容到底是什么?它们是否代表未来科技发展的方向?它们对人们的生活将会有什么样的影响?人类的未来将是什么样的?

对于计算机相关专业的技术人员来说,也许“细胞自动机”、“遗传算法”、“神经网络”、“蚁群算法”、“计算智能”等名词已经不陌生,然而这些技术之间究竟有什么联系?技术人员在同计算机程序中的 Bug 无休止地作斗争的同时,能不能考虑让计算机程序自发地变聪明?计算机程序可以自发地修正自己的错误吗?

对于生物专业的人士来说,他们可能更加关心自然生物 DNA 的合成、培育和生长。然而究竟什么是“活性”的本质?生命是一种物质还是信息?如何不进行昂贵而笨重的生物学实验就能验证研究人员的某个理论?

对于社会科学家和管理者来说,他们可能很关心如何让人们自发地合作,如何让一个组织更具活力。我们将会看到,自然界中的蚂蚁仅仅遵循简单的规则就能达到整体的合作从而有效、快速地搬运食物。那么,我们能否像蚂蚁那样每个人仅仅根据简单的规则完成简单的决策就有可能在人类群体中涌现出意想不到的集体效应?

这些问题表面上看,差异很大,但令人高兴的是,今天它们都可以在一门新兴科学——计算机科学和生物学交叉的人工生命中找到答案。人工生命诞生于 20 世纪末。起初,从事人工生命研究生学者主要是一些计算机科学家,他们向大自然学习,把生物的灵活适应本领移植到计算机中,让程序变得聪明起来。“遗传算法”、“神经网络”、“蚁群算法”等等正是计算机科学家向生物界学习的成果。另外,计算机也提供了天然的生物系统的模拟场所,这让生物学家们在电脑中就可以进行在平常情况下难以进行或无法进行的一些实验。

然而,人工生命不仅仅关心一些具体的技术问题,它更是一种崭新的自下而上的科学思维方法。事实上,在不经意间,科学界已经发生了一次全新的方法论变革:这就是用综合集成的方法代替还原分解的方法。我们仅掌握原子世界的规律并不能完全理解生命现象。纯粹的还原论已经走到了尽头,而通过计算机的帮助人们就可以把已经被分解还原的单个规律重新综合组织起来。我们不仅关心每个计算单元的属性,而且关心这些单元组合而成的整体动态。单个单元也许是非活性的,但单元的组合可能涌现出“活性”。这就是人工生命的方法。

人工生命学科还很年轻,在很多方面仍然不够成熟,而且很多学者对这门新学科的发展也各执看法,甚至这门学科的研究范围都不是很确定。我们所提到的人工生命在技术上主要指在数字世界中创造的虚拟版本的人工生命和在现实世界中创造的机器人版本的人工生命;在方法论上则主要强调自下而上的涌现方法和自发的适应进化方法。因此,所述的各种人工生命模型的基本思想是尽量减少人为的外在干预,让系统自发的发展、进化。

人工生命自一开始诞生就是一门理论和实际紧密结合的学科,它一方面需要人们运用抽象的理性思维看待生命,另一方面又特别强调计算机模拟实验。本着这种思路,每一个人工生命的实例都尽量写出其中的核心代码。因此熟悉计算机编程的人们可以从这些叙述中直接在自己的计算机上实现各种活灵活现的人工生命模型。

蚁群算法

还没有完成,现贴个初步的结果上来,大家帮忙一起研究下了,谢谢!

目前能实现随意控制蚂蚁的轨迹长度(Path)、数量(Unit)、速度(V)、角度(R)、加速度(dv,dr)。

Kr和Kv是常数,打算将来改成数组,作为用来控制蚂蚁活跃程度的基因。

但是总的div数量受机器速度限制,数量多了会很慢,我的机器最多只能跑得动3000只蚂蚁(当然轨迹要减小到1),已经把运动延时设成和蚂蚁数量相关,希望能有高手帮忙优化下。再次感谢!

运行代码框

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"><HEAD>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>蚁群算法js版</title>

<style>

.point{

position:absolute;

background-color:#000000;

overflow:hidden;

width:2px;

height:2px;

}

</style>

<script type="text/JavaScript">

//============================

//系统参数初始化

//----------------------------

//生命体数量与轨迹长度

Unit=10;Path=10;

//生命体速度上下限

v0=2;vM=10;

//生命体加速度变化范围

Kr=0.1;Kv=0.1*(vM-v0);

//生命体运动范围

x0=0;xM=document.documentElement.clientWidth;

y0=0;yM=document.documentElement.clientHeight;

//============================

var r=new Array();

var v=new Array();

var dr=new Array();

var dv=new Array();

var x=new Array();

var y=new Array();

var life=new Array();

//单击暂停

function document.onclick(){

if(window.status!='playing'){

window.status='playing';

init(0);

}else{

window.status=Unit;

}

}

//边界随窗口大小调整

function window.onresize(){

xM=document.documentElement.clientWidth;

yM=document.documentElement.clientHeight;

}

//初始化函数

function init(i){

if(window.status=='playing'&&i<Unit){

if(!life[i]){

obj=life[i]=document.createElement("div");

obj.className="point";

obj.style.left=x[i]=(x0+xM)/2;

obj.style.top=y[i]=(y0+yM)/2;

document.body.appendChild(obj);

r[i]=Math.random();

v[i]=1/Math.random();

dr[i]=Kr*Math.random();

dv[i]=Kv*Math.random();

}

Move(i);

setTimeout('init('+(i+1)+')',i);

}

}

//运动函数

Total=Unit*Path;

Pi=Math.PI;

function Move(i){

if(window.status=='playing'){

k=i%Unit;

X=x[k];

Y=y[k];

R=r[k];

V=v[k];

if(!life[i]){

obj=life[i]=document.createElement("div");

obj.className="point";

obj.style.left=X;

obj.style.top=Y;

document.body.appendChild(obj);

}

obj=life[i];

R+=dr[k]*(2*Math.random()-1);

V+=dv[k]*(2*Math.random()-1);

v[k]=V=(V<v0)?v0:((V<vM)?V:vM);

X+=Math.sin(2*Pi*R)*V;

Y+=Math.cos(2*Pi*R)*V;

//碰撞边界反弹

R=(X<x0||X>xM)?-R:R;

R=(Y<y0||Y>yM)?0.5-R:R;

r[k]=R>1?R-1:R<0?R+1:R;

X=x[k]+=Math.sin(2*Pi*R)*V;

Y=y[k]+=Math.cos(2*Pi*R)*V;

/*================================*/

//溢出边界重生(类似流星效果)

if(X<x0||X>xM||Y<y0||Y>yM){

X=x[k]=(x0+xM)/2;

Y=y[k]=(y0+yM)/2;

}else{

x[k]=X;

y[k]=Y;

}

/*----------------------------------

/*================================*/

obj.style.left=X;

obj.style.top=Y;

i+=Unit;

i=(i<Total)?i:i-Total;

setTimeout('Move('+i+')',Unit);

}

}

//根据浏览器自动加载动画

switch(navigator.appName.toLowerCase()){

case "netscape":

window.addEventListener("load",document.onclick,false);

break;

case "microsoft internet explorer":

default:

window.attachEvent("onload",document.onclick);

break;

}

</script>

</head>

<body scroll="no">

</body>

</html>

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

用div做点总觉得不是很值得,哪位大侠有更好的方法还请指点迷经!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有