设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4886|回复: 6

[求助] 调度优先级

[复制链接]
发表于 2009-5-25 15:05:18 | 显示全部楼层 |阅读模式
5仿真币
对于PlaceBuffer中的工件,对其按交付日期排序,交付日期早的优先进入下一个SingleProc。请问怎么编程实现这个功能?可以的话麻烦给出一个范例程序,谢谢了!
$ X3 C# M$ c, y$ B& E另外Control里有个Pull Control是怎么一回事啊?& R& J9 ~4 L! F2 S! Q5 K' c
还请各位帮忙啊,比较急用,谢谢!

最佳答案

查看完整内容

嗯,可以不用placebuffer,用buffer比较好 在实现的时候,可以在buffer的entrance处设置一个方法,实现零件进入buffer时,对buffer中的零件进行按交付日期进行排队,即 is i : integer; obj : object; ta : table[object,datetime]; do ta.create; for i := 1 to buffer.nummu loop ta[1,i] := buffer.mu(i); ta[2,i] := buffer.mu(i).time; next; ta.sort(2,up); obj := ta[1,1]; obj.move(machine); end; 上面所提及的buffer.mu ...
发表于 2009-5-25 15:05:19 | 显示全部楼层
嗯,可以不用placebuffer,用buffer比较好' J9 M  g, J9 x3 T7 B
在实现的时候,可以在buffer的entrance处设置一个方法,实现零件进入buffer时,对buffer中的零件进行按交付日期进行排队,即
9 n6 H, a( [9 Qis
3 u1 G6 u1 a) s/ J$ {# a& ]i : integer;. r& Y3 p% b( X6 j. G; g2 K6 i$ R
obj : object;. ^1 F' h& m% u& T- l- W, A: }
ta : table[object,datetime];  W$ k+ b& g5 j' i. c' B
do1 U9 J9 }) g! H$ a' U) ^. q
ta.create;- @- D$ Y  h& F& B' z* L7 K& z
for i := 1 to buffer.nummu loop
" n# K' A7 X! J* `: Mta[1,i] := buffer.mu(i);
5 [; D/ e' L% ota[2,i] := buffer.mu(i).time;' w: P; E& _& q7 y) j* x
next;( z' f. O8 G/ t& d# P9 ~
ta.sort(2,up);
  W2 g7 M$ o/ X& V) {6 f' o6 i+ Lobj := ta[1,1];
+ ]9 W! l; B5 lobj.move(machine);+ B9 h1 y% D( R+ y  g' J! U
end;
+ {, v9 S' U" H" m: U, B上面所提及的buffer.mu(i).time就是指buffer中的零件的交付日期,这个需要在零件进入系统之前赋值给零件。
 楼主| 发表于 2009-5-27 14:11:20 | 显示全部楼层
原帖由 liysunny 于 2009-5-27 11:26 发表
- Z! J& y, x3 ^! Q) F嗯,可以不用placebuffer,用buffer比较好
% P8 J9 y  D/ {在实现的时候,可以在buffer的entrance处设置一个方法,实现零件进入buffer时,对buffer中的零件进行按交付日期进行排队,即( d/ G: p- }7 v- R1 O
is # s3 U8 a5 g) W; {! K( `% k- W
i : integer;, L2 R# B$ l7 r, g7 H; K" J
obj : object;
6 N  q1 z- I  i, Z* L5 Rta : table[object,dateti ...

* H+ x( s$ b2 \非常感谢你的回答啊。
0 O- ?2 L/ ?8 @5 O  U; L0 X这个思路好像确实可以,不过我还是碰到了一些问题,结果不对。可以加你QQ请教下吗?我QQ是516014959.
 楼主| 发表于 2009-5-27 17:46:54 | 显示全部楼层
原帖由 liysunny 于 2009-5-27 11:26 发表
6 ^7 R& \  A1 c嗯,可以不用placebuffer,用buffer比较好
& O, s# K. [' ]4 W5 F4 `在实现的时候,可以在buffer的entrance处设置一个方法,实现零件进入buffer时,对buffer中的零件进行按交付日期进行排队,即
" c  D0 ^5 ^. ^" C& eis
$ P1 w+ o( H1 Li : integer;) {  w9 ?0 _" L- p/ {
obj : object;
' |0 p1 p( ?9 k( w$ Kta : table[object,dateti ...

$ U$ {) o; S! ^liysunny已经帮我解决了这个问题,在这里对liysunny表示感谢。# D! |$ u9 X4 \+ Z( Y
请问怎么将仿真币给liysunny
发表于 2009-5-28 10:06:33 | 显示全部楼层

不同看法

原帖由 liysunny 于 2009-5-27 11:26 发表
! R5 n, t9 P! W8 M9 O嗯,可以不用placebuffer,用buffer比较好  v9 ]2 ]0 ^" O) S- a
在实现的时候,可以在buffer的entrance处设置一个方法,实现零件进入buffer时,对buffer中的零件进行按交付日期进行排队,即
9 v5 N" y2 J$ t% V9 q4 b% Vis
. Q7 u2 B6 Y5 _# T4 w: Ci : integer;* v: q* e1 ~5 j- g5 n6 H
obj : object;
6 Q2 ?! b: a3 n. m4 c5 pta : table[object,dateti ...

. ~! Q2 D6 k  S. E
' h+ Y! }! e( r! e  m4 X$ y( T我怎么觉得这个方法逻辑上有问题,不知道楼主的模型的其它边界条件是啥样的。
" [' c: l: \! R+ E7 J6 Q7 ^1)用buffer,就说明前面的工作节奏快,后面的工作节奏慢(有堆积),每当进入一个mu的时候就触发一次 method移动一个mu到machine。如果machine上正有mu在加工呢??- O, y8 v* C% i+ O$ g9 J
2)当模拟快要结束的时候,也就是source不再产生mu了,但buffer还有堆积,buffer里面堆积的mu的优先级和它的位置并没有改变,还是按顺序(maybe FIF0)出来。
5 n7 v5 b1 u+ x# `个人拙见。
 楼主| 发表于 2009-5-28 10:15:14 | 显示全部楼层
原帖由 gc_jiangwust 于 2009-5-28 10:06 发表
+ n/ Y" x2 j: M5 c
7 ^+ P( s! E8 b1 I4 D3 i8 Q" {- P6 Q7 J' F+ E# k" Y
我怎么觉得这个方法逻辑上有问题,不知道楼主的模型的其它边界条件是啥样的。
' k5 s" S% I& O2 ~2 B8 x1)用buffer,就说明前面的工作节奏快,后面的工作节奏慢(有堆积),每当进入一个mu的时候就触发一次 method移动一个mu到machine。如果machine上正 ...

, d" m0 b9 I8 @+ a4 _4 Y是这样的,后面做了一点改动我忘了写上,这个Method是关联到下一个Machine的Exit。即当后续设备上的工件离开后,调用一次程序,对Buffer中的工件重新按优先级排序,再取工件。这样就应该没有了楼上所提出的问题了吧?
2 ]% f1 _" `, I, U6 \0 O( \0 g感谢gc_jiangwust 所提出的看法~
发表于 2009-6-26 09:09:47 | 显示全部楼层
嗯,可以不用placebuffer,用buffer比较好  I( p; |6 D. ]
: M4 Y' k  B( W7 ^最大的系统仿真与系统优化交流社区在实现的时候,可以在buffer的entrance处设置一个方法,实现零件进入buffer时,对buffer中的零件进行按交付日期进行排队,即& g# O" ~# T/ C
# u: S6 {' U6 S" T3 s) Twww.simulway.comis 仿真,仿真论坛,仿真软件,物流仿真,供应链仿真,生产仿真,系统仿真,流程仿真,arena,anylogic,automod,extend,em-plant,flexsim,promodel,witness,乐龙,swarm,netlogo,repast- _  S8 P! A6 X  Z; `2 R  c8 [2 W' r1 j$ V) N! O
i : integer;最大的系统仿真与系统优化交流社区  `& ^! b3 @+ _% l0 h0 C2 Q
7 \: V3 B( d- s0 x* o2 |obj : object;
1 y4 }7 W, W/ h, ^5 o) M4 a) r/ [4 P; B/ d: b; K/ b0 Q) y最大的系统仿真与系统优化交流社区ta : table[object,datetime];1 j# p' u* E3 @- r* m9 Y* _
) k; U+ @8 u3 {5 G4 F  l( U仿真,仿真论坛,仿真软件,物流仿真,供应链仿真,生产仿真,系统仿真,流程仿真,arena,anylogic,automod,extend,em-plant,flexsim,promodel,witness,乐龙,swarm,netlogo,repastdo
! Y( a# T- Q& C& J. q  B5 c. Q1 A( r0 @+ o. h+ n7 q. N( e8 [ta.create;最大的系统仿真与系统优化交流社区2 ?/ j0 W% ~: B3 j8 W% m
; c) W3 R4 l- f% P6 J6 ~% ffor i := 1 to buffer.nummu loopwww.simulway.com: o1 s4 }4 t$ A/ Y- F; T
' H6 Z. V. k5 K. D* }ta[1,i] := buffer.mu(i);仿真,仿真论坛,仿真软件,物流仿真,供应链仿真,生产仿真,系统仿真,流程仿真,arena,anylogic,automod,extend,em-plant,flexsim,promodel,witness,乐龙,swarm,netlogo,repast0 c; I! k7 f1 x+ F
! G( O- u- V2 v8 Y4 Pta[2,i] := buffer.mu(i).time;( _9 w+ ~% S9 R  E0 c
/ e9 \& n5 w6 j仿真,仿真论坛,仿真软件,物流仿真,供应链仿真,生产仿真,系统仿真,流程仿真,arena,anylogic,automod,extend,em-plant,flexsim,promodel,witness,乐龙,swarm,netlogo,repastnext;
  y+ a' b: B0 O8 n* ~4 i) V, P, P/ H仿真,仿真论坛,仿真软件,物流仿真,供应链仿真,生产仿真,系统仿真,流程仿真,arena,anylogic,automod,extend,em-plant,flexsim,promodel,witness,乐龙,swarm,netlogo,repastta.sort(2,up);/ j* v5 ^! h2 _. q3 K/ p, X
# H. R) D* v6 V1 i' ^6 xobj := ta[1,1];
; ~. s  E' R  S0 f2 Z! Z: m! ^: C: k6 N# U1 E: t% r5 p/ \0 b最大的系统仿真与系统优化交流社区obj.move(machine);) w+ Y* A3 B2 u5 A
4 v" r8 O3 l0 g$ s" ]- lwww.simulway.comend;www.simulway.com: D- u% L* ]# t( p* G) J
) h' v/ }7 K/ A, S. v2 Y上面所提及的buffer.mu(i).time就是指buffer中的零件的交付日期,这个需要在零件进入系统之前赋值给零件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真   

GMT+8, 2024-6-2 12:19 , Processed in 0.014064 second(s), 13 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表