2012年10月5日 星期五

Flexsim使用sink的label屬性來收集時間統計量(最大max cycletime,最小min cycletime,平均average cycletime)


在sink4的OnReset中,先將每個sink4的屬性label先設為零(避免上一次執行結果殘留),接著在sink4的OnEntry中收集








treenode item = parnode(1);
treenode current = ownerobject(c);
int port = parval(2);
{ //************* PickOption Start *************\\
/**Write to GlobalTable*/
settablenum(
/** \nTable: */ /**/"time"/**/,
/** \nRow: */ /**/getlabelnum(item, "serial")/**/,
/** \nColumn: */ /**/3/**/,
/** \nValue: */ /**/time()/**/
);
/**\n\n*/
} //******* PickOption End *******\\
{ //************* PickOption Start *************\\
/**Set Label*/
setlabelnum(
/** \nObject: */ /**/item/**/,
/** \nLabel: */ /**/"outtime"/**/,
/** \nValue: */ /**/time()/**/
);
/**\n\n*/
} //******* PickOption End *******\\
{ //************* PickOption Start *************\\
/**Set Label*/
setlabelnum(
/** \nObject: */ /**/item/**/,
/** \nLabel: */ /**/"cycletime"/**/,
/** \nValue: */ /**/getlabelnum(item, "outtime")-getlabelnum(item, "intime")/**/
);
/**\n\n*/
} //******* PickOption End *******\\
//收集累積的 cycle time
{ //************* PickOption Start *************\\
/**Set Label*/
setlabelnum(
/** \nObject: */ /**/current/**/,
/** \nLabel: */ /**/"accumulatedct"/**/,
/** \nValue: */ /**/getlabelnum(item,"cycletime")+getlabelnum(current, "accumulatedct")/**/
);
/**\n\n*/
} //******* PickOption End *******\\
//收集最小cycle time
if (getlabelnum(item, "serial") == 1)
{
 setlabelnum(current,"minct", getlabelnum(item,"cycletime"));
}
else
{
 if (getlabelnum(current, "minct") > getlabelnum(item, "cycletime"))
 {
  setlabelnum(current,"minct", getlabelnum(item,"cycletime"));
 }
}
//收集最大cycle time
if (getlabelnum(item, "serial") == 1)
{
 setlabelnum(current,"maxct", getlabelnum(item,"cycletime"));
}
else
{
 if (getlabelnum(current, "maxct") < getlabelnum(item, "cycletime"))
 {
  setlabelnum(current,"maxct", getlabelnum(item,"cycletime"));
 }
}
{ //************* PickOption Start *************\\
//收集個數totalnum
/**Increment Value*/
inc(
/** \nNode: */ /**/label(current, "totalnum")/**list:label(item, "labelname")~gettablecell("tablename", 1,1)~node("/Tools/myvalue",model())*/
,
/** \nIncrement By: */ /**/1/**/
);
/**\n\n*/
} //******* PickOption End *******\\
{ //************* PickOption Start *************\\
//計算平均的cycle time: avgct,將累積的cycletime除以個數
/**Set Label*/
setlabelnum(
/** \nObject: */ /**/current/**/,
/** \nLabel: */ /**/"avgct"/**/,
/** \nValue: */ /**/getlabelnum(current,"accumulatedct")/getlabelnum(current,"totalnum")/**/
);
/**\n\n*/
} //******* PickOption End *******\\

flexsim收集全部個體的開始時間, 離開等候線時間,及 離開系統時間

收集Flexsim的時間我設計了兩種方法,第一種方法是每個個體的時間都收集,並export到excel做分析,做法是採用global table來收集,最後在export出去。

flexsim為每個個體產生序號

2012年9月28日 星期五

Excel 2010 運輸問題求解範例(線性規劃)

從網路上找到一個運輸問題的範例,http://www.google.com.tw/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=1&cad=rja&ved=0CCIQFjAA&url=http%3A%2F%2Fcc.cust.edu.tw%2F~thchu%2FLMex%2FLMLP446question.XLS&ei=-E1mUJ_hE4bGmQWE24GQCQ&usg=AFQjCNEHcLj9YRZrmQKWtkfy1pMMJPqi2g&sig2=EXJalK0d4zkRe7QW4fTGIA
我做了一些修改,加上需求量、供給量 與 距離。

運輸問題是以最低的運輸費用將貨品從工廠送到最接近市場需求中心的倉庫。各工廠必須在出貨量不超出供應量的前提下,同時也要達到滿足每一個市場的需求目的。
  • Excel 2007, 2010 規劃求解, 線性規劃, 運輸問題 需要從 檔案/選項/增益集 執行,勾選 規劃求解選項即可。
  • 如果是Excel 2003,則是在工具/增益集 勾選 規劃求解 選項。



Visio畫直線,取消跨線跳線跳轉

自從改用2010後,很多功能找不到,只能慢慢熟悉了,例如在Visio 2010中,要畫直線,一般預設的連接器會自動折線(自動直角),可是我們常有畫直線的需求,其實這個設定就在
設計/連接器/直線 ,或者要取消跨線 或稱為取消跳線 的功能,同樣在 設計/連接器/取消顯示線條跳轉 即可。