资源

旅行推销员游览美国首都(one07)

/**************************************************************************//*                                                                        *//*S A S S A M P L E L I B R A R Y*//*                                                                        *//*姓名:onete07*//*标题:美国首都旅游推销员之旅(onete07)*//*产品:或*//*系统:所有*//*关键字:或*//*项目:GMAP、GPROJECT、OPTNET、PRINT、SQL*//*数据:*//*                                                                        *//*支持:更新:*//*参考:*//*MISC:OPTNET文档中的示例7*//**//**************************************************************************//*获取州首府城市列表(带有lat和long)*/proc-sql;将表格“城市”创建为选择唯一的州代码作为州、市、纬度、经度来自maps.uscity其中大写=“Y”,州代码不在(“AK”“PR”“HI”)中;退出;/*创建所有可能的城市对列表*/proc-sql;将表CitiesDist创建为选择a.city表示city1,a.lat表示lat1,a.long表示long1,b.city表示city2,b.lat表示lat2,b.long表示long2,geodist(lat1,long1,lat2,long2,'DM')作为距离来自城市a,城市b其中a.city<b.city;退出;/*使用OPTNET查找最佳路线*/程序optnetloglevel=中等data_links=城市分布out_nodes=TSPTourNodes;数据链接变量来自=城市1至=城市2重量=距离;茶匙out=TSPTourLinks;运行;%放置&_ROPTNET_;%放置&_ROPTNET_TSP_;/*合并经纬度*/proc-sql;/*合并在过去&渴望城市1*/将表TSPTourLinksAnno1创建为选择唯一的TSPTourLinks.*、cities.lat作为lat1、cities.long作为long1来自TSPTourLinks左加入城市关于TSPTourLinks.city1=cities.city;/*合并在过去&渴望城市2*/将表TSPTourLinksAnno2创建为选择唯一的TSPTourLinksAnno1.*,cities.lat作为lat2,cities.long作为long2来自TSPTourLinksAnno1的左加入城市在TSPTourLinksAnno1.city2=cities.city上;退出;/*创建带注释的数据集以在地图上绘制路径(将纬度和经度转换为弧度,因为贴图是以弧度为单位的)*/数据anno_path;设置TSPTourLinksAnno2;长度函数颜色$8;xsys='2';ysys='2';hsys='3';当='a'时;anno_flag=1;函数=“移动”;x=atan(1)/45*long1;y=atan(1)/45*lat1;产出;function='draw';color=“蓝色”;尺寸=0.8;x=atan(1)/45*long2;y=atan(1)/45*lat2;产出;运行;/*获取仅包含连续48个州的地图*/数据状态;set maps.states(其中=(fipstate(state)不在(“HI”“AK”“PR”)中);运行;数据组合;设置状态anno_path;运行;/*投影地图并对数据进行注释*/proc gproject data=组合输出=组合dupok;身份状态;运行;数据状态anno_path;集合组合;如果anno_flag=1,则输出anno_path;else输出状态;运行;/*获取端点位置列表*/proc-sql;创建表anno_dots为从anno_path中选择唯一的x、y;退出;/*创建最终注释数据集*/数据anno_dots;设置anno_dots;长度函数颜色$8;xsys='2';ysys='2';当=‘a’时;hsys='3';函数='pie';旋转=360;尺寸=0.8;style='psolid';color=“红色”;产出;style=“空”;color=“黑色”;产出;运行;/*使用GMAP生成地图*/pattern1 v=s c=cxccfcc repeat=100;proc-gmap data=states map=states anno=anno_path all;身份状态;合唱状态/级别=1 nolegend coutline=黑色anno=anno_dots des=''name=“tsp”;运行;/*创建定向最优巡演*/数据TSPTourLinksDirected(drop=next);设置TSPTourLinks;保留下一个;如果N_ne 1和city-ne,则接下来执行;city2=城市1;city1=下一个;结束;next=城市2;运行;proc print data=TSPTourLinksDirected noobs标签;格式距离逗号10.2;var city1 city2距离;总距离;运行;