全球FlexSim系统仿真中文论坛

标题: Flexsim邏輯問題 [打印本页]

作者: r0805995    时间: 2015-4-19 16:56
标题: Flexsim邏輯問題
目前有5個訂單,於Source隨機產生priority數值
1 }: J+ g- ?0 ?0 ]. `3 z2 b- G+ oOrder1     5.32    200個Item, I- T, n# g9 S  [2 Q. g
Order2     1.45    300個Item
( I4 h. r$ B! C, ?+ L0 W/ s5 y( gOrder3     3.83    300個Item
/ g8 [. C% w1 ^Order4     2.51    200個Item  z( t+ m0 [  L! Z' k% S. n; @  _# x
Order5     3.04    100個Item/ N: D! P4 O, K! j$ ~- h$ m) k

( G; k+ r0 u) H8 N% ?/ W, }Source 產生產品會到Input buffer, " Z# n" z* y) a5 `
如何在Input buffer排優先權,使最高優先權最先進入產線加工??
作者: 慧娴亚伦    时间: 2015-4-19 22:01
本帖最后由 慧娴亚伦 于 2015-4-19 22:02 编辑 % T+ A# k7 a3 k/ M" y

! p! @8 m. Z8 {input buffer的下游设置拉入选项,里面进行优先级的对比,得到最高优先级拉入。
作者: r0805995    时间: 2015-4-20 13:51
抱歉慧嫻,能請您再說詳細一點嗎?3 q" e6 b. @' M0 ~( M. N5 v3 C" g0 f' W
* d' O1 u% E; r( l; t6 v/ i
我的想法是這樣,在Qeueu(input buffer) 產品進來就先判斷標籤priority數值,所以在Queue進下游前就已經排好優先權,這是我比較想要的做法。
作者: 慧娴亚伦    时间: 2015-4-20 20:05
不知道r先生有没有其他编程语言的基础,其实想在上游排序也可以使用最简单的冒泡排序来设定它的rank值,我说的办法是在下游的拉入策略里面进行判断,找到标签priority最大的值进行拉入。
作者: r0805995    时间: 2015-4-20 21:52
本帖最后由 r0805995 于 2015-4-20 22:30 编辑
  G/ W: g/ r" {, U' `
2 {2 z0 j$ i" t2 y 4# 慧娴亚伦 ; K; p0 F3 h  o; b

; V+ k+ `# B/ A) m# \  v慧嫻您好,經您提醒氣泡排序之方法," N0 c8 H$ o7 O4 P( [4 W* H
雖然我有程式底子,在C語言我可以簡單實現氣泡排序,但在Flexsim...我還是必須想一下。
5 c1 N7 B$ u0 Q2 d' B1 B7 F8 L. S+ R7 \0 v+ L
2 u: R( L) f* @
於下游用拉入之方法聽起來似乎不錯,但其內部判斷似乎也要用氣泡排序,否則其如何一次得知所有Item之priority標籤值??
作者: 慧娴亚伦    时间: 2015-4-20 23:21
下游拉入的话,可以穷举一下,毕竟每次都只要决定一个拉入的值即可。
作者: shadowwind    时间: 2015-4-22 08:31
陈老师讲解的好详细啊~~~
作者: r0805995    时间: 2015-4-22 17:14
6# 慧娴亚伦
  L: p. V. k$ U6 `: f; e
  }8 a+ R: ^' K+ T; j感謝慧嫻(陳老師),目前仿氣泡排序成功排列優先權,但問題是,不管邏輯寫在Send To Port還是OnExit,第一個訂單的第一個產品都無法被判斷,該如何修改??0 F  {) P* _6 M* b' v8 I  J
! p( Y2 N2 p4 C( p" m
做法:' X- S7 l0 `& X+ `+ }* n
Source於Creation時,創造隨機1~6的優先序之值並存入Order_Priority_Table,Exit時把值丟給對應的訂單產品,並於Input buffer之Send To Port排優先權。
$ a$ m- f  q$ J  y/ k
9 C) X( t8 T7 |7 c$ z& `- oVersion: 7.1
作者: 慧娴亚伦    时间: 2015-4-22 19:15
第一个产品是有这个问题,我的建议是,一开始先关闭这个暂存区的输出,当第一次需要释放之前再打开(当然肯定要在打开前完成排序)9 [( `6 s! `3 T+ Z1 w
希望对您有帮助,另外在网络上我还是习惯大家以网名称呼
作者: r0805995    时间: 2015-4-23 18:32
謝謝慧嫻,待我試試再與您討論!
作者: r0805995    时间: 2015-4-24 18:14
9# 慧娴亚伦
. N3 E3 c' t7 n% l+ p! b
/ _) W9 I3 {  v' R& Z; {慧嫻,您提供的方法似乎不適用於此模型,因為模型內全程只使用centerport並搭配任務序列指派,我嘗試將op1加入於Input buffer之output,並於Input buffer之OnEntry時closeout(current);並無效果,有無可能一個物件不能同時加入Centerport與outputport。
% E7 \1 V0 I" W% C$ C8 i* m1 I# u( d3 \) Q( S6 c8 b
另我有一想法是:在Input buffer之OnEntry判斷是否是最後一個訂單的最後一產品,是的話傳送訊息給自己,並在OnMessage進行排序後接續任務序列。
9 f  U$ X- Z) z9 t- F
2 P. c7 [8 o! T( h問題: 2 a4 P7 G* K3 R7 B
1.該如何在OnEntry判斷是否是最後一訂單的最後一產品?? (不以寫死程式來判斷,if(Sourceoutput     ==100))& a2 [& g9 d7 O; w- \$ O
% D  T: T! C0 l
如果可以解問題1,應該就可以實現先於Input buffer排優先序後接續任務序列
作者: 慧娴亚伦    时间: 2015-4-24 19:58
r先生,这个问题1我觉得可以这么来判断,给同一批订单加上一个表示批量的标签,在需要判断的实体上面再添加一个标签来计数,在OnEntry中用inc()函数来累积统计进入的产品数量,如何符合他身上的标签值(即批量值),那么该产品即为最后一个产品,同时不要忘记将统计的标签清零。
* C- Z+ b0 x" p3 N4 r同样适用用于最后一个订单的最后一个产品的判断。
作者: r0805995    时间: 2015-4-24 21:01
本帖最后由 r0805995 于 2015-4-24 21:50 编辑
4 E% ?) A9 z: \$ u+ s# T( U1 N9 U7 J5 K
慧嫻 我重整你說的邏輯
1 S0 j+ _- A: @9 s+ `# o在Source訂單加上一欄表示批量的標籤(Quantity),在需要判斷的實體上面(Item)添加一個標籤計數(QuantityNo),在Input buffer之OnEntry用inc()函數來累積統計進入的產品數量,當符合它(產品)身上的批量值,該產品即為最後一個產品,然後將OnEntry統計數量的標籤值歸0+ m+ F  x  `/ W/ P9 \/ l8 A

6 U5 C+ [) G8 y$ P( K# f- ~# a是這樣嗎??
7 c$ I$ c% Z) ~) ]' M6 h9 N! N, k. W  O* K" @
, B1 d6 B) h+ L5 E. k* d
我有點不知道要判斷什麼條件,我附上模型能幫我加入嗎??
8 R9 }/ F% k, C6 q. a( O. {5 z& I. {
在Source訂單已經有新增標籤(Quantity)來記錄數量,產品標籤也有判斷是該訂單的第幾個產品(QuantityNo)
作者: 慧娴亚伦    时间: 2015-4-26 21:25
不好意思,昨天比较忙没看到。2 y) `0 y' r5 O) `3 Q! G3 u
r先生您的原模型太多内容了。。。我不知道如何下手,复制了一下您的发生器,新建了一个模型(版本为7.1.4),修改了一下不同批次达到时间,添加了几个标签来作为标示,下游的传送带只有当符合条件(即是一个批次里面的最后一个产品)才会拉入(为了更明确看出,我把该item变为白色)希望对您有帮助。
# R4 }) S' {4 |% O3 b* X! a可能我的表述问题,我觉得r先生您有时候把一些简单的事情想得过于复杂了。
" }; t; P" D" `, a* a$ `4 Q. S8 o
PS.您的发生器太大了,第一次复制吓了我一跳。。。




欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) Powered by Discuz! X3.3