스토리지의 모든 경우를 python으로 출력하기
스토리지의 모든 경우를 python으로 구현하여, 모든 경우에 대한 행동할 값을 테이블로 작성이 가능하다. 이후 중복된 데이터를 엑셀로 정리가 가능하다. 각 경우에 대한 값을 입력으로 보고, 어떻게 행동할 지를 출력으로 임의로 작성하면 X->Y의 관계를 가르칠 수 있다.
스토리지의 상황
라인 프로그램을 작성하다 보면, 모든 경우에서 어는 부분을 처리해주는 부분이 없어 중단되는 상황이 있다. 셔틀과 스토리지로 구성된 라인이 있다고 할 때, 마지막 공정이 대차를 아래와 같이 세가지 경우 중 하나로 처리할 수 있다.
- 생산 데이터와 마지막 공정 대차가 일치하여 시작 공정으로 다시 돌림
- 생산 데이터와 마지막 공정 대차가 같지 않아, 스토리지에서 새로운 대차를 빼고, 마지막 대차는 빈 셀로 넣기
-
간단하게 만들기 위해서, 스토리지에 생산 데이터의 대차가 있어도 라인에 있는 대차를 먼저 사용
-
- 생산 데이터와 마지막 공정 대차가 같지 않아, 다음 턴에서 맞을 것으로 보고 마지막 대차를 시작 공정으로 다시 돌림
Python Permutation으로 구현하기
모든 경우에 대한 데이터를 파악하고, 사용자가 엑셀에서 함수를 데이터를 입력하다면 쉽게 입력/출력 테이블을 만들 수 있다. 모든 경우를 엑셀로 출력하는 vba가 있으나, 사용하기 복잡해 보인다. stack overflow 인터넷의 누군가 python으로 간단하게 구현할 수 있는 코드를 작성하여 참조할 수 있도록 정리했다. 왜 pyhon을 많은 사람들을 쓰는지 이해가 된다.
import itertools #all cell are full mylist8 = ["UM","UM","UM","UM","UM","UM","UM"] mylist1 = ["QF","UM","UM","UM","UM","UM","UM"] mylist2 = ["QF","QF","UM","UM","UM","UM","UM"] mylist3 = ["QF","QF","QF","UM","UM","UM","UM"] mylist4 = ["QF","QF","QF","QF","UM","UM","UM"] mylist5 = ["QF","QF","QF","QF","QF","UM","UM"] mylist6 = ["QF","QF","QF","QF","QF","QF","UM"] mylist7 = ["QF","QF","QF","QF","QF","QF","QF"] #1 cell is empty mylist9 = ["UM","UM","UM","UM","UM","UM","Vacant"] mylist10 = ["QF","UM","UM","UM","UM","UM","Vacant"] mylist11 = ["QF","QF","UM","UM","UM","UM","Vacant"] mylist12 = ["QF","QF","QF","UM","UM","UM","Vacant"] mylist13 = ["QF","QF","QF","QF","UM","UM","Vacant"] mylist14 = ["QF","QF","QF","QF","QF","UM","Vacant"] mylist15 = ["QF","QF","QF","QF","QF","QF","Vacant"] #2 cell are empty mylist16 = ["UM","UM","UM","UM","UM","Vacant","Vacant"] mylist17 = ["QF","UM","UM","UM","UM","Vacant","Vacant"] mylist18 = ["QF","QF","UM","UM","UM","Vacant","Vacant"] mylist19 = ["QF","QF","QF","UM","UM","Vacant","Vacant"] mylist20 = ["QF","QF","QF","QF","UM","Vacant","Vacant"] mylist21 = ["QF","QF","QF","QF","QF","Vacant","Vacant"] #3 cell are empty mylist22 = ["UM","UM","UM","UM","Vacant","Vacant","Vacant"] mylist23 = ["QF","UM","UM","UM","Vacant","Vacant","Vacant"] mylist24 = ["QF","QF","UM","UM","Vacant","Vacant","Vacant"] mylist25 = ["QF","QF","QF","UM","Vacant","Vacant","Vacant"] mylist26 = ["QF","QF","QF","QF","Vacant","Vacant","Vacant"] #4 cell are empty mylist27 = ["UM","UM","UM","Vacant","Vacant","Vacant","Vacant"] mylist28 = ["QF","UM","UM","Vacant","Vacant","Vacant","Vacant"] mylist29 = ["QF","QF","UM","Vacant","Vacant","Vacant","Vacant"] mylist30 = ["QF","QF","QF","Vacant","Vacant","Vacant","Vacant"] #5 cell are empty mylist31 = ["UM","UM","Vacant","Vacant","Vacant","Vacant","Vacant"] mylist32 = ["QF","UM","Vacant","Vacant","Vacant","Vacant","Vacant"] mylist33 = ["QF","QF","Vacant","Vacant","Vacant","Vacant","Vacant"] #6 cell are empty mylist34 = ["UM","Vacant","Vacant","Vacant","Vacant","Vacant","Vacant"] mylist35 = ["QF","Vacant","Vacant","Vacant","Vacant","Vacant","Vacant"] myPermutation1 = itertools.permutations(mylist1) myPermutation2 = itertools.permutations(mylist2) myPermutation3 = itertools.permutations(mylist3) myPermutation4 = itertools.permutations(mylist4) myPermutation5 = itertools.permutations(mylist5) myPermutation6 = itertools.permutations(mylist6) myPermutation7 = itertools.permutations(mylist7) myPermutation8 = itertools.permutations(mylist8) myPermutation9 = itertools.permutations(mylist9) myPermutation10 = itertools.permutations(mylist10) myPermutation11 = itertools.permutations(mylist11) myPermutation12 = itertools.permutations(mylist12) myPermutation13 = itertools.permutations(mylist13) myPermutation14 = itertools.permutations(mylist14) myPermutation15 = itertools.permutations(mylist15) myPermutation16 = itertools.permutations(mylist16) myPermutation17 = itertools.permutations(mylist17) myPermutation18 = itertools.permutations(mylist18) myPermutation19 = itertools.permutations(mylist19) myPermutation20 = itertools.permutations(mylist20) myPermutation21 = itertools.permutations(mylist21) myPermutation22 = itertools.permutations(mylist22) myPermutation23 = itertools.permutations(mylist23) myPermutation24 = itertools.permutations(mylist24) myPermutation25 = itertools.permutations(mylist25) myPermutation26 = itertools.permutations(mylist26) myPermutation27 = itertools.permutations(mylist27) myPermutation28 = itertools.permutations(mylist28) myPermutation29 = itertools.permutations(mylist29) myPermutation30 = itertools.permutations(mylist30) myPermutation31 = itertools.permutations(mylist31) myPermutation32 = itertools.permutations(mylist32) myPermutation33 = itertools.permutations(mylist33) myPermutation34 = itertools.permutations(mylist34) myPermutation35 = itertools.permutations(mylist35) #myCombination = itertools.combinations(mylist, 2) for i in myPermutation1: print i for i in myPermutation2: print i for i in myPermutation3: print i for i in myPermutation4: print i for i in myPermutation5: print i for i in myPermutation6: print i for i in myPermutation7: print i for i in myPermutation8: print i for i in myPermutation9: print i for i in myPermutation10: print i for i in myPermutation11: print i for i in myPermutation12: print i for i in myPermutation13: print i for i in myPermutation14: print i for i in myPermutation15: print i for i in myPermutation16: print i for i in myPermutation17: print i for i in myPermutation18: print i for i in myPermutation19: print i for i in myPermutation20: print i for i in myPermutation21: print i for i in myPermutation22: print i for i in myPermutation23: print i for i in myPermutation24: print i for i in myPermutation25: print i for i in myPermutation26: print i for i in myPermutation27: print i for i in myPermutation28: print i for i in myPermutation29: print i for i in myPermutation30: print i for i in myPermutation31: print i for i in myPermutation32: print i for i in myPermutation33: print i for i in myPermutation34: print i for i in myPermutation35: print i
python에 익숙하면 더 세련된 형태로 할 수 있겠으나, 일회성으로 하기 때문에 그냥 노가다로 해결했다.
엑셀로 중복 데이터 제거
출력 결과는 중복되는 데이터들이 많은데, 간단한 함수로 중복을 제거할 수 있다. 이를 그냥 입력으로도 사용 가능하나, 중복되는 데이터는 정확도가 떨어지므로, 정리해 주는게 맞아 보인다.
아래는 정리한 테이블의 데이터 셋이다.
170217datasetv4