package com.micsoft.planning2;
import java.awt.*;
import javax.swing.*;
import com.micsoft.planning1.car;
import com.micsoft.planning1.node;
import com.micsoft.planning1.side;
import java.awt.event.*;
import java.util.*;
import java.io.*; //包文件
import jxl.Cell;
import jxl.CellType;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
//框架父类
class Pier_Frame extends JFrame{
public Pier_Frame(int width, int height) {
setSize(width,height); //设置框架大小
setTitle("设置窗口标题"); //设置框架标题
//将框架置于屏幕正中
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int x = (screenSize.width - width)/2;
int y = (screenSize.height - height)/2;
setLocation(x,y); //设置框架位置
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗体时退出
}
}
//遗传算法窗口类
public class Gen_window extends Pier_Frame implements WindowListener,ComponentListener,ActionListener
{
//定义窗口基本组件
private JTextArea text;
private JTextField num;
private JButton button_GA,button_HELP,button_BREAK,button_DRAW;
private JRadioButton radiobutton_F1,radiobutton_F2,radiobutton_F3;
private JDraw panel_draw;//自定义JDraw类用于画遗传曲线
private int size,break_flag=0;//物种规模,中断退出标记
private JDialog dialog_HELP,dialog_ERROR;//异常中断对话框
public Gen_window(int width,int height){//窗口构造函数
super(width,height);
setTitle("GA-遗传算法 求函数最小值");//设置框架标题
this.setLayout(new GridLayout(1,2));//网格布局,1行2列,左右分割窗口
//创建文本区
text=new JTextArea();
JScrollPane area= new JScrollPane(text);//创建带滚动条的文区
this.add(area);
//窗口右边面板
JPanel right_panel=new JPanel(new GridLayout(2,1));
this.add(right_panel);
//编辑窗口右边面板
panel_draw=new JDraw();
right_panel.add(panel_draw);
JPanel button_panel=new JPanel(new GridLayout(5,1));
right_panel.add(button_panel);
//编辑按钮面板
ButtonGroup buttongroup=new ButtonGroup();//按钮组
radiobutton_F1=new JRadioButton(" 第一条车辆",true);
buttongroup.add(radiobutton_F1);
button_panel.add(radiobutton_F1);
radiobutton_F2=new JRadioButton(" 第二条车辆",true);
buttongroup.add(radiobutton_F2);
button_panel.add(radiobutton_F2);
radiobutton_F3=new JRadioButton(" 第三条车辆",true);
buttongroup.add(radiobutton_F3);
button_panel.add(radiobutton_F3);
JPanel break_act=new JPanel(new GridLayout(1,2));
JPanel num_act=new JPanel(new FlowLayout());
num=new JTextField(20);
num.setEditable(true);
JLabel label=new JLabel("种群规模:");
num_act.add(label);
num_act.add(num);
break_act.add(num_act);
button_HELP=new JButton("帮助 XMAN");
button_HELP.addActionListener(this);
button_DRAW=new JButton("种群遗传曲线");
button_DRAW.addActionListener(this);
JPanel panel_DH=new JPanel(new GridLayout(1,2));
panel_DH.add(button_DRAW);
panel_DH.add(button_HELP);
break_act.add(panel_DH);
button_panel.add(break_act);
//设置动作按钮1
JPanel button_act=new JPanel(new GridLayout(1,2));
button_GA=new JButton("开始遗传");
button_GA.addActionListener(this);
button_act.add(button_GA);
//设置动作按钮2
button_BREAK=new JButton("中断遗传");
button_BREAK.addActionListener(this);
button_act.add(button_BREAK);
button_panel.add(button_act);
this.setVisible(true);
}
//动作响应方法
public void actionPerformed(final ActionEvent e)//单击按钮时触发执行
{ final Object[] options = {"OK"};//定义最终类处理异常
if(e.getSource()==button_DRAW)//遗传曲线响应
{
if(radiobutton_F1.isSelected())//处理函数1
{
panel_draw.f1_draw=1;
panel_draw.repaint();}
if(radiobutton_F2.isSelected())//处理函数2
{
panel_draw.f2_draw=1;
panel_draw.repaint();}
}
if(radiobutton_F3.isSelected())//处理函数1
{
panel_draw.f3_draw=1;
panel_draw.repaint();}
if(e.getSource()==button_GA)//遗传变异操作
{
panel_draw.f1_draw=0;
panel_draw.f2_draw=0;
panel_draw.f3_draw=0;
panel_draw.repaint();//曲线刷新
break_flag=0;
text.setText("");//文本框刷新
if(radiobutton_F1.isSelected())
text.append(" 染色体 适应度 选择概率 积累概率 后代染色体 距离 时间 \n");
if(radiobutton_F2.isSelected())
text.append(" 染色体 适应度 选择概率 积累概率 后代染色体 距离 时间 \n");
if(radiobutton_F3.isSelected())
text.append(" 染色体 适应度 选择概率 积累概率 后代染色体 距离 时间 \n");
//引入多线程处理遗传物种的实时显示
//-----------------------------------------//
new Thread(){
//多线程处理
public void run(){
//物种规模异常处理
//---------------------//
try{
size=Integer.parseInt(num.getText());
}
catch(NumberFormatException ee)
{
String str = new String("请您设定物种规模");
JOptionPane.showOptionDialog(dialog_ERROR,str,"出错信息",
JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE,null,
options,options[0]);
return;
}
//-------------------------//
if(radiobutton_F1.isSelected())//响应函数1
{
g_algorithm1 ga=new g_algorithm1(size);//生成处理函数1的类对象
while(true)
{
//循环变异过程
ga.reflag(0);//标志位清零
//调用函数1遗传方法
// ga.initpops();
ga.fitness();
ga.sele_probalility();
ga.copying();
ga.location();
double pc=Math.random();
if(pc==0.2)
ga.cross();
double pm=Math.random();
if( pm==0.8)
ga.variation();
//-----------
//实时显示本次遗传变异种群信息
text.append("\n第"+ga.sum+"代\n");
for(int i=0;i<ga.N;i++)
{
text.append("\n");
for(int j=0;j<10;j++)
text.append(" "+ga.pops[i][j]);
text.append(" " );
text.append(" "+(int)(ga.suff[i]*1000)/1000.0+" "+(int)(ga.select[i]*1000)/1000.0+" "+(int)(ga.odds[i]*1000)/1000.0+"\t");
for(int j=0;j<10;j++)
text.append(" "+ga.child_pop[i][j]);
text.append(" ");
text.append(" "+(int)(ga.suffdistance[i]*1000)/1000.0);
text.append(" ");
text.append(" "+(int)(ga.sufftime[i]*1000)/1000.0);
text.setCaretPosition(text.getText().length());//滚动条强制到底部
}
ga.sum++;//物种代数
ga.flagation();
ga.next();
if(ga.flag==1)//搜索成功退出
{
text.append("\n 第"+(ga.sum-1)+"代" +ga.minsuff+"\n");
text.setCaretPosition(text.getText().length());
String str = new String("\
没有合适的资源?快使用搜索试试~ 我知道了~
使用java编写的VRP程序
共53个文件
class:33个
java:18个
classpath:1个
4星 · 超过85%的资源 需积分: 42 186 下载量 137 浏览量
2010-12-01
13:27:58
上传
评论 7
收藏 102KB RAR 举报
温馨提示
使用java语言解决VRP问题,所采用最邻近算法和遗传算法分别作线路规划与路径优化。
资源推荐
资源详情
资源评论
收起资源包目录
divideroute1.rar (53个子文件)
divideroute1
.project 388B
com
micsoft
planning1
g_algorithm.class 10KB
GA.java 6KB
side.java 1KB
car.class 3KB
exceldata.java 4KB
Best.class 374B
side.class 2KB
Generation.java 13KB
Generation.class 417B
GA.class 6KB
node.class 1KB
node.java 691B
excel.class 4KB
car.java 2KB
planning
exceldata2.java 3KB
side.java 1KB
JDraw.class 2KB
gaFrame.class 6KB
Genetic.class 5KB
car.class 3KB
divideroute.class 10KB
Best.class 349B
Pier_Frame.class 879B
Gen_window.class 7KB
f.class 270B
side.class 2KB
exceldata2.class 3KB
node.class 2KB
divideroute.java 16KB
f.java 56B
G_algorithm.class 5KB
gaFrame$1.class 1KB
gaFrame.java 7KB
node.java 1KB
car.java 2KB
Gen_window.java 29KB
Gen_window$1.class 6KB
planning2
side.java 1KB
JDraw.class 2KB
car.class 3KB
Pier_Frame.class 881B
Gen_window.class 7KB
side.class 2KB
g_algorithm2.class 8KB
g_algorithm1.class 8KB
node.class 1KB
g_algorithm3.class 8KB
node.java 691B
car.java 2KB
Gen_window.java 49KB
Gen_window$1.class 7KB
.classpath 298B
共 53 条
- 1
lxchong135
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- windows下NTFS文件系统读取.zip
- windows程序设计课程 相关代码.zip
- Windows via C++图书代码,升级Windows SDK 到10.zip
- matlab基于扩张卡尔曼滤波的磷酸铁锂蓄电池SOC检测,给出了电池模型和算法实现过程.zip
- matlab基于卡尔曼滤波的磷酸铁锂蓄电池SOC检测
- STM8S003F3P6最小系统AD版(包含原理图、PCB源文件)
- smg.uvproj
- nextjs turbo build
- mysql-connector-j-8.0.31.jar
- MATLAB Appdesigner 设计天气预报小程序:全国各城市天气查询系统Weather-capturer-v3
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页