• 大小: 9KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: 路径  

资源简介

问题: 从某物流中心用多台配送车辆向多个客户送货,每个客户的位置和货物需求量一定,每台配送车辆的载重量一定,其一次配送的最大行驶距离一定,要求合理安排车辆配送路线,使目标函数得到优化,并满足以下条件:

资源截图

代码片段和文件信息

# -*- coding: UTF-8 -*-

import input_data
import tensorflow as tf

mnist = input_data.read_data_sets(“MNIST_data/“ one_hot=True)  #读取图片数据集
sess = tf.InteractiveSession()

#---------------------------重要函数声明-------------------------------------
#权重变量
def weight_variable(shape):
    #输出正态分布的随机值,标准差为0.1,默认最大为1,最小为-1,均值为0
    inital = tf.truncated_normal(shape stddev=0.1)
    return tf.Variable(inital)

#偏移变量
def bias_veriable(shape):
    #创建一个结构为shape的矩阵,或者说数组,声明其行和列,初始化所有值为0.1
    inital = tf.constant(0.1 shape=shape)
    return tf.Variable(inital)

#卷积函数,大概意思是根据步长一步一步去遍历输入的值,行成特征向量输出到下一层
def conv2d(x W):
    #卷积遍历各个方向步数为1,SAME表示边缘自动补0而不是丢弃,遍历相乘
    #strides:表示步长:当输入的默认格式为:“NHWC”,
    #则 strides = [batch  in_height  in_width in_channels]。
    #其中 batch 和 in_channels 要求一定为1,即只能在一个样本的一个通道上的特征图上进行移动,
    #in_height  in_width表示卷积核在特征图的高度和宽度上移动的布长
    return tf.nn.conv2d(x W strides=[1 1 1 1] padding=‘SAME‘)

#池化函数:意思是把输入的高宽变小,比如4*4 变成2* 2,有两种方式,一种是取每一个小块的最大值,另外一种是取每一个小块的平均值
def max_pool_2_2(x):
    #池化卷积结果(conv2d)池化层的kernal采用和2*2的大小,步数也为2,周围填0,取最大值,数量量缩小
    return tf.nn.max_pool(x ksize=[1 2 2 1] strides=[1 2 2 1] padding=‘SAME‘)

#--------------------------定义输入输出结构---------------------------------
#声明一个占位符,None表示输入的图片数量不定,28*28的图片分辨率
xs = tf.placeholder(tf.float32 [None 784])
#输出类别总共是0-9个类别,对应分类的输出结果
ys = tf.placeholder(tf.float32 [None 10])

#x_image又把xs reshape成 28*28*1的形状,因为是灰色图片,所以通道是1,作为训练时的input,-1代表图片数量不定
x_image = tf.reshape(xs [-1 28 28 1])

#-------------------------搭建网络,定义算法公式,也就是前进时候具体应该怎么计算----------

#第一层卷积操作
#第一次卷积核的大小即patch第三个参数是图像通道数,第四个参数是卷积核数目,代表会出现多少个卷积特征图像
W_conv1 = weight_variable([5 5 1 32])
b_conv1 = bias_veriable([32]) #偏移b的数量应该和w一致
#图片乘以卷积核加上偏移量,卷积结果为28 * 28 * 32
#relu函数表示一个激活函数,在大于0时激活,激活到第一象限,其他的收敛于一个接近于0的小数
h_conv1 = tf.nn.relu(conv2d(x_image W_conv1) + b_conv1)

#结果池化,变成14*14*32的池化结果作为下一层的输入
h_pool1 = max_pool_2_2(h_conv1)

#第二次卷积
#32个通道卷积出64个特征
w_conv2 = weight_variable([5 5 32 64])
#64个偏移数据
b_conv2 = bias_veriable([64])
#注意上一层池化的结果作为输入
h_conv2 = tf.nn.relu(conv2d(h_pool1 w_conv2) + b_conv2)
#池化结果
h_pool2 = max_pool_2_2(h_conv2)
#原始图像尺寸为28*28第一轮图像缩小为14*14共32张,第二轮继续缩小为7*7共64张

#第三层全连接操作
#二维张量,第一个参数7*7*64的patch,第二个参数代表卷积有1024个
W_fc1 = weight_variable([7*7*64 1024])
#1024个偏执量
b_fc1 = bias_veriable([1024])
#将第二层的池化结果reshape成一行,有7*7*64个数据[n 7 7 64]->[n 7*7*64]
h_pool2_flat = tf.reshape(h_pool2 [-1 7*7*64])
#卷积操作结果是1*1*1024,这里只有一行,所以直接采用矩阵相乘,而不是遍历相乘第一个参数是行向量,第二个是列向量
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat W_fc1) + b_fc1)

#drop操作,为了减少过度拟合,降低上一层某些输入的权值,防止测评曲线出现震荡
#使用占位符,由dropout自动确定scale
keep_prob = tf.placeholder(tf.float32)
#对卷积结果进行drop操作
h_fc1_drop = tf.nn.dropout(h_fc1 keep_prob)

#第四层输出操作
#二维张量,1*1024矩阵卷积,对应我们定义的10个输出长度ys
W_fc2 = weight_variable([1024 10])
tf.histogram_summary(‘outputlayer/W‘ W_fc2)
b_fc2 = bias_veriable([10])
tf.histogram_summary(‘outputlayer/b‘ b_fc2)

#结果层用逻辑回归softmax或者sigmoid
y_conv = tf.nn.softmax(tf.matmul(h_fc1_drop W_fc2) + b_fc2)

#定义代价函

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-06-08 01:43  GeneticAlgorithm-master\
     文件        6937  2017-06-08 01:43  GeneticAlgorithm-master\CNN.py
     文件       14416  2017-06-08 01:43  GeneticAlgorithm-master\GA.py
     文件         631  2017-06-08 01:43  GeneticAlgorithm-master\README.md
     文件         463  2019-03-24 17:34  说明.txt

评论

共有 条评论