java最佳适应算法代码,最佳适应算法最坏适应算法

有目标函数,怎么用sgd算法优化

pre t="code" l="java"function main()

10年的乐清网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整乐清建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“乐清网站设计”,“乐清网站推广”以来,每个客户项目都认真落实执行。

clc;clear all;close all;

tic; %程序运行计时

E0=0.001; %允许误差

MaxNum=100; %粒子最大迭代次数

narvs=1; %目标函数的自变量个数

particlesize=30; %粒子群规模

c1=2; %每个粒子的个体学习因子,也称为加速常数

c2=2; %每个粒子的社会学习因子,也称为加速常数

w=0.6; %惯性因子

vmax=0.8; %粒子的最大飞翔速度

x=-5+10*rand(particlesize,narvs); %粒子所在的位置

v=2*rand(particlesize,narvs); %粒子的飞翔速度

%用inline定义适应度函数以便将子函数文件与主程序文件放在一起,

%目标函数是:y=1+(2.1*(1-x+2*x.^2).*exp(-x.^2/2))

%inline命令定义适应度函数如下:

fitness=inline('1/(1+(2.1*(1-x+2*x.^2).*exp(-x.^2/2)))','x');

%inline定义的适应度函数会使程序运行速度大大降低

for i=1:particlesize

for j=1:narvs

f(i)=fitness(x(i,j));

end

end

personalbest_x=x;

personalbest_faval=f;

[globalbest_faval i]=min(personalbest_faval);

globalbest_x=personalbest_x(i,:);

k=1;

while k=MaxNum

for i=1:particlesize

for j=1:narvs

f(i)=fitness(x(i,j));

end

if f(i)personalbest_faval(i) %判断当前位置是否是历史上最佳位置

personalbest_faval(i)=f(i);

personalbest_x(i,:)=x(i,:);

end

end

[globalbest_faval i]=min(personalbest_faval);

globalbest_x=personalbest_x(i,:);

for i=1:particlesize %更新粒子群里每个个体的最新位置

v(i,:)=w*v(i,:)+c1*rand*(personalbest_x(i,:)-x(i,:))

+c2*rand*(globalbest_x-x(i,:));

for j=1:narvs %判断粒子的飞翔速度是否超过了最大飞翔速度

if v(i,j)vmax;

v(i,j)=vmax;

elseif v(i,j)-vmax;

v(i,j)=-vmax;

end

end

x(i,:)=x(i,:)+v(i,:);

end

if abs(globalbest_faval)E0,break,end

k=k+1;

end

Value1=1/globalbest_faval-1; Value1=num2str(Value1);

% strcat指令可以实现字符的组合输出

disp(strcat('the maximum value','=',Value1));

%输出最大值所在的横坐标位置

Value2=globalbest_x; Value2=num2str(Value2);

disp(strcat('the corresponding coordinate','=',Value2));

x=-5:0.01:5;

y=2.1*(1-x+2*x.^2).*exp(-x.^2/2);

plot(x,y,'m-','linewidth',3);

hold on;

plot(globalbest_x,1/globalbest_faval-1,'kp','linewidth',4);

legend('目标函数','搜索到的最大值');xlabel('x');ylabel('y');grid on;toc;

遗传算法求最短路径

#includestdio.h

#includeiostream

#includestring.h

#includemalloc.h

#includestdlib.h

#includestring

using namespace std;

#define OVERFLOW -2

#define OK 1

#define ERROR 0

#define INFINITY 200//最大值

#define MAX_VERTEX_NUM 20//最大顶点个数

typedef char VertexType;//定义为char类型

//以下是全局变量,用于保存弗洛伊德算法的路径和长度

int D[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//记录最短路径长度

int P[MAX_VERTEX_NUM][MAX_VERTEX_NUM][MAX_VERTEX_NUM];//记录最短路径标记

//以下是全局变量,用于保存迪杰斯特拉算法的路径和长度

int Distance[MAX_VERTEX_NUM];

VertexType former[MAX_VERTEX_NUM];//终点的前一个顶点

bool final[MAX_VERTEX_NUM];//记录顶点是否在V-S中

typedef struct ArcCell

{

int adj; //顶点关系类型

int weight; //该弧相关信息的指针,在此记录为权值

}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedef struct

{

VertexType vexs[MAX_VERTEX_NUM]; //顶点向量

AdjMatrix arcs; //邻接矩阵

int vexnum; //顶点数

int arcnum; //弧数

}MGraph;

void InitialMGraph(MGraph G)//初始化

{

G.arcnum=G.vexnum=0; //初始化边数跟顶点数都为零

for(int i=0;iMAX_VERTEX_NUM;i++)

for(int j=0;jMAX_VERTEX_NUM;j++)

{

if(i==j)

G.arcs[i][j].weight=0;

else

G.arcs[i][j].weight=INFINITY; //初始化为200,以200认为是无穷大

}

}

void InsertVex(MGraph G,VertexType v)//插入顶点

{

if(G.vexnum=MAX_VERTEX_NUM)

G.vexs[G.vexnum++]=v;

}

void InsertArc(MGraph G,VertexType v1,VertexType v2)//插入边

{

int m,n;

G.arcnum++;

for(int k=0;kG.vexnum;k++)

{

if(G.vexs[k]==v1)

m=k;

if(G.vexs[k]==v2)

n=k;

}

//插入

ArcCell A;

cout"请输入权值:";

cinA.weight;

G.arcs[m][n].weight=A.weight;

}

//迪杰斯特拉最短路径,假设始点就存储在数组中的第一个

void ShortestPath_DIJ(MGraph G,int v0)

{

//初始化距离

for(int v=0;vG.vexnum;++v)

{

final[v]=false;

Distance[v]=G.arcs[v0][v].weight;

if(Distance[v]INFINITYDistance[v]!=0)

{

former[v]=G.vexs[v0];

}

else

former[v]='#';

}

final[v0]=true;

former[v0]=G.vexs[v0];

for(int i=1;iG.vexnum;++i)//剩余的G.vexnum-1个顶点

{

int w;

int min=INFINITY;

int v=-1;

for(w=0;wG.vexnum;++w)

{

if(!final[w]Distance[w]min)

{

v=w;

min=Distance[w];

}

}

if(v!=-1)

{

final[v]=true;//将离顶点V0最近的顶点v加入S集合中

for(w=0;wG.vexnum;++w)//更新当前的最短路径及距离

{

if(!final[w](min+G.arcs[v][w].weightDistance[w])G.arcs[v][w].weightINFINITY)

{

Distance[w]=min+G.arcs[v][w].weight;

former[w]=G.vexs[v];

}

}

}

}

}

//输出迪杰斯特拉中的最短路径

void output_ShortestPath_DIJ(MGraph G,int v0)

{

int i;

for(i=1;iG.vexnum;i++)

{

coutG.vexs[v0]"-"G.vexs[i]":";

if(Distance[i]!=INFINITY)

{

cout"最短路径长度为:"Distance[i]" 最短路径的前一个顶点为:"former[i];

coutendl;

}

else

cout"此两顶点之间不存在路径"endl;

}

}

//弗洛伊德最短路径

void shortestPath_FLOYD(MGraph G)

{

for(int v=0;vG.vexnum;++v)

{

for(int w=0;wG.vexnum;++w)

{

D[v][w]=G.arcs[v][w].weight;

for (int k=0;k G.vexnum;k++)

P[v][w][k]=-1;

if(D[v][w]INFINITY) //从v到w有直接路径

P[v][w][v]=w;

}

}

for(int k=0;kG.vexnum;++k)

{

for(int v=0;vG.vexnum;v++)

for(int w=0;wG.vexnum;++w)

if(D[v][w]D[v][k]+D[k][w])

{

D[v][w]=D[v][k]+D[k][w];

for(int i=0;iG.vexnum;i++)

{

if(P[v][k][i]!=-1)//原来存了顶点

P[v][w][i]=P[v][k][i];

else

P[v][w][i]=P[k][w][i];

}

}

}

}

//输出弗洛伊德中的最短路径

void output_shortestPath_FLOYD(MGraph G)

{

for(int i=0;iG.vexnum;++i)

{

for(int j=0;jG.vexnum;++j)

{

if(i!=j)//自己不能到达自己

{

coutG.vexs[i]"-"G.vexs[j]":";

if(D[i][j]==INFINITY)

{

cout"此两顶点之间不存在路径"endl;

}

else

{

cout"最短路径长度为:"" "D[i][j]" ";

cout"最短路径为:";

coutG.vexs[i];

for(int k=i;k!=-1;k=P[i][j][k])

{

if(k!=i)

coutG.vexs[k];

}

coutendl;

}

}

}

}

}

int main()

{

int num1;//顶点个数

int num2;//弧个数

cout"请输入顶点个数:";

cinnum1;

cout"请输入弧个数:";

cinnum2;

VertexType v;

MGraph G;

InitialMGraph(G);

cout"请输入顶点的信息:"endl;

for(int i=0;inum1;++i)

{

cinv;;

InsertVex(G,v);

}

VertexType v1,v2;

for(int j=0;jnum2;++j)

{

cout"请输入两个结点数据来表示的边:";

cinv1v2;

InsertArc(G,v1,v2);

}

ShortestPath_DIJ(G,0);

cout"迪杰斯特拉中的最短路径如下:"endl;

output_ShortestPath_DIJ(G,0);

coutendlendl;

shortestPath_FLOYD(G);

cout"弗洛伊德中的最短路径如下:"endl;

output_shortestPath_FLOYD(G);

return 0;

}

Java编程的特点是什么呢

Java编程的特点是什么呢?

Java由美国SUN公司(被oracle公司收购)发明于1995年,是目前业界应用最广泛、使用人数最多的语言,连续多年排名世界第一,可以称之为“计算机语言界的英语”。

那么Java这么高的评价它的特点有哪些,下面我来为题主解答:

一、跨平台/可移植性

这是Java的核心优势。Java在设计时就很注重移植和跨平台性。比如:Java的int永远都是32位。不像C++可能是16,32,可能是根据编译器厂商规定的变化。这样的话程序的移植就会非常麻烦。

Java首先利用文本编辑器编写 Java源程序,源文件的后缀名为.java;再利用编译器(javac)将源程序编译成字节码文件,字节码文件的后缀名为.class; 最后利用虚拟机(解释器,java)解释执行。如下图所示:

二、安全性

Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力,使Java可以很容易构建防病毒,防篡改的系统。比如Java取消了强大但又危险的指针。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的。

三、面向对象

面向对象是一种程序设计技术,非常适合大型软件的设计和开发。由于C++为了照顾大量C语言使用者而兼容了C,使得自身仅仅成为了带类的C语言,多少影响了其面向对象的彻底性!Java则是完全的面向对象语言。

四、简单性

Java就是C++语法的简化版,我们也可以将Java称之为“C++-”。跟我念“C加加减”,指的就是将C++的一些内容去掉;比如:头文件,指针运算,结构,联合,操作符重载,虚基类等等。同时,由于语法基于C语言,因此学习起来完全不费力。

五、高性能

Java最初发展阶段,总是被人诟病“性能低”;客观上,高级语言运行效率总是低于低级语言的,这个无法避免。Java语言本身发展中通过虚拟机的优化提升了几十倍运行效率。比如,通过JIT(JUST IN TIME)即时编译技术提高运行效率。 将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。这样的话,使Java程序的执行效率大大提高,某些代码甚至接近C++的效率。

因此,Java低性能的短腿,已经被完全解决了。业界发展上,我们也看到很多C++应用转到Java开发,很多C++程序员转型为Java程序员。

六、分布式

Java是为Internet的分布式环境设计的,因为它能够处理TCP/IP协议。事实上,通过URL访问一个网络资源和访问本地文件是一样简单的。Java还支持远程方法调用(RMI,Remote Method Invocation),使程序能够通过网络调用方法。

七、多线程

多线程的使用可以带来更好的交互响应和实时行为。 Java多线程的简单性是Java成为主流服务器端开发语言的主要原因之一。

八、健壮性

Java是一种健壮的语言,吸收了C/C++ 语言的优点,但去掉了其影响程序健壮性的部分(如:指针、内存的申请与释放等)。Java程序不可能造成计算机崩溃。即使Java程序也可能有错误。如果出现某种出乎意料之事,程序也不会崩溃,而是把该异常抛出,再通过异常处理机制加以处理。

以上几种特性你了解到啦吗?    记得给个赞!

去哪儿网java开发面试经验牛客

以下是某位求职者面经,仅供参考:

一面:

1.自我介绍

2.直接上手红黑树和平衡二叉树区别

3.红黑树的旋转

2node节点插入和3node节点插入时候旋转的情况 简述伪代码

4.问项目情况。大概半小时 5.concurrenthashmap

结构分析。 删除和获取操作过程描述。就是segment. Entry.

除了value 为volatile 其余都是final.

删除和获取操作等等。例如:删除操作是将entry要删除的节点的前半部分链表进行复制,并指向当前删除节点的后面节点。(因为next是final的,不可以进行修改,只有entry的表头可以修改)

不详述了。

6.索引的优缺点 什么时候索引不起作用? 在什么地方可以使用索引?

7.jvm

多态原理。invokestatic invokeinterface

等指令。常量池中的符号引用 找到直接引用。在堆中找到实例对象,获取到偏移量,由偏移量在方法表中指出调用的具体方法。接口是在方法表中进行扫描)等等扯了半天

8.os: 页面调度算法 几种 分别说一下 LRU FIFO 最佳适应算法

9.内存管理: 固定分区 动态分区 段 页 都讲讲 (哈哈)

10.自己实现一下LRU算法

8.怎么学习。看过什么书

二面:

1.自我介绍

2.项目中与app移动端 的json格式设计

3.hashmap的缺点 具体提现在哪里?

4.Collections.sort()

的原理---本质上调用的是Arrays.sort() 内部是 使用的归并排序 接着写了一下归并(辅助数组的归并,和手摇算法的归并)

5.一个字符串数组,现给定一个string去进行找出对应的数组中字符串的下标 (可以有容错,但两字符串长度必须一致,容错为2)

例如:

["hello","hj","abc"]

key=“hellg" 返回下角标0

6.jvm参数调优 jvm堆的大小调优

MaxTureningShelod newratio -xxs -xxm -persize

7.图的 prime

算法

kruskal

算法

dijkstra算法 解决什么问题? 分别写一下

伪代码

8.设计模式: 单例模式(懒汉饿汉) 工厂方法模式 观察者模式 责任链模式

9.项目 又问了一些

10.平时怎么学习?

三面:

1.自我介绍

2.自己优缺点

3.目前有几个offer

4.工作地点要求

5.在校实验室做项目,你认为最大的收获是什么

6.评价一下自己的大学生活

7.讲了一下福利 之类的

现场书面offer没了,所以只好等等邮寄,不过还好给了一个布偶纪念品


分享文章:java最佳适应算法代码,最佳适应算法最坏适应算法
文章分享:http://scyanting.com/article/hcshoi.html