本文地址:https://blog.csdn.net/t4ngw/article/details/105307630
2018年國賽B題
數據
具體細節和一位同學討論得出
code:只採用第一組數據
# -*- coding: utf-8 -*-
"""
Created on Sun Feb 23 11:23:49 2020
@author: t4ngw
"""
import numpy as np
import math
Move = [0, 20, 33, 46]#rgv移動每一個位置的時間
Work = 560
Switch = np.tile([28, 31], (1, 4))
Wash = 25#洗料時間
Position = 1#初始的時候在1號位
left = np.zeros((1, 8))
sitution = np.zeros((1, 8))
Time = 0
expect = np.ones((4, 8))
#第一行記錄RGV運動到各CNC的時間,第三行記錄洗料的時間;
rec = np.array([[0, 0]])
while Time <=28800:
#進入循環結束後,Time爲28802(RGV工作28800便停止)前一個循環是28725s
#75s(28800-28725)內Rgv還是能給CNC上料,所以這塊物料算在物料數內
for i in range(1, 9):
expect[0, i - 1] = Move[0 + abs(Position - math.ceil(i/2))]
if left[0, i - 1] <= expect[0, i - 1]:
expect[1, i - 1] = 0
else:
expect[1, i - 1] = left[0, i - 1] - expect[0, i - 1]
expect[2, i - 1] = Switch[0, i - 1]
expect[3, i - 1] = np.sum(expect[0:3, i - 1], axis=0)
MinNumber = np.argmin(expect[3, :])
Time = Time + expect[0, MinNumber] + expect[1, MinNumber]
flag = 0
if flag == 0:
rec1 = np.array([[MinNumber, Time]])
rec = np.append(rec, rec1, axis=0)
if sitution[0][MinNumber] == 0:
sitution[0][MinNumber] = 1
Time = Time + expect[2, MinNumber]
for i in range(0, 8):
if left[0, i] - expect[3, MinNumber] < 0:
left[0, i] = 0
else:
left[0, i] = left[0, i] - expect[3, MinNumber]
left[0, MinNumber] = Work
else:
Time = Time + expect[2, MinNumber] + Wash
for i in range(0, 8):
if left[0, i] - expect[3, MinNumber] - Wash < 0 :
left[0, i] = 0
else:
left[0, i] = left[0, i] - expect[3, MinNumber] - Wash
left[0, MinNumber] = Work - Wash
Position = math.ceil((MinNumber + 1)/2)
while (rec[-1][1] + expect[0, MinNumber] + Wash) > 28800:
rec=np.delete(rec,-1, axis=0)
a = rec[1:385, 0]
print("物料數量:{}".format(np.size(rec, 0) - 1))
print("rgv運動軌跡:")
print(a.reshape(-1, 8))
print(rec[385:,0])
#經過最後一次print(expect)可知0-7位置的CNC都沒有洗料完成,所以最終成料數是
#物料數量-(正在洗料+剛上料)的數量
print("最終成料數:{}".format(np.size(rec, 0) - 1 - 8 ))
結果
物料數量:391
rgv運動軌跡:
[[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]
[0. 1. 2. 3. 4. 5. 6. 7.]]
[0. 1. 2. 3. 4. 5. 6.]
最終成料數:383