当前位置: 代码网 > it编程>编程语言>Java > java蚁群算法的物流管理系统eclipse定制开发mysql数据库BS模式java编程百度地图

java蚁群算法的物流管理系统eclipse定制开发mysql数据库BS模式java编程百度地图

2024年08月06日 Java 我要评论
java 基于蚁群算法的物流管理系统是一套完善的web设计系统 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。(5)配送站页面:包含了运单入站——运单信息更新为进入配送站的状态,记录进入的配送站的ID。运单出站——选择配送运单的配送员,并将运单信息更新为正在配送状态,记录配送的配。运单归班——配送员派件完毕后,回到配送站内操作,选择配送结果:妥投、滞留、拒收,在数据库更新状态信息(妥投:运单正常配送,实物送达客户。(3)信息录入页面:录入运单信息;

一、源码特点
     java 基于蚁群算法的物流管理系统是一套完善的web设计系统 ,对理解jsp java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用b/s模式开发。开发环境为
tomcat7.0,eclipse开发,数据库为mysql5.0,使用java语言开发。

java 蚁群算法物流配送管理系统


二、功能介绍

本课题物流配送管理系统系统主要包括以下内容:
(1)网站首页;
(2)用户登录页面;
(3)信息录入页面:录入运单信息;
(4)分拣中心页面:包含了运单入库——运单信息更新为分拣中心的状态,记录操作入库的分拣中心id。运单出库——选择运单出库的目的地,可选为配送站或者其他分拣中心等内容;
(5)配送站页面:包含了运单入站——运单信息更新为进入配送站的状态,记录进入的配送站的id。运单出站——选择配送运单的配送员,并将运单信息更新为正在配送状态,记录配送的配
送员。运单归班——配送员派件完毕后,回到配送站内操作,选择配送结果:妥投、滞留、拒收,在数据库更新状态信息(妥投:运单正常配送,实物送达客户。滞留:暂时无法将实物送达
客户,运单暂时在配送站保管。拒收:客户拒绝签收运单)。
(6)通过蚁群算法结合百度api计算运输路线

数据库设计

(1)管理员信息表如表5.1所示:

表5.1 管理员信息表

序号

字段名称

数据类型

长度

主键

描述

1

glyid

integer

11

管理员编号

2

yhm

varchar

40

用户名

3

mm

varchar

40

密码

4

xm

varchar

40

姓名

(2)机构信息表如表5.2所示:

表5.2 机构信息表

序号

字段名称

数据类型

长度

主键

描述

1

jgid

integer

11

机构编号

2

jgmc

varchar

40

机构名称

3

lx

varchar

40

类型

(3)用户信息表如表5.3所示:

表5.3 用户信息表

序号

字段名称

数据类型

长度

主键

描述

1

yhid

integer

11

用户编号

2

yhm

varchar

40

用户名

3

mm

varchar

40

密码

4

xm

varchar

40

姓名

5

jg

varchar

40

机构

6

lxdh

varchar

40

联系电话

7

lxdz

varchar

40

联系地址

(4)运单信息表如表5.4所示:

表5.4 运单信息表

序号

字段名称

数据类型

长度

主键

描述

1

ydid

integer

11

运单编号

2

dh

varchar

40

单号

3

fjr

varchar

40

发件人

4

fjdh

varchar

40

发件电话

5

fjdz

varchar

40

发件地址

6

sjr

varchar

40

收件人

7

sjrdh

varchar

40

收件人电话

8

sjdz

varchar

40

收件地址

9

bgnr

varchar

40

包裹内容

10

zt

varchar

40

状态

(5)入库信息表如表5.4所示:

表5.4 入库信息表

序号

字段名称

数据类型

长度

主键

描述

1

rkid

integer

11

入库编号

2

yd

varchar

40

运单

3

fjzx

varchar

40

分拣中心

4

yh

varchar

40

用户

5

czsj

varchar

40

操作时间

6

ywzd

varchar

40

运往站点

7

cksj

varchar

40

出库时间

8

zt

varchar

40

状态

核心算法设计 

  public void init(string path) {
        int []x;
        int []y;
        string buffer;
        bufferedreader br;
        try {
            br = new bufferedreader(new inputstreamreader(new fileinputstream(path)));
            this.distance = new int[this.citynum][this.citynum];
            x = new int[citynum];  
            y = new int[citynum];  
            //读取城市的坐标
            staticmethod st=new staticmethod();
            for (int i = 0; i < citynum; i++) {  
                buffer = br.readline();
                system.out.println("buffer="+buffer);
                string[] str = buffer.split(" ");  
                x[i] = integer.valueof(st.strint(str[1]));  
                y[i] = integer.valueof(st.strint(str[2]));  
            } 
            /**
             * 计算距离矩阵 ,针对具体问题,距离计算方法也不一样,此处用的是att48作为案例,
             * 它有48个城市,距离计算方法为伪欧氏距离,最优值为10628
             */
            for(int i = 0;i < this.citynum - 1;i++) {
                for(int j = i + 1;j < this.citynum;j++) {
                    double rij = math.sqrt(((x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]))/10.0);
                    int tij = (int)math.round(rij);
                    if(tij < rij)
                        tij++;
                    this.distance[i][j] = tij;
                    this.distance[j][i] = tij;
                }
            }
            this.distance[this.citynum-1][this.citynum-1] = 0;
            //初始化信息素矩阵
            this.pheromone=new double[this.citynum][this.citynum];
            for(int i = 0;i < this.citynum;i++) {
                for(int j = 0;j < this.citynum;j++) {
                    this.pheromone[i][j] = 0.1d;
                }
            }
            //初始化最优路径的长度
            this.bestlength=integer.max_value;
            //初始化最优路径
            this.besttour=new int[this.citynum+1];  
            //随机放置蚂蚁  
            for(int i = 0;i < this.antnum;i++){  
                this.ants[i]=new ant(this.citynum);  
                this.ants[i].init(this.distance, this.alpha, this.beta);  
            }  
        } catch (filenotfoundexception e) {
            e.printstacktrace();
        } catch (ioexception e) {
            e.printstacktrace();
        }
    }
    public void init(string a[]) {
        int []x;
        int []y;
        string buffer;
        bufferedreader br;
        try {
        //    br = new bufferedreader(new inputstreamreader(new fileinputstream(path)));
            this.distance = new int[this.citynum][this.citynum];
            x = new int[citynum];  
            y = new int[citynum];  
            //读取城市的坐标
            staticmethod st=new staticmethod();
            for (int i = 0; i < citynum; i++) {  
            	
            	   string[] str = a[i].split(",");  
                   x[i] = integer.valueof(st.strint(str[1]));  
                   y[i] = integer.valueof(st.strint(str[2]));  
            	
            }
            
            /*
            for (int i = 0; i < citynum; i++) {  
                buffer = br.readline();
                system.out.println("buffer="+buffer);
                string[] str = buffer.split(" ");  
                x[i] = integer.valueof(str[1]);  
                y[i] = integer.valueof(str[2]);  
            } 
            */
            /**
             * 计算距离矩阵 ,针对具体问题,距离计算方法也不一样,此处用的是att48作为案例,
             * 它有48个城市,距离计算方法为伪欧氏距离,最优值为10628
             */
            for(int i = 0;i < this.citynum - 1;i++) {
                for(int j = i + 1;j < this.citynum;j++) {
                    double rij = math.sqrt(((x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]))/10.0);
                    int tij = (int)math.round(rij);
                    if(tij < rij)
                        tij++;
                    this.distance[i][j] = tij;
                    this.distance[j][i] = tij;
                }
            }
            this.distance[this.citynum-1][this.citynum-1] = 0;
            //初始化信息素矩阵
            this.pheromone=new double[this.citynum][this.citynum];
            for(int i = 0;i < this.citynum;i++) {
                for(int j = 0;j < this.citynum;j++) {
                    this.pheromone[i][j] = 0.1d;
                }
            }
            //初始化最优路径的长度
            this.bestlength=integer.max_value;
            //初始化最优路径
            this.besttour=new int[this.citynum+1];  
            //随机放置蚂蚁  
            for(int i = 0;i < this.antnum;i++){  
                this.ants[i]=new ant(this.citynum);  
                this.ants[i].init(this.distance, this.alpha, this.beta);  
            }  
        } catch (exception e) {
            e.printstacktrace();
        } 
    }
    /**
     * 更新信息素
     */
    private void updatepheromone() {
        //信息素挥发  
        for(int i = 0;i < this.citynum;i++)  
            for(int j = 0;j < this.citynum;j++)  
                this.pheromone[i][j] = this.pheromone[i][j] * (1 - this.rho);
        //信息素更新
        for(int i = 0;i < this.citynum;i++) {
            for(int j = 0;j < this.citynum;j++) {
                for(int k = 0;k < this.antnum;k++) {
                    this.pheromone[i][j] += this.ants[k].getdelta()[i][j];
                }
            }
        }
    }

    public void solve() {
        for (int g = 0; g < this.max_gen; g++) {
            //每一只蚂蚁移动的过程
            for (int i = 0; i < this.antnum; i++) {
                for (int j = 0; j < this.citynum; j++) {
                    this.ants[i].selectnextcity(this.pheromone);
                }
                this.ants[i].gettabu().add(this.ants[i].getfirstcity());
//              if(this.ants[i].gettabu().size() < 49) {
//                  system.out.println(this.ants[i].tostring());
//              }
                //计算蚂蚁获得的路径长度  
                this.ants[i].settourlength(this.ants[i].calculatetourlength());  
                if(this.ants[i].gettourlength() < this.bestlength){  
                    //保留最优路径  
                    this.bestlength = this.ants[i].gettourlength();  
                    system.out.println("第"+g+"代,发现新的解"+this.bestlength);  
//                  system.out.println("size:"+this.ants[i].gettabu().size());
                    for(int k = 0;k < this.ants[i].gettabu().size();k++)  
                        this.besttour[k] = this.ants[i].gettabu().get(k).intvalue();;  
                }
                //更新信息素变化矩阵
                for (int j = 0; j < this.ants[i].gettabu().size()-1; j++) {
                    this.ants[i].getdelta()[this.ants[i].gettabu().get(j).intvalue()][this.ants[i].gettabu().get(j+1).intvalue()] = (double) (1.0/this.ants[i].gettourlength());
                    this.ants[i].getdelta()[this.ants[i].gettabu().get(j+1).intvalue()][this.ants[i].gettabu().get(j).intvalue()] = (double) (1.0/this.ants[i].gettourlength());
                }
            }
            //更新信息素
            this.updatepheromone();
            //重新初始化蚂蚁
            for(int i = 0;i < this.antnum;i++){  
                this.ants[i].init(this.distance, this.alpha, this.beta);
            }
        }
        //打印最佳结果
        this.printoptimal();
    }

百度地图展现设计

<font color="red" size="3">计算最佳路径结果
<%
sql="";
string jgmc="";
string mms="";
    string[] mm = null;;  

	for(int j=0;j<b.length;j++){
			db.open();
			mms=ids[b[j]];
			 mm = mms.split(",");  
		sql="select * from jigou where jgid='"+mm[0]+"'";
		system.out.println(sql);
		rs=db.query(sql);
		if(rs.next()){
		jgmc=rs.getstring("jgmc");
		
		}
		
		out.println(b[j]+":"+jgmc);
	system.out.println("b=="+b[j]);
		
		system.out.println(ids[b[j]]);
		}
%>


</font>
<div id="allmap" width="900px" height="800px"></div>




<script type="text/javascript">

// 百度地图api功能
var map = new bmap.map("allmap");
map.centerandzoom(new bmap.point(116.404, 39.915), 11);
map.enablescrollwheelzoom(true);

<%
string jd="";
string wd="";
string jd1="";
string wd1="";
string tt=ids[b[0]];
system.out.println(tt);
    string[] kk = tt.split(",");  
system.out.println("jd="+kk[1]);
system.out.println("wd="+kk[2]);

jd=kk[1];
wd=kk[2];
%>


var pa1 = new bmap.point(<%=jd%>,<%=wd%>);
var pa2 = new bmap.point(<%=jd%>,<%=wd%>);
var p3 = new bmap.point(116.365942,39.996165);
var p4 = new bmap.point(116.408757,39.995704);

<%
string str="new bmap.point(116.365942,39.996165), new bmap.point(116.408757,39.995704)";
str="";




int i=0;
	
	
		for(int j=0;j<b.length;j++){
			db.open();
			mms=ids[b[j]];
			 mm = mms.split(",");  
	
		
			str+="new bmap.point("+mm[1]+","+mm[2]+"),";
		}
			

			
			system.out.println("str="+str);
			
			if(i>0){
			str=str.substring(0,str.length()-1);
			}
			
			
			
%>

三、注意事项
    1、管理员账号:admin密码:admin 数据库配置文件dbo.java
     2、开发环境为tomcat7.0,eclipse开发,数据库为mysql5.0,使用java语言开发。
    3、数据库文件名是jspshop.sql ,系统名称shop
    4、系统首页地址:http://127.0.0.1:8080/shop/qt/index.jsp

四系统实现


 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com