此消息也许对你有所启发,TSP-PSO下载 收藏√ [ 5 4 3 2 1 ] 所属分类: matlab 开发工具: matlab 文件大小: 33 KB 上传时间: 2009-06-13 下载次数: 625 提 供 者: 灞埚媷 详细说明:用混合粒子群算法求解TSP问题,自带GUI界面,共有9中算法,可解决各种TSP问题,效果不错。-Using hybrid particle swarm algorithm to solve TSP problems, bring their own GUI interface, a total of 9 in the algorithm, to resolve the various TSP problems, good results.
成都创新互联公司技术团队10余年来致力于为客户提供成都做网站、网站设计、成都品牌网站建设、成都全网营销、搜索引擎SEO优化等服务。经过多年发展,公司拥有经验丰富的技术团队,先后服务、推广了数千家网站,包括各类中小企业、企事单位、高校等机构单位。
[上传源码成为会员下载此文件] [成为VIP会员下载此文件]文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
TSP-PSO
.......\bayg29.txt
.......\burma14.txt
.......\ch130.txt
.......\ch150.txt
.......\dist.m
.......\eil51.txt
.......\fbnum.m
.......\fitness.asv
.......\fitness.m
.......\gr96.txt
.......\hs_err_pid160.log
.......\hs_err_pid528.log
.......\Oliver30.txt
.......\pr226.txt
.......\pr76.txt
.......\PSO.asv
.......\PSO.fig
.......\PSO.m
ascend - 把自己提升到上一个平台
bind 命令 {命令关键字} - 设置一键命令
clear - 清空控制台
damage - 关闭或者开启伤害 即无敌
descend - 把自己移动到下面一个的平台
destroy [all] - 破坏当前的东西(背包)
defuse [all] - 拆弹(拆除已经点燃了的TNT炸药)
diff - X
difficulty - 设置游戏难度
dropstore - 在身边创建一个储物柜
*drops - 开关物品掉落,关闭的话采矿打怪不掉东西。
dupe [all] - 复制东西
duplicate [all] - 复制手上的东西并丢出来
explode [范围] - 设置一个地方爆炸(在自家慎用)
extinguish [all] - 熄灭周围所有的火
ext [all] - 一样是熄灭火
falldamage - 开关高空落下伤害
firedamage - 开关火的伤害
fly - 飞行模式
*freeze - 冻结怪物
give 物品 [数量] - 给一样物品
goto 名字 - 去一个地方
grow [all] - 让立即小麦成长
h [COMMAND] - 命令列表/帮助
heal - 补指定的血
health - 设置生命值
help [COMMAND] - 命令列表/帮助
home 回到出生点
i 物品代码 [数量] - 刷东西
instantmine - 开关即时采矿(采矿无延迟)
item 物品代码|物品名称 [数量] [费用] 给玩家物品, 如果不指定则是最大的数量
itemname - 显示当前手上的物品名称
itemstack 物品代码 [数量] - 给玩家指定数量的物品
kill 自杀不解释
jump - 瞬移到鼠标所指的地方
killnpc [all] - 杀死周围全部NPC 或者叫 杀了附近所有除自己外的活体生物
*light - 把光永久性关闭
listwaypoints - 列出所有路径点
macro 文件名 {参数} - 允许运行宏
maxstack [物品ID|物品名称|全部] [数量] - 最大的把某物品堆起来
*mobdamage - 怪物不会给你伤害
msg 消息 - 添加一个消息到控制台
music [音量] - 播放音乐
noclip - 穿墙
p - 显示当前坐标
pos 现在玩家的坐标
reach - 玩家到指定地方
return - 传送到之前传送的地方
rem - 删除指定路点
removedrops [all] - 删掉地上物品
*rename - 修改命令名称
replenish [all] - X
repair [all] - 修复当前物品耐久
reset - 恢复默认设置
s 名字 - Same as /set
search 关键词 - 搜索物品名称
set 名字 - 在这世界标记一个路径点
setjump [JUMP|reset] - 设置跳跃的高度 落地伤害和移动 1:1
setspawn [ ] 设置当前位置 X轴 Y轴 Z轴
setspeed [速度|重置] - 设置移动速度
spawn [QTY] - 产生一个生物
spawnstack {NAME|ID|random} - 产生一个合体的怪物NPC
*superheat [all] - Turns items which are furnace-able into their furnaced form
t - Same as /tele
tele - 传送到此坐标
time [set|get|day|night [minute|hour|day [TIME]]] - 设置指定时间得到物品
timeschedule - 设定一段时间段,让世界永远保持在这段时间之间
unbind - 解除一个命令
useportal - 传送到地狱
waterdamage - 开关潜水伤害
我的世界中指令(Command)是通过输入特定文本字符串而激活的高级功能。通过按下T键唤出聊天窗口然后输入对应指令就可以使用了。常见的指令有召唤指令/summon、给予指令/give、传送指令/tp等,本文整理了全部92条指令并汇总,欢迎查看。
我的世界指令代码大全如下:
常用指令
召唤指令/summon
给予指令/give
传送指令/tp
指令汇总
/?
/help的替代命令,提供命令使用帮助。
/ability
赋予或剥夺玩家的能力。
/advancement
添加、移除或查询玩家的进度。
/alwaysday
/daylock的替代命令,锁定或解锁日夜循环。
/attribute
修改或查询玩家和生物的属性。
/ban
将玩家加入封禁列表。
/ban-ip
将IP地址加入封禁列表。
/banlist
显示封禁列表。
/bossbar
修改或查询Boss栏。
/camerashake
启用镜头抖动效果。
/changesetting
更改一个正在运行的服务器的设置。
/clear
从玩家物品栏中删除物品。
/clearspawnpoint
从世界中移除出生点。
/clone
将特定区域的方块复制到另一处。
/connect
/wsserver的替代命令,连接至一个WebSocket服务器。
/damage
对指定实体造成伤害。
/data
允许玩家获取、合并或是移除实体或方块的NBT标签。
/datapack
控制加载的数据包。
/daylock
/alwaysday的替代命令,锁定或解锁日夜循环。
/debug
开始或结束调试会话。
/dedicatedwsserver
尝试连接一个WebSocket服务器。
/defaultgamemode
更改默认的游戏模式。
/deop
撤销玩家的管理员权限。
/dialogue
打开一个玩家的NPC对话。
/difficulty
设置难度等级。
/effect
添加或移除状态效果。
/enchant
附魔玩家的物品。
/event
用于触发一个实体的事件。
/execute
更改执行环境的情况下执行另一条命令。
/experience
/xp的替代命令,给予玩家经验。
/fill
在某个区域填充特定方块。
/fog
用于更改玩家当前的雾设置。
/forceload
强制不断加载区块。
/function
运行一个函数。
/gamemode
更改玩家的游戏模式。
/gamerule
更改或查询游戏规则。
/gametest
用于测试GameTest功能。
/give
给予玩家物品。
/help
/?的替代命令,提供命令使用帮助。
/immutableworld
设置世界的不可变状态。
/item
用于修改方块或实体的物品栏。
/jfr
开始或结束JFR分析。
/kick
将玩家踢出服务器。
/kill
清除实体(玩家、生物、掉落物等)。
/list
列出服务器中的玩家。
/locate
显示最近的给定结构、生物群系或兴趣点的坐标。
/loot
将指定的战利品放入物品栏或世界。
/me
显示一条关于自己的信息。
/mobevent
控制或查询允许运行的生物事件。
/msg
/tell和/w的替代命令,向另一玩家发送私信。
/music
设置玩家是否能控制当前播放的音乐。
/op
授予玩家管理员权限。
/ops
/permission的替代命令,重载并应用权限。
/pardon
从封禁列表中移除玩家封禁项目。
/pardon-ip
从封禁列表中移除IP封禁项目。
/particle
创建粒子。
/perf
记录并保存性能分析数据。
/permission
/ops的替代命令,重载并应用权限。
/place
在满足条件的指定位置放置一个已配置地物、拼图或结构。
/playanimation
运行一次特定动作。
/playsound
播放音效。
/publish
向局域网开放单人游戏世界。
/recipe
给予或剥夺合成配方。
/reload
从硬盘中重新加载战利品表、进度和函数。
/remove
移除智能体。
/replaceitem
替换物品栏中的物品。
/ride
控制一个实体的骑行状态。
/save
准备备份,查询其状态或恢复。
/save-all
保存服务器世界状态到硬盘。
/save-off
关闭服务器自动保存。
/save-on
开启服务器自动保存。
/say
向多个玩家发送消息。
/schedule
安排函数在特定的游戏刻后运行。
/scoreboard
管理记分板的目标、玩家和队伍。
/seed
显示世界种子。
/setblock
将方块替换为其他方块。
/setidletimeout
设置无操作玩家被踢出的延时。
/setmaxplayers
设置可加入游戏的玩家数量上限。
/setworldspawn
设置世界出生点。
/spawnpoint
设置一个玩家的出生地点。
/spectate
使一个处于旁观模式的玩家旁观一个实体。
/spreadplayers
将实体传送到随机位置。
/stop
关闭服务器。
/stopsound
停止音效。
/structure
无需结构方块即可保存和加载结构。
/summon
生成一个实体。
/tag
修改实体的标签。
/team
修改队伍。
/teammsg
/tm的替代命令,指定要发送给队伍的消息。
/teleport
/tp的替代命令,传送实体。
/tell
/msg和/w的替代命令,向另一个玩家发送私信。
/tellraw
向玩家显示JSON消息。
/testfor
统计符合给定条件的实体。
/testforblock
检测某方块是否在某位置。
/testforblocks
检测两个区域中的方块是否相同。
/tickingarea
添加、删除或列出常加载区域。
/time
更改或查询游戏中的世界时间。
/title
管理屏幕上的标题。
/titleraw
使用JSON管理屏幕上的标题。
/tm
/teammsg的替代命令,指定要发送给队伍的消息。
/toggledownfall
切换天气。
/tp
/teleport的替代命令,传送实体。
/trigger
设置一个触发器。
/volumearea
添加、删除或列出功能域。
/w
/tell和/msg的替代命令,向另一玩家发送私信。
/wb
/worldbuilder的替代命令,给予能编辑受限制方块的能力。
/weather
设置天气。
/whitelist
管理服务器白名单。
/worldborder
管理世界边界。
/worldbuilder
/wb的替代命令,给予能编辑受限制方块的能力。
/wsserver
/connect的替代命令,连接至WebSocket服务器。
/xp
/experience的替代命令[仅Java版],增加或减少一个玩家的经验。
引 言
Java3DAPI是用来开发三维图形和开发基于Web的3D应用程序(applet)的编程接口.用于开发三维图形软件的3DAPI(OpenGL、Direct3D)都是基于摄像机模型的思想,即通过调整摄像机的参数来控制场景中的显示对象,而Java3D则提出了一种新的基于视平台的视模型和输入设备模型的技术实现方案,即通过改变视平台的位置、方向来浏览整个虚拟场景.它不仅提供了建造和操作三维几何物体的高层构造函数,而且利用这些构造函数还可以建造复杂程度各异的虚拟场景,这些虚拟场景大到宇宙天体,小到微观粒子.
Java3D是JavaMediaAPIs中的一部分,可广泛地应用于各种平台,而且用Java3DAPI开发的应用程序和基于Web的3D小应用程序(applet),还可以访问整个Java类,且可以与Internet很好地集成,即如果在浏览器中安装了Java3D的浏览插件,在网上也可浏览Java3D所创建的虚拟场景.Java3DAPI还汲取了已有图形APIs的优点,即Java3D的底层图形构造函数不仅综合了底层APIs(Direcrt3D、OpenGL)最好的绘制思想,而且它的高层图形绘制还综合了基于场景图的思想,同时,它又引入了一些通用的图形环境所未考虑的新概念(如3D立体声),这样将有助于提高用户在虚拟场景的沉浸感.本文将着重介绍Java3D针对VR应用所提出的基于视模型和输入设备模型的新思想,在此基础上又讨论了如何利用Java3D来开发VR应用程序及其实现方法,并设计实现了一个应用实例.
1.适于VR应用开发的Java3DAPI众所周知,开发VR应用程序是一件很繁琐的工作,其开发人员必须编写应用程序可能遇到的各种输入和显示设备的接口程序,或者依赖专为VR应用开发而设计的应用程序编程接口(API),且典型的VR应用必须跟踪用户的头部位置和方向,以生成与头部位置方向相一致的虚拟场景图.
另外,还需要先跟踪身体的其它部位(手、臂或腿部),然后通过身体各部位在虚拟场景中的虚拟视点与场景中的对象进行交互,而应用程序也必须具有能够利用跟踪输入设备在视点内放置物体,并标明其在生成的三维图象中的位置和方向的功能.同时,面向VR的应用程序开发接口(API)必须能支持3D图形生成、处理跟踪器的输入,并能将跟踪信息反馈到图形绘制中.
Java3DAPI可自动将头部跟踪器的输入集成到图形生成中,并具有通过访问其它跟踪器信息来控制其它特征的功能,但它是通过一种新的视模型(viewmodel)技术来实现的.该视模型是将用户真实的物质环境与计算机生成的虚拟环境相互独立,并建立它们之间的通信桥梁.该API也明确定义了用来探测Java3D物体六自由度(6DOF)传感器的返回值,并将其应用于显示场景图中.总之,这种新的视模型和输入设备模型可以很方便地将交互式的3D图形应用程序转化为VR应用程序.
Java3D视模型
2.1 新的视模型概念(viewmodel)基于摄像机的视模型是模仿虚拟环境中的摄像机,而不是虚拟环境中人的“替身”,而且它是通过控制摄像机与视点的相关参数来控制所显示的场景,但这种方法,在用户物质环境确定某些视参数的系统中是不合理的,例如在头盔显示器(HMD)系统中,HMD的光学性能就直接确定了应用程序所显示的视域.由于不同的HMD有不同的光学特性,因此如果允许终端用户随意改变光学参数显然是不合理的.这里视参数的值将随终端用户物质环境的不同而不同,而影响视参数的主要因素有显示器大小、显示器的位置(戴在头上,还是放在桌子上)、三维空间中用户的头部位置、头盔显示器的实际显示视域、每英寸的显示象素等.由于Java3D的视模型直接提供了头部跟踪的功能,因而使用户产生了真实存在于虚拟环境中的错觉.
Java3D不仅提出了新的基于视平台的视模型概念,同时将其推广到包括显示设备和6DOF外围输入设备(如头部跟踪器等)的接口支持中,而且新的视模型继承了Java的“writeonce,vieweverywhere”本质.这意味着由Java3D视模型开发的应用程序或applet可广泛地应用于各种显示环境.这种显示环境可以是标准的计算机显示屏、多元显示空间,也可以是头盔显示器.Java3D视模型是通过将虚拟环境和物质环境完全独立的方式来实现上述功能的,且该视模型可将虚拟环境中视平台的位置、方向和大小,与Java3D绘制的与视平台位置、方向相一致的虚拟场景相区分.一般应用程序控制视平台的位置和方向,而绘制着色系统则依据终端用户的物质环境以及用户在物质环境中的位置和方向来确定显示场景.
2.2 视模型的组成
Java3D视模型由虚拟环境和物质环境两部分组成,其中,虚拟环境由ViewPlatform对象来表示,它是虚拟对象存在的空间;而物质环境则由View对象以及和它相关的对象来表示.这里,View对象和它的相关对象就描述了用户所处的显示和操纵输入设备环境.虽然视模型将虚拟环境和物质环境相互独立,但可通过一一对应关系来建立两种世界之间相互通信的桥梁,这样将使得终端用户的行为会影响虚拟环境中的对象,同时虚拟环境中的对象行为也会影响终端用户的视点.
Java3D可通过几个对象来定义视模型参数.这些对象包括View对象及其相关对象、PhysicalBody对象、Canvas3D对象、PhysicalEnvironment对象、Screen3D对象.视模型相关的对象(如图1所示)其作用如下:ViewPlatform用来标志场景图中视点位置的节点.其父节点则指明了视平台在虚拟环境中的位置、方向和大小.View用于指定需要处理场景图的信息.Canvas3D定义了Java3D绘制图象的窗口,它提供了Canvas3D在Screen3D对象中的大小、形状和位置信息.Screen3D用于描述显示屏幕的物理属性.PhysicalBody用于封装那些与物质体相关的参视模型的组成及其相互关系数(如左、右眼的位置等).PhysicalEnvironment用于封装那些与物质体环境相关的参数(如,用于头状物体或头盔式跟踪器的校验信息).
2.3 虚拟环境中的视平台(ViewPlatform)
鉴于视平台定义了一坐标系统,于是虚拟环境中的原始点和参考点就有了一参考坐标系.这里视平台代表与视对象相关的一个点,并充当确定绘制图象的基础.图2显示了包括视平台节点场景图的一部分.由图2可见,视平台的父节点确定了视平台在虚拟环境中的位置和方向.若通过修改与TransformGroup节点相关的Transform3D对象,就可以在虚拟场景中随意移动视平台.虽然虚拟环境中可以有许多不同的视平台,但特定的视对象只能与一个视平台相关联,于是在Canvas3D对象中所绘制的场景均来自于一个视平台的视点.这样应用程序就可通过修改视平台的TransformGroup节点,在虚拟环境中漫游.图2 包括视平台的局部场景图3 Java3D的输入设备模型Java3D除了支持通用的键盘、鼠标输入外,还能给各种不间断的输入设备,如6DOF跟踪设备和操纵杆提供支持.由于不同的跟踪输入设备其工作原理不同,因而计算机与其交互的方式也不同.为了给不同的6DOF输入设备提供支持,Java3D还提供了一个输入设备接口,而且该输入设备接口还定义了一个抽象的输入设备,虽然用其可以实现对一特定设备的驱动,但输入设备接口的实现必须实现接口所定义的所有方法(如设备开、关、读取操作、状态设置及查询等).Java3D的输入设备列表就用这些方法同特定的设备进行交互.
一般Java3D环境中,可能包括许多输入设备,而且这些输入设备不一定是实际的物理设备,也可能是虚拟设备,例如通过软件的方法将鼠标的运动参数转化为6DOF虚拟跟踪球的参数,来模拟虚拟跟踪球的输入.由于所有的输入设备都由许多传感器对象组成,因此每一种输入设备都与一定数量的传感器对象相关,且每一种传感器都与其传感器设备6DOF数据的一个数据源相关.当输入设备驱动的数据改变时,传感器对象的数据也会相应改变,而且传感器对象由读取传感器对象组成.由于缓冲区中记录了各传感器N个读取传感器对象的值,因此可以对传感器数据进行平均,以及对传感器输入值的趋势进行预测等处理,但应用程序的开发并不直接使用输入设备.Java3D是通过一个传感器数组将输入设备抽象化,传感器对象数组是物质环境对象的一个子类,该数组是由与输入设备相关的对象指针组成.Java程序可以直接从传感器数组中获取传感器的值,并将其用到场景图中,或按任意方式对其进行处理。
2.4 用Java3D开发VR应用程序利用
Java3D开发的VR应用程序或者applets程序,可建造一个虚拟场景,并能将一个或多个场景图插入到虚拟场景中,虚拟场景由超结构对象集组成,对象集则包括一个世界对象(Universeobject)、一个或多个场所对象(Localeobjects)和按树状结构排列的由节点物体组成的一个或多个场景图(Scenegraphs).该场景图又称为分枝图(Branchgraph),它包括绘制对象节点、光照节点、行为节点和声音节点等,其中,包含内容节点的分枝图称为内容分枝,包含视平台对象的分枝图称为视分枝,视平台对象用来确定用户的位置和方向.图3表示了具有多分枝图的Java3D场景.图3 应用程序场景图由于这种分枝图只描述了场景所要绘制的对象,并不确定对象的绘制次序,因此图中节点的次序和位置与对象的绘制次序无关,而图中的父节点和子节点的直线路径就唯一确定了子节点的图形范围.由于绘制次序的不确定性,因而使得Java3D能横越场景图的任何次序,且它能从左到右,从顶部到底部穿过场景图;或者从右到左,甚至并行遍历整个场景图.Java3D的分支图为树状结构,且图中的每一个节点只有一个父节点.这样通过辅助的场景图机制就可以实现通用场景图的共享,而且具有连接属性的叶节点可以连接到共享子图.分枝图中的节点分为群节点(groupnode)和叶节点(leafnode)两类,其中,群节点按照粘贴的原理来组织场景图单元。
群节点的层次结构图一般群节点包括:BranchGroup、TransformGroup、Switch、OrderGroup、DecalGroup和ShareGroup节点,其中,BranchGroup是分枝图的根节点;而TransformGroup用来指明所有子节点的位置和方向;Switch则用于实现一个或多个子图的转换;OrderGroup用于使它的子节点按照特定的次序绘制;DecalGroup是OrderGroup的一个子集;ShareGroup跟BranchGroup一样,是一个场景图的根节点.虽然共享图作为Java3D场景图的一部分从不直接出现,但是连接节点可以引用.另外群节点还可以包含各种子节点以及所包含对象的群节点或叶节点.这些子节点用一个关联索引属性来允许对特定的子节点进行操作.如果没有指明特定的顺序群节点,Java3D还可以按照任意指定的顺序来绘制群节点的子节点.虽然叶节点是场景图的抽象类,它没有子节点,但叶节点包括了Java3D的各种信息.叶节点由Shape3D、ViewPlatform、Sound、Light以及用户定义的行为节点等组成,Shape3D和ViewPlatform节点在Java3D的视模型和输入模型中扮演着重要的角色,因为它描述了图形系统的两个重要方面,其中,Shape3D描述了场景中对象的几何形状,而ViewPlatform则标定了用户或其视点在虚拟环境中的方向或位置.
另外,应用程序还可像操纵分枝图中的任意对象一样,来操纵ViewPlatform,而且应用程序还可平移、旋转和缩放ViewPlatform,即通过改变ViewPlatform的位置和方向,ViewPlatform将随同用户的视点一起移动,来浏览整个虚拟环境.虽然ViewPlatform是按照事先规定的路线浏览场景,但不会限制用户视点的移动和向不同方向浏览场景.