全球FlexSim系统仿真中文论坛

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

作者: r0805995    时间: 2015-4-19 16:56
标题: Flexsim邏輯問題
目前有5個訂單,於Source隨機產生priority數值 2 l' Z$ H& x9 u& B1 d
Order1     5.32    200個Item2 I9 C' f7 X, r
Order2     1.45    300個Item
& C0 q! ]7 e5 g" p: p6 I5 u9 R+ dOrder3     3.83    300個Item& Q9 S& b% @) u7 ^! {
Order4     2.51    200個Item
! ]1 a& D( f' n7 R) f; x9 D2 g# QOrder5     3.04    100個Item" U! X# R9 s5 \

7 v! x. I- L  }( iSource 產生產品會到Input buffer, 7 Z$ o/ ~, R; h9 g4 w2 t- `9 e* f& ?( W
如何在Input buffer排優先權,使最高優先權最先進入產線加工??
作者: 慧娴亚伦    时间: 2015-4-19 22:01
本帖最后由 慧娴亚伦 于 2015-4-19 22:02 编辑
$ a- M6 j8 }: r& _
$ k. U* k! v. i1 @input buffer的下游设置拉入选项,里面进行优先级的对比,得到最高优先级拉入。
作者: r0805995    时间: 2015-4-20 13:51
抱歉慧嫻,能請您再說詳細一點嗎?+ }' Q4 [9 \. J8 c
& b3 c5 Y8 g- V* ]" e+ [7 X
我的想法是這樣,在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 编辑
. s8 N2 V8 Z  S0 H9 E  d" l4 ]
( H( P3 Q7 s& M2 t, u3 l1 i 4# 慧娴亚伦 $ l' ^( E/ y  o$ U, q

3 Z1 L. j3 _8 @慧嫻您好,經您提醒氣泡排序之方法,
/ r3 _; n7 w/ G雖然我有程式底子,在C語言我可以簡單實現氣泡排序,但在Flexsim...我還是必須想一下。
8 \5 t# U8 w7 C
* E" n: h6 I: s; ]- U' E8 s2 ?5 r* v$ M% t
於下游用拉入之方法聽起來似乎不錯,但其內部判斷似乎也要用氣泡排序,否則其如何一次得知所有Item之priority標籤值??
作者: 慧娴亚伦    时间: 2015-4-20 23:21
下游拉入的话,可以穷举一下,毕竟每次都只要决定一个拉入的值即可。
作者: shadowwind    时间: 2015-4-22 08:31
陈老师讲解的好详细啊~~~
作者: r0805995    时间: 2015-4-22 17:14
6# 慧娴亚伦 ) |! c( s* P. K( I) L4 P! z! d

- ]# k! }# t  a5 S# c, {3 u/ G感謝慧嫻(陳老師),目前仿氣泡排序成功排列優先權,但問題是,不管邏輯寫在Send To Port還是OnExit,第一個訂單的第一個產品都無法被判斷,該如何修改??
4 L2 h/ ~8 I- D. \+ E2 k) M+ l& z4 c" @) q% ?& R1 `9 }0 Y" b
做法:
; }6 C, z% N. F3 K  qSource於Creation時,創造隨機1~6的優先序之值並存入Order_Priority_Table,Exit時把值丟給對應的訂單產品,並於Input buffer之Send To Port排優先權。
! l% e. g" K1 Z! Y4 w0 \5 s: c
8 C. z# B& ~$ K: F9 `$ Y& }" O4 y  _Version: 7.1
作者: 慧娴亚伦    时间: 2015-4-22 19:15
第一个产品是有这个问题,我的建议是,一开始先关闭这个暂存区的输出,当第一次需要释放之前再打开(当然肯定要在打开前完成排序)) `/ [7 s) s6 c0 F6 a% `% {; i0 H
希望对您有帮助,另外在网络上我还是习惯大家以网名称呼
作者: r0805995    时间: 2015-4-23 18:32
謝謝慧嫻,待我試試再與您討論!
作者: r0805995    时间: 2015-4-24 18:14
9# 慧娴亚伦 ! p% y6 q& ], D/ @9 F3 K
: z5 O/ P/ O6 m' N0 C
慧嫻,您提供的方法似乎不適用於此模型,因為模型內全程只使用centerport並搭配任務序列指派,我嘗試將op1加入於Input buffer之output,並於Input buffer之OnEntry時closeout(current);並無效果,有無可能一個物件不能同時加入Centerport與outputport。& V8 E) N! H. D) J' c7 z; T! u
: C( P! N- w- O1 T: w0 V
另我有一想法是:在Input buffer之OnEntry判斷是否是最後一個訂單的最後一產品,是的話傳送訊息給自己,並在OnMessage進行排序後接續任務序列。' s2 h2 Z" m/ q, W  H+ ]
; f: a9 h8 g0 y3 W# q! z
問題: ! x/ v. a& ]8 ]3 E$ c! l
1.該如何在OnEntry判斷是否是最後一訂單的最後一產品?? (不以寫死程式來判斷,if(Sourceoutput     ==100))
. ^) H: @5 k% u) n" v
# G( ]- S' J( ^6 E# O如果可以解問題1,應該就可以實現先於Input buffer排優先序後接續任務序列
作者: 慧娴亚伦    时间: 2015-4-24 19:58
r先生,这个问题1我觉得可以这么来判断,给同一批订单加上一个表示批量的标签,在需要判断的实体上面再添加一个标签来计数,在OnEntry中用inc()函数来累积统计进入的产品数量,如何符合他身上的标签值(即批量值),那么该产品即为最后一个产品,同时不要忘记将统计的标签清零。
/ ^7 s: y- q* p同样适用用于最后一个订单的最后一个产品的判断。
作者: r0805995    时间: 2015-4-24 21:01
本帖最后由 r0805995 于 2015-4-24 21:50 编辑
+ h, J, T" m0 m' M1 ~+ k1 i! t) p$ t% G8 D1 z: @
慧嫻 我重整你說的邏輯9 }% ~0 W/ `1 N. u' Y
在Source訂單加上一欄表示批量的標籤(Quantity),在需要判斷的實體上面(Item)添加一個標籤計數(QuantityNo),在Input buffer之OnEntry用inc()函數來累積統計進入的產品數量,當符合它(產品)身上的批量值,該產品即為最後一個產品,然後將OnEntry統計數量的標籤值歸0
2 e) _1 B7 R, g% f  d1 X8 L& L6 y9 n  j: I* q( ^$ m
是這樣嗎??& A8 Y. f  ]5 S  f

- F, R5 P$ q9 P, F- h6 j; m0 d
% y9 E# H. _+ F5 m8 n: d, M! Y我有點不知道要判斷什麼條件,我附上模型能幫我加入嗎??
8 w- v% {- z) p& R: L+ @9 d" U5 \, J0 y) e( O! R1 ~4 o
在Source訂單已經有新增標籤(Quantity)來記錄數量,產品標籤也有判斷是該訂單的第幾個產品(QuantityNo)
作者: 慧娴亚伦    时间: 2015-4-26 21:25
不好意思,昨天比较忙没看到。" k! L1 A+ M8 ~, C' v: [
r先生您的原模型太多内容了。。。我不知道如何下手,复制了一下您的发生器,新建了一个模型(版本为7.1.4),修改了一下不同批次达到时间,添加了几个标签来作为标示,下游的传送带只有当符合条件(即是一个批次里面的最后一个产品)才会拉入(为了更明确看出,我把该item变为白色)希望对您有帮助。2 `+ N& g$ U# b2 Y
可能我的表述问题,我觉得r先生您有时候把一些简单的事情想得过于复杂了。
! N$ u- k1 ~! b5 i$ z3 H% i8 s* e1 E. G" m/ g. c$ N0 _' i0 }
PS.您的发生器太大了,第一次复制吓了我一跳。。。




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