2010-01-29 4 views
10

공장 바닥의 시뮬레이션을 만들고 싶습니다.이 작업을 수행하는 방법에 대한 아이디어를 찾고 있습니다. 지금까지의 내 생각은 다음과 같습니다.공장 플로어 시뮬레이션

• 공장은 일련의 프로세스로 구성되어 있으며, 일부 프로세스는 일련의 프로세스이고 일부 프로세스는 병렬 프로세스입니다. 와 통신 할 각 프로세스는 각 프로세스 • 넣어

를 통해입니다 그들 알려 업스트림 및 다운 스트림 및 병렬 이웃의 것이라고는 최대 처리량과 같은 자신의 기본 속성, 분명히

을 넣어 통해의 결과로 유지 보수 비용의 나는 이것을 완전히 생각하지는 못했지만 누군가가 나에게 약간의 아이디어 나 아마도 온라인 리소스에 대한 링크를 줄 수 있기를 바랬다.

업데이트 : 이 프로젝트는 나만의 엔터테인먼트를위한 것이며, 아마도 조금만 더. 나는 프로그래머로서 고용되어 있지 않다. 프로그래밍은 나를위한 취미 일 뿐이다. C#으로 작성하기로했습니다.

+2

+1 흥미로운 질문입니다. 특정 변수 (비용, 용량 등)를 최적화 할 수 있도록 수학적 모델링을 원하는 것처럼 들립니다. 나는 당신이 "시뮬레이션"을 원한다고 확신하지 못합니다. – dss539

+0

나는 일하는 공장이고, 때때로 우리는 쓰는 것을 늘린다. 이 증가는 전기 비용 증가, 유지 비용 증가 및 장비 수명 단축과 같은 다른 부서 예산에 몇 가지 부정적인 영향을 미칩니다. 나는 처리량의 변화를 시도하고 시뮬레이션하는 것은 재미 있지만 비용이 들지만. 나는 전문적인 프로그래머가 아니지만 조금만 손을 대면 이것이 재미있는 프로젝트가 될 것이라고 생각했습니다. – fishhead

+0

귀하의 의견은 당신이 수학적 모델을 원합니다. 나는 이것이 재미있는 프로젝트처럼 들린다는 것에 동의한다. 특정 매개 변수를 최적화하기 시작할 때 더욱 재미있을 것입니다. ;) 스프레드 시트를 사용하여이 변수를 많이 모델링 할 수 있습니다 ... 물론 프로그램을 작성하는 것이 더 재미있을 수 있습니다. – dss539

답변

3

전체 공장을 정확하게 시뮬레이션하는 것은 큰 일입니다.

먼저 알아야 할 사항은 무엇입니까? 왜 시뮬레이션을하고 있습니까? 누구를위한 거니? 가치는 무엇입니까? 흥미로운 부분은 무엇입니까? 얼마나 정확해야합니까? 프로세스의 어떤 부분을 정확하게 시뮬레이션 할 필요가 없습니까?

이 질문에 대한 답을 이해하려면 시뮬레이션이 쓰여지는 사람이 누구든 이야기해야합니다.

시뮬레이션 할 대상을 파악한 후에는 시뮬레이션 방법을 알아야합니다. 이러한 모델에는 일부 모델과 일부 매개 변수가 필요합니다. 실제 생산물에서 실제 수치를 얻고 수치에서 모델을 도출하려고 할 수 있습니다. 모델은 입력과 출력 사이의 단순한 선형 관계, 더 복잡한 관계 및 확률 론적 (무작위) 효과 일 수 있습니다. 실제 데이터에 액세스 할 수없는 경우 모델에서 추측해야하지만 이는 결코 좋지 않으므로 가능한 경우 실제 데이터를 가져 오십시오.

또한 구성 요소의 고장 가능성 및 그 영향에 대해 고려해 볼 수 있습니다. 스트라이크를 타는 노동자는 어떨까요? 원자재를 사용할 수 없습니까? 시간이 지남에 따라 출력이 점차적으로 낮아지는 기계에 마모가 발생합니까? 다시 한 번 당신은이 세부 사항을 고려하고 싶지 않을 수도 있습니다. 그것은 고객이 원하는 것에 달려 있습니다.

시뮬레이션에 임의 이벤트가 포함되는 경우 시뮬레이션을 여러 번 실행하고 평균 결과를 얻으려고 할 수 있습니다 (예 : Monte Carlo 시뮬레이션).

더 나은 답변을 얻으려면 시뮬레이션해야 할 항목과 달성하려는 항목에 대해 알아야합니다.

+0

저는 프로그래머로 일하지 않습니다. 그것은 단지 재미있는 프로젝트처럼 들리며 아마도 프로그래밍에 대해 조금 더 배울 것입니다. 나는 그 응용 프로그램이 나 자신 이외에는 아무런 관심이 없을 것이라고 기대하지 않습니다. – fishhead

+1

이 응용 프로그램 유형은 확실히 생산 프로세스를 관리하는 많은 사람들에게 흥미 롭습니다. 그런 응용 프로그램을 개발하는 데 많은 시간과 돈이 소요됩니다. 쉬운 프로젝트는 아니지만 시뮬레이션을 사용하여 프로세스를 최적화하고 고장률을 줄이는 등의 작업을 수행하는 것이 좋습니다. 프로그래밍 방법을 배우고 싶다면 이것이 아마도 학습을위한 이상적인 프로젝트가 아닐 것입니다 복잡하기 때문에 작업 할 실제 데이터가 없을 것입니다. –

+0

ho 나는 모든 산업용 SQL 서버와 모든 지난 4 년간의 데이터에 대한 직접 연결을 가지고 있습니다. 또한 유지 관리 데이터베이스에 연결되어 있고 노동, 계약자 및 부품을 포함한 비용이 있습니다. – fishhead

0

Automod는 갈 길입니다. http://www.appliedmaterials.com/products/automod_2.html

배우는 것이 많고 값이 싸지 않을 것입니다.

ASI의 Automod는 약 30 년 동안 공장 시뮬레이션 사업에 종사해 왔습니다. 현재 Applied Materials가 소유하고 있습니다. 창고에서 자재 취급을 담당하는 빅 플레이어는 입증 된 리더이기 때문에 Automod를 사용합니다.

+0

왜 이것을 다운 그레이드 했습니까? 나는 automod에 관해 무엇이 든지을 모르고있다. 그러나 누군가 downvote를 설명 할 수 있었느냐? – dss539

+0

내가 automod가 사용되어야하는 이유에 대한 지원을하지 않기 때문에 나는 downvoted했고, 일반적으로 공장을 시뮬레이션하는 방법에 대한 조언을주지 않는다. –

+0

@Scottie Fair 충분하지만이 답변은 Jim C의 대답과 비슷합니다. – dss539

0

어쩌면 더 찾고있는 것이지만 visual components은 훌륭한 산업 시뮬레이션 도구입니다.

분명히 나는 ​​그들을 위해 일하지 않고 내가 일하는 회사가 현재 그들을 사용하지만 우리는 그들을 보았다.

3

귀하의 고객은 귀하이므로 Mark Byers에 질문 된 모든 질문에 대한 대답을 결정해야합니다. 그러나, 나는 당신에게 몇 가지 제안을 줄 것이고 잘하면 그들은 당신에게 시작을 줄 것이다.

공장에서 몇 가지 부품을 가져 와서 하나의 완제품으로 조립한다고 가정합시다. A와 B 조립 위젯 최초의 다이아몬드를 들어

Factory Flowchart http://img62.imageshack.us/img62/863/factoryflowchart.jpg

을이이 단계를 완료하는 데 평균 30초 취 가정 어셈블리 프로세스의 플로우 차트는 다음과 같이 보일 수 있습니다. 두 위젯을 어셈블하는 데 걸리는 실제 시간을 평균으로 30 초 및 분산 5 초인 normally으로 가정합니다. 두 번째 다이아몬드의 경우 평균 30 초가 걸리 겠지만 대부분의 시간은 거의 그리 오래 걸리지 않으며 다른 시간은 훨씬 오래 걸립니다. 이것은 exponential distribution에 의해 잘 근사되며 속도 매개 변수로 30 초를 사용하며 방정식에서 종종 람다로 표시됩니다. 제 처리에

위젯 A 및 B와 같은 조립 시간 계산 :

timeB = rand()/lambda; // Assuming C# has a function for a uniformly distributed 
         // random number 
: 조립품에 위젯 C를 추가하는 시간이, 제 2 공정 들어

timeA = randn(mean, sqrt(variance)); // Assuming C# has a function for a normally 
            // distributed random number with mean and 
            // sigma as inputs 

계산을

이제 각 iGadget의 총 조립 시간은 timeA + timeB + waitingTime이됩니다. 각 조립 지점에서 조립 대기중인 위젯 대기열을 보관하십시오. 두 번째 어셈블리 포인트가 병목이면 큐가 채워집니다. 대기열의 최대 크기를 적용하고 최대 크기에 도달하면 작업을 더 많이 스트림에 보관할 수 있습니다. 항목이 대기열에있는 경우 조립품 시간은 조립품 선의 앞에있는 모든 iGadget만큼 증가합니다. 코드를 작성하는 방법을 알아 내려고합니다. 평균적으로 총 조립 시간을 확인하기 위해 많은 시험을 수행 할 수 있습니다. 결과적인 배포판은 어떻게 생겼습니까?

방법을 "양념이 최대"

  • 모든 위젯을위한 3 B 위젯을 요구합니다. 인벤토리로 놀아 라. 임의의 간격으로 재고를 보충하십시오.
  • 품질 보증 검사를 추가하십시오 (여기서 지수 분포를 사용하는 것이 좋습니다). 완성 된 일부 가젯을 거부하십시오. 낮은 거부율을 사용하는 것이 좋습니다.
  • 내가 제안한 것과 다른 확률 분포를 사용해보십시오. 시뮬레이션에 미치는 영향을 확인하십시오. 확률 분포에 대한 입력 매개 변수가 실제 값으로 매핑되는 방법을 항상 파악하려고 시도하십시오.

간단한 시뮬레이션으로 많은 것을 할 수 있습니다. 다음 단계는 임의의 수의 위젯과 어셈블리 단계를 가질 수 있도록 코드를 일반화하는 것입니다. 이것은 그리 쉬운 일이 아닙니다. 이 유형의 시뮬레이션 및 분석에 전념하는 operations research이라는 적용된 전체 분야가 있습니다.

+0

+1 좋은 예 – dss539

1

설명하는 것은 이산 이벤트 시뮬레이션에서 다루는 고전적인 문제입니다. 이러한 종류의 문제를 모델링하기 위해 다양한 범용 및 특수 목적 시뮬레이션 언어가 개발되었습니다."실제"문제에 대해 처음부터 아무것도 프로그래밍하지 않는 것이 좋지만 이벤트 일정 계획, 난수 생성, 일정 관리 등을 이해할 수 있도록 작은 대기열 문제에 대한 코드를 작성하는 것이 좋습니다. 일단 그렇게하면 범용 시뮬레이션 언어가 모든 것을 처리하여 큰 그림에 집중할 수 있습니다.

좋은 참조는 Law & Kelton입니다. ARENA는 표준 패키지입니다. 널리 사용되며, IMHO는 이러한 종류의 시뮬레이션을 위해 매우 포괄적입니다. ARENA 서적은 시뮬레이션에 관한 적절한 책이기도하며 작은 문제에 적용 할 수있는 소프트웨어와 함께 제공됩니다. 더 큰 문제를 모델링하려면 라이센스를 얻어야합니다. ARENA here의 평가판을 다운로드 할 수 있어야합니다.