求城市最短距离(一)

问题:给定N个城市及其坐标,求遍历N个需市的最短路径,且画出城市及最短路径.
分析:此问题为TSP问题,解决TSP的算法已经有好多种,我选择使用免疫算法中的  克隆选择算法.
第一步:先能实现城市的录入,根据坐标能自动计算距离.
第二步:在Rails能画点,画线,之后画出最短路径.
 
首先实现第一步:
   
 city.rb:
     city要实现自关联才能根据城市的坐标计算两个城市之间的距离.
 通过:through来实现自关联.
    个人理解是这样:
   数据库建表有两张表,一张city,一张distance.
     city的字段:name, location_x, location_y
            distance的字段:city_id, anothercity_id,  result 
       在计算distance时需要用到city表,但是anothercity也需要用到city表,那么此时可以通过建立一张虚表(其实我不知道这样叫合不合适)来实现.如city.rb的has_many :anothercities,:through=>"distances".distance是实际存在的表,而anothercity并不真正存在,只是建立了city表的一个视图而已.
  
     distance.rb
  
 
 在运行过程中出现了这种错误: 
 
1 Runtime Error R6034 下面提示说C环境出现问题。
   解决方法:
    从下面这个地址下载下载Microsoft Visual C++ 2008 Redistributable Package (x86)
装上就OK了。
 
http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=zh-cn
 
 
2 在计算distance结果的时候,self.id写不到数据库中,在表中出现下面的情况:
  city表中有这样的数据:
  
      而在distance表中city_id写不进去,计算的距离却是正确的.在console中写的话,可以将city_id写进去.但是用Distance.create(city_id=>self.id,anothercity.id=>another.id,result=>dis)这句却写不进city_id去.其他两个选项可以正常写入.这个问题没解决.
 
准备看第二步.
参考文章: http://fsjoy.blog.51cto.com/318484/162753
 
 
 

本文出自 “紫冰百合” 博客,谢绝转载!

你可能感兴趣的:(职场,休闲,TSP)