回 帖 发 新 帖 刷新版面

主题:VBA新手跪求关于船舶交会程序

请各位帮帮忙 感激不尽

附件是程序要求 求补给船补给其他所有船只一次 时间最短的方案 

关于CSV数据的说明:

第一行是补给船数据,依次为:初始x轴坐标,初始y轴坐标,补给船速度

第二行开始是被补给船数据,依次为:被补给船名称,初始x轴坐标,初始y轴坐标,x轴方向速度,y轴方向速度

数据间是逗号相隔


GOOGLE直接翻译的 可能不是很准确 

船舶交会问题 


1引言 


在船会合问题(SRP)的,一个支持船舶必须访问N个其他船舶(专责小组),访问每艘只出现一次。旅游船的支持以恒定速度和变化方向需要的时间可以忽略不计。在每一个工作队恒定速度移动船。我们的目标是尽量减少总时间采取访问的所有工作队的船舶(即采取的船进入决赛的时间)。 
与2本课程涉及维,欧几里德的SRP的版本。一个问题的立场是明确的定义开始(的x,y)坐标的所有船只(包括支援舰),该支援舰速度,速度(即速度和方向,在工作队的船舶) 。 
请注意,如果船舶的支持比在工作队的所有其他船只快,那么桑兰西肯定有一个有限的解决方案。如果在另一方面,一个或多个工作队的船只快于支援舰那么它很可能(但不是一定)宣布,桑兰西也没有解决问题。 


2贪婪启发式的桑兰西 


如果支持船舶快于其他所有工作队的船只,然后寻找解决SRP的简单的方法是使用一个贪婪启发式。这保证了解决方案,但它不太可能是最佳选择。 
作为贪婪启发式工程如下: 


1。中的每个工作队未访问过的船舶,计算多久会由支援舰的当前位置支援舰拦截。 

2。选择船舶,我说,它可以在最短的时间内达成。 

3。访问船舶i和更新,在工作队的船只的立场。 

4。如果未访问过的船舶仍然存在,回到步骤1。 


请注意,为了使启发式确定性(即保证每一个相同的结果,是对同一问题的实例运行时),我们必须指定关系是如何打破的步骤 
2。最常用的抢七是选择最小的指数(例如船舶,如船舶5和7,可以达到在相同的时间内,船舶5应优先选择船7)。 
见的技术文件(可通过黑板)就如何计算拦截时间的详情。 


3您的任务 


您必须执行VBA项目为二维,欧几里德在SRP的贪婪启发式 
Excel中。你的程序必须有一个单一的用户界面,使用户可以: 
  



•读取数据从一个逗号分隔的(CSV格式)。 

•表扬在与数据的任何问题。 

•运行贪婪启发式。 

•输出结果。 


详细说明载于技术文件。 


3.1让你开始 

您可能会发现在Excel工作簿ShipRendezvous_Starter.xls一个有用的起点。我们都可以找到的“课程作业组”的黑板网站。请注意,它需要延长为短语“搜索要做”在VBA项目的出发点进一步开展工作。您 
欢迎尽可能多的使用,或者作为ShipRendezvous_Starter.xls少,你在最后项目的愿望。 

此外,两个数据文件中可以找到的“课程作业组”的黑板网站。您可能会发现这些代码的初步测试有用的,但你也大力鼓励创建自己的测试程序中的数据验证和测试你的算法的结果,确保他们获得独立的匹配(如手工解决方案) 。 


回复列表 (共2个回复)

沙发

自己顶

板凳

拜托大家了

我来回复

您尚未登录,请登录后再回复。点此登录或注册