全球FlexSim系统仿真中文论坛
标题:
Flexsim邏輯問題
[打印本页]
作者:
r0805995
时间:
2015-4-19 16:56
标题:
Flexsim邏輯問題
目前有5個訂單,於Source隨機產生priority數值
2 l' Z$ H& x9 u& B1 d
Order1 5.32 200個Item
2 I9 C' f7 X, r
Order2 1.45 300個Item
& C0 q! ]7 e5 g" p: p6 I5 u9 R+ d
Order3 3.83 300個Item
& Q9 S& b% @) u7 ^! {
Order4 2.51 200個Item
! ]1 a& D( f' n7 R) f; x9 D2 g# Q
Order5 3.04 100個Item
" U! X# R9 s5 \
7 v! x. I- L }( i
Source 產生產品會到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 q
Source於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 X
8 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% i
8 s* e1 E. G" m/ g. c$ N0 _' i0 }
PS.您的发生器太大了,第一次复制吓了我一跳。。。
欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/)
Powered by Discuz! X3.3