2012-07-19 2 views
1

제조 환경에서 사용할 간단한 학교용 소프트웨어를 개발해야합니다. 2^n 조합에서 가장 좋은 순서 찾기

는 시나리오 :

내가 크기의 목록을 제공하고 있습니다 - 예를 들어 내가 24 "X 30"보드, 30 "X 30", 30 "의 X가 각각의 크기는, 보드를 반영 48 "등등. 이 보드는 원자재를 자르는 과정의 부산물입니다.

원료는 두 가지 유형의 보드 크기 (60 "x 120"및 48 "x 96")로 제공됩니다.

그들은 원료에서 판재를 자르기위한 최선의 방법을 알고 싶어합니다. "가장 좋은"방법은 원료와 잔류 물이 가장 적은 방법으로 정의됩니다. 그들은 또한 사용될 원재료의 양을 알고 싶어합니다. 예를 들어 30 "60"x 120 "의 보드와 48"x 96 "3의 보드.

보드를 수평 또는 수직으로 절단 할 수 있습니다. 즉, 24 "x 30"을 24 "x 30"또는 30 "x 24"로자를 수 있습니다.

전체적으로 (같은 크기 일 수도있는) 총 50 개의 보드가 제공되는 경우 2^50 가지 조합을 사용할 수 있습니다. 이것은 수천 개의 다른 소프트웨어에서 소프트웨어를 실행하기 때문에 너무 길어 보입니다. 보드 크기.

누구나이 시나리오에 적합한 알고리즘을 알고 있는지 궁금합니다.

감사합니다.

+0

동적 프로그래밍 사용 –

+0

추가 세부 사항이 필요합니다. 첫째로, 당신은 "단두대"삭감 (모든 방법 좌우로)을 할 수 있습니까 또는 당신은 보드 중간에 중지 상처를 할 수 있습니까? 둘째, 분명히 그들은 각 크기의 보드를 몇 개 잘라야 하는지를 말했습니다. 그렇지? – AnT

+0

예. 단두대 절단 만 허용됩니다. 예, 그들은 필요한 수량과 크기를 제공하며 각 크기에서 보드의 양과 각 보드를 자르는 올바른 방법을 반환해야합니다. –

답변

3

& 패킹 문제를 절단 직사각형 2D 클래식 간단한 알고리즘은 그러나 Wang's algoritm

이며, 순수 왕의 알고리즘은 모든 상처 하나에서 모든 방법을 여행 할 경우, 즉 패턴을 최적의 단두대 절단 패턴을 생성 할 수있다 잔여 물자의 반대 가장자리에 가장자리. 그것은 많은 애플리케이션을 위해 단두대 절단 재잘는 충분 간주됩니다, 그러나 다음과 같은 일

+---------+---+ 
|   | | 
+---+-----+ | 
| |  | | 
| |  | | 
| +-----+---+ 
| |   | 
+---+---------+ 

같은 비 단두대 패턴을 생성 할 수 없습니다. 따라서 알고리즘을 고려하는 것이 좋습니다 (매우 간단하므로).

은 시뮬레이션 어닐링 기술을 기반으로 대략적인 무작위 알고리즘이있다 (자세한 설명은 비 단두대 패턴을 생성 할 수 있습니다 Simulated Annealing for VLSI Design 책 (그물에 그것을 찾을 수 없습니다)에서 찾을 수 있습니다 .

어쨌든 이러한 문제에 대한 정확한 해결책을 찾는 것은 대개 다양한 변형을 생성 및 분석하기 위해 상당한 양의 계산이 필요하기 때문에 대부분의 경우 실용적이지 못하다. 사람들은 좋은 근사/휴리스틱 알고리즘을 고수하기를 선호하지만, Wang의 알고리즘은 검색 속도를 높이는 발견 적 필터 (최적의 솔루션을 잃어 버리고 "거의"최적의 솔루션으로 대체 할 위험에 처해 있음)로 사용자 정의 할 수 있습니다.

+0

Ok - 왕 알고리즘이 효과가있는 것처럼 보입니다. 이제 원료 기본 크기에 대해 여러 가지 옵션이있는 경우 어떻게됩니까? Wang이 기본 L x W의 한 크기를 기반으로한다는 것을 이해하는 한 - 그 배열을 가지고 가능한 최상의 조합을 찾아야합니다. –

+0

나는 이것이 늦을 지 모르지만 왕의 알고리즘에 대한 또 다른 자료를 가지고 있는지 알고있다. 언급 된 것은 제거 된 것으로 보인다. – Clinton

0

가장 먼저 생각해 볼 점은 Bin Packing 알고리즘을 사용하여 에 주어진 원자재 중 많은 수의 보드를 사용할 수 있다는 것입니다.

Genetic Algorithm을 시도해보고 최상의 커팅 패턴을 검색 할 수도 있습니다. GA는 Bin Packing Algorithm처럼 지속적으로 효과적 일 수 있지만, GA에서 실행 시간을 정할 수는 있습니다. 예를 들어 일정 시간이 지난 후에 최상의 솔루션을 선택하십시오.

그러나 나는 공장이 동일한 크기의 재료로 배치 프로세스를 수행하는 경향이 있다고 생각하기 때문에 실제 절단 전에 실행되는 (아마도 더 느린 것은 무엇인지) 빈 포장 알고리즘을 허용하는 것이 가장 좋습니다. 일어난다.

+0

2D 버전의 절단 재고 문제입니다. 내가 이해할 수없는 유일한 방법은 내가 다양한 "원료"크기를 가지고 있다는 사실을 활용하는 것입니다. 이것은 하나 이상의 종류의 원료에서 500 가지 크기의 표를자를 필요가 있음을 의미합니다. 나는 처음부터 활용할 수있는 10 가지 크기가있을 수 있습니다. –

관련 문제