登录发现更多内容
首页
资讯
分类
目录
索引
酷站
发帖
用户名
Email
自动登录
找回密码
密码
登录
立即注册
立即登录
立即注册
其他登录
QQ
微信
门户
Portal
论坛
BBS
问AI
提问
搜索
搜索
热搜:
活动
交友
discuz
本版
文章
帖子
用户
帖子
设置
我的收藏
退出
1
0
0
首页
技术交流2
›
随手翻:任务执行器分配任务给行进距离最短的任务执行器 ...
返回列表
随手翻:任务执行器分配任务给行进距离最短的任务执行器
[ 复制链接 ]
zorsite
技术交流2
1
1
2017-4-24 01:03:36
任务分配器的pass to选项,返回的是一个端口值。将任务分配给与该中间端口连接的任务执行器。
以下为flexsim17.1自带,寻找行进距离最短的任务分配器:
[code]treenode tasksequence = param(1);
Object current = ownerobject(c);
/**找到距离最近的任务执行器*/
/**如果任务执行器在网络路径上,则计算网络路径的距离,否则计算实体中心点间距。*/
double curmin = GLOBAL_UNREACHABLE;
int minindex = 0;
treenode destination = NULL;
for (int taskrank = 1; taskrank <= gettotalnroftasks(tasksequence) && destination == NULL; taskrank++)
{ // 找到第一个行进任务,并获取行进目的地。&& destination == NULL确保一旦找到行进目的地就退出for循环。
if (gettasktype(tasksequence,taskrank) == TASKTYPE_TRAVEL)
destination = gettaskinvolved(tasksequence,taskrank,1);
}
if (destination==NULL) // 如果没有行进任务,把任务传递给第一个可用任务执行器。
return 0;
//如果有行进目的地,则遍历所有任务执行器,寻找距离最近的那个。
for (int index = 1; index <= current.outObjects.length; index++)
{
treenode curobj = current.outObjects[index];
if (curobj && isclasstype(curobj, CLASSTYPE_TASKEXECUTER))
//中间端口有连接实体,并且该实体为任务执行器
{
double curdist = distancetotravel(curobj, destination);
//计算任务执行器和目的地之间的距离
if (curdist != GLOBAL_UNREACHABLE && (curmin == GLOBAL_UNREACHABLE || curmin > curdist))
{//如果计算出来的距离小于curmin,则更新curmin,把当前距离作为最小距离。
curmin = curdist;
minindex = index;
}
}
}
return minindex;
//返回minindex,距离最近的那个任务执行器在任务分配器上的中间端口号。[/code]
随手翻,不保证正确性、可读性。
点赞
0
收藏
0
────
0
人觉得很赞
────
回复
举报
1 回复
eb_sun
回复
举报
2017-4-24 11:08:09
谢谢大神的分享:victory:
回复
评论
举报
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
立即登录
点评
高级模式
本版积分规则
回帖后跳转到最后一页
返回
技术交流2
提问题
写回答
写文章
草稿箱
登录开启您的创作之旅
快速登录,立即开启您的创作之旅~
登录
热门问答
查看更多
1
Flexsim初级建模工程师水平标准
Flexsim初级建模工程师水平标准
60
234
2
厂区生产线布局优化案例!新做的!
厂区生产线布局优化案例!新做的!
39
224
3
流水作业线的仿真
流水作业线的仿真
36
83
4
无意中找到的资料,非常适合于初学者
无意中找到的资料,非常适合于初学者
33
229
5
flexsim中文教程,pdf文档已整理-重新整理
flexsim中文教程,pdf文档已整理-重新整理
30
114
博主榜
admin
+ 5
首页
分类
目录
索引
我的