前提・実現したいこと
現在の出力
'加工順番'::同じ機械ごとに加工順番を上から決めている
['作業者', '機械', '加工順序', '前段取り', '後段取り', '加工時間', '正味前段取り', '正味後段取り', '前段取り_済', '加工_済', '後段取り_済']
[[ 6. 5. 1. 16. 10. 115. 16. 10. 0. 0. 0.]
[ 6. 9. 1. 17. 12. 157. 17. 12. 0. 0. 0.]
[ 4. 10. 1. 11. 7. 134. 11. 7. 0. 0. 0.]
[ 8. 11. 1. 23. 7. 138. 23. 7. 0. 0. 0.]
[ 7. 11. 2. 16. 12. 95. 16. 12. 0. 0. 0.]
[ 2. 12. 1. 12. 13. 107. 12. 13. 0. 0. 0.]
[ 6. 1. 1. 17. 8. 133. 17. 8. 0. 0. 0.]
[ 5. 9. 2. 28. 15. 138. 28. 15. 0. 0. 0.]
[ 2. 7. 1. 12. 7. 57. 12. 7. 0. 0. 0.]
[ 2. 1. 2. 19. 6. 149. 19. 6. 0. 0. 0.]
[ 2. 11. 3. 12. 7. 121. 12. 7. 0. 0. 0.]
[ 1. 7. 2. 30. 7. 115. 30. 7. 0. 0. 0.]
[ 6. 2. 1. 14. 6. 95. 14. 6. 0. 0. 0.]
[ 4. 5. 2. 21. 6. 75. 21. 6. 0. 0. 0.]
[ 7. 1. 3. 25. 14. 63. 25. 14. 0. 0. 0.]
[ 6. 8. 1. 19. 15. 108. 19. 15. 0. 0. 0.]
[ 2. 8. 2. 26. 7. 109. 26. 7. 0. 0. 0.]
[ 3. 2. 2. 22. 6. 159. 22. 6. 0. 0. 0.]
[ 8. 7. 3. 10. 5. 169. 10. 5. 0. 0. 0.]
[ 2. 7. 4. 19. 7. 174. 19. 7. 0. 0. 0.]
[ 2. 5. 3. 17. 10. 87. 17. 10. 0. 0. 0.]
[ 6. 6. 1. 21. 12. 86. 21. 12. 0. 0. 0.]
[ 8. 8. 3. 17. 11. 100. 17. 11. 0. 0. 0.]
[ 2. 5. 4. 24. 10. 117. 24. 10. 0. 0. 0.]
[ 8. 10. 2. 26. 7. 126. 26. 7. 0. 0. 0.]]
実現したい出力
'加工順番'::加工順序を機械ごとに、前段取りの値が小さいものから割り付けたい
(実現したい出力例)
[[ 6. 5. 3. 16. 10. 115. 16. 10. 0. 0. 0.]
[ 6. 9. 1. 17. 12. 157. 17. 12. 0. 0. 0.]
[ 4. 5. 4. 11. 7. 134. 11. 7. 0. 0. 0.]
[ 8. 5. 1. 23. 7. 138. 23. 7. 0. 0. 0.]
[ 7. 2. 1. 16. 12. 95. 16. 12. 0. 0. 0.]
[ 2. 5. 2. 12. 13. 107. 12. 13. 0. 0. 0.]
2番目の要素の同じ値ごとに4番目の要素を比較し小さいものから3番目の要素に順番を付けたい
for i in self.array_machine:
self.order_sample[int(i-1)] += 1
self.order.append(self.order_sample[int(i-1)])
self.array_order = np.array(self.order).reshape(JOB,1)
この部分を変えたい
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
python
1import numpy as np 2import pandas as pd 3import random 4import os 5import openpyxl 6from openpyxl.descriptors.base import Length 7 8# 問題の設定 9JOB = 25 # ジョブの個数 10WORKER = 8 # 作業員の人数 11MACHINE = 12 12 13 14# 個体をdataframe型で保存するための項目 15columns = ["作業者","機械","加工順序","前段取り","後段取り","加工時間","正味前段取り","正味後段取り","前段取り_済","加工_済","後段取り_済"] 16 17class Chromosome: 18 def __init__(self): 19 # self.array_presetup_time = np.random.randint(PRESETUP_MIN,PRESETUP_MAX,(JOB,1)) # ジョブごとの前段取り作業時間の生成 20 self.array_presetup_time = np.array([[16],[17],[11],[23],[16],[12],[17],[28],[12],[19],[12],[30],[14],[21],[25],[19],[26],[22],[10],[19],[17],[21],[17],[24],[26]]) 21 # self.array_process_time = np.random.randint(PROCESS_MIN,PROCESS_MAX,(JOB,1)) # ジョブごとの加工時間の生成 22 self.array_process_time = np.array([[115],[157],[134],[138],[95],[107],[133],[138],[57],[149],[121],[115],[95],[75],[63],[108],[109],[159],[169],[174],[87],[86],[100],[117],[126]]) 23 # self.array_postsetup_time = np.random.randint(POSTSETUP_MIN,POSTSETUP_MAX,(JOB,1)) # ジョブごとの後段取り作業時間の生成 24 self.array_postsetup_time = np.array([[10],[12],[7],[7],[12],[13],[8],[15],[7],[6],[7],[7],[6],[6],[14],[15],[7],[6],[5],[7],[10],[12],[11],[10],[7]]) 25 self.array_worker = np.random.randint(1,WORKER+1,(JOB,1)) # ジョブごとの担当作業者の決定 26 self.array_machine = np.random.randint(1,MACHINE+1,(JOB,1)) # ジョブごとの担当機械の決定 27 28 self.order_sample = [0] * MACHINE 29 self.order = [] 30 # 加工順番の決定 31 for i in self.array_machine: 32 self.order_sample[int(i-1)] += 1 33 self.order.append(self.order_sample[int(i-1)]) 34 35 self.array_order = np.array(self.order).reshape(JOB,1) 36 37 # 正味前段取り時間 38 self.list_net_presetup_time = [] 39 self.list_net_postsetup_time = [] 40 for i in range(JOB): 41 self.ability = SKILL_LEVEL[(int(self.array_worker[i])),int(self.array_machine[i])] 42 self.net_presetup_time = self.array_presetup_time[i] * self.ability 43 self.net_postsetup_time = self.array_postsetup_time[i] * self.ability 44 self.list_net_presetup_time.append(self.net_presetup_time) 45 self.list_net_postsetup_time.append(self.net_postsetup_time) 46 self.array_net_presetup_time = np.array(self.list_net_presetup_time).reshape(JOB,1) 47 self.array_net_postsetup_time = np.array(self.list_net_postsetup_time).reshape(JOB,1) 48 49 self.array_binary = np.zeros((JOB,3)) 50 51 # 一つの行列に結合 52 self.gene = np.concatenate([self.array_worker,self.array_machine,self.array_order,self.array_presetup_time, 53 self.array_postsetup_time,self.array_process_time, 54 self.array_net_presetup_time,self.array_net_postsetup_time,self.array_binary],axis = 1) 55 # self.MUTATION_RATE = 0.05 # 突然変異率 56 57 self.df = pd.DataFrame(self.gene,columns = columns)
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。