动态规划求最优路径

原创 2018年04月16日 14:48:36

dynamic.py,基于动态规划求最优路径
import matplotlib.pyplot as plt
import pylab as pl
import connmysql
import pandas as pd

sql2 = "SELECT id, distance,duration FROM  trafic"
checklist = connmysql.getdata(sql2)
ids=[]
for i in range(0,len(checklist)):
    ids.append(checklist[i][0])
time_dataframe = pd.DataFrame(columns=['distance','duration'], index=ids)
# print(time_dataframe)
for i in range(0,len(checklist)):
    id=checklist[i][0]
    time_dataframe.at[ids[i],'distance'] = float(checklist[i][1])#distance
    time_dataframe.at[ids[i], 'duration'] = float(checklist[i][2] ) # distance
# id='100001-100002'
# print(time_dataframe.at[id,'distance'])
# print(time_dataframe.at['100001-100002','duration'])
# list=['100002','100003','100004','100005','100006']
        #基于动态规划求得最短路径,计算量会比较小,速度较快
list = ['100002', '100003', '100004', '100005', '100006']
# 基于动态规划求得最短路径,计算量会比较小,速度较快
routelist=[]
route_distance=[]
for j in range(0,len(list)-1):
    print('mm',j)
    print('he1', routelist)
    print('he2', route_distance)
    ids = []
    distances, routes = {}, {}
    for i in range(0, len(list)):
        if len(routelist)==0:#当里面还没有目标在时
            id = list[0] + '-'+list[i]
            if list[i]!=list[0]:
                ids.append(id)
        else:
            if list[i] not in routelist :#计算过的点不再重复计算
                id =  routelist[j]+ '-'+list[i]
                ids.append(id)
    print('he3',ids)
    for k in range(0, len(ids)):
        distances[ids[k]] = time_dataframe.at[ids[k], 'distance']
    print('he4',distances)
    route1 = sorted(distances.items(), key=lambda item: item[1])  # 将最小距离取出来
    route_distance.append(route1[0])
    # routes[route1[0][0]] = route1[0][1]  # key:100002-100006,values: 3929.0,,保存离最后一个点的最优路线
    print('he5',route1)
    a=route1[0][0].split('-')
    if a[0] not in routelist:
        routelist.append(a[0])
    if a[1] not in routelist:
        routelist.append(a[1])
    print('he6', routelist)
print('he',routelist)


ADO.NET快速起步 [特别推荐]

导 读:本文主要介绍了ADO.NET的基本特点,并且使用的一些代码展示了在ADO.NET中如何建立数据库连接,发送查询命令及使用DataReader对象快速浏览数据集方式。 翻译整理:.net技术网(...
  • coolstar
  • coolstar
  • 2001-05-05 14:03:00
  • 810

优化算法——梯度下降法

最近一直在看机器学习的材料,归纳起来就是把一个学习的问题转化为优化的问题,机器学习算法的本质就是如何对问题抽象建模,使一个学习的问题变为一个优化的问题。 优化的算法有很多种,从最基本的梯度下降法到现在...
  • google19890102
  • google19890102
  • 2014-01-10 17:18:51
  • 19924

动态规划——求数字三角形最优解和最优路径

求数字金字塔最优解和最优路径
  • Elenore1997
  • Elenore1997
  • 2017-11-19 19:21:19
  • 354

街区最短路径问题Java实现

描述 一个街区有很多住户,街区的街道只能为东西、南北两种方向。 住户只可以沿着街道行走。 各个街道之间的间隔相等。 用(x,y)来表示住户坐在的街区。 例如(4,20),表示...
  • hongkangwl
  • hongkangwl
  • 2013-10-14 19:07:55
  • 1499

数据结构和算法——用动态规划求解最短路径问题

一、动态规划求解问题的思路    在《算法导论》上,动态规划的求解过程主要分为如下的四步:描述最优解的结构递归定义最优解的值按自底向上的方式计算最优解的值由计算出的结果构造一个最优解    在利用动态...
  • google19890102
  • google19890102
  • 2014-10-03 17:01:56
  • 8084

动态规划算法--最短路径问题

问题:从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径——最短路径。下面 将用Dijkstra算法解决最短路径问题。 最短路径有一个重要特性: 如果由起点A经过P点和H点...
  • xgf415
  • xgf415
  • 2016-09-25 16:03:11
  • 8203

动态规划(算法+理论) ★最短路径

首先介绍动态规划的概念: ①问题是由交叠的自问题构成的,是对给定问题求解的递推关系中的相同类型的*更小子问题的解*dp+回溯 ②从顶至下,避免计算不需要计算的小解(记忆) ③求解最优化问题可以用...
  • u014530702
  • u014530702
  • 2016-05-26 16:30:18
  • 1457

动态规划之求最短路径(java版)

求最短路径众所周知有Dijistra算法、Bellman-ford等,除了这些算法,用动态规划也可以求出最短路径,时间复杂度为O(n^2),跟没有优化的Dijistra算法一样(优化后的Dijistr...
  • fyq201749
  • fyq201749
  • 2017-04-13 19:32:46
  • 1517

viterbi算法:利用动态规划寻找最短路径

原文链接:https://www.jianshu.com/p/218c1e4f0891动态规划是运筹学的一个分支,是求解决策过程最优化的数学方法,通常情况下应用于最优化问题,这类问题一般有很多个可行的...
  • zqxnum1
  • zqxnum1
  • 2017-12-29 11:30:07
  • 207

算法——最优解之动态规划

1. 动态规划的定义动态规划作为一个非常优秀的算法被很多应用称为Optimal Algorithm ,也就是所谓的最优算法。它是一个总能找到最优解的算法,而它主要应用于多阶段决策的问题。但是,它也存...
  • qq_35082030
  • qq_35082030
  • 2017-02-16 20:44:30
  • 1171
收藏助手
不良信息举报
您举报文章:动态规划求最优路径
举报原因:
原因补充:

(最多只允许输入30个字)