Проблема: Инструмент работает для большинства входных данных, но иногда выдает неправильные длины рельсов. Например, для небольших значений или определенной оставшейся длины буфера выводятся недопустимые рельсы (например, длины меньше разрешенного минимума).
Желаемые примеры вывода (текущие) : Учитывая входную максимальную длину рельса 1600 мм, буфер 600 мм и общую длину 8650 мм, правильный результат должен быть: {1600, 1600, 1600, 1800, 1800
Для общей длины 4650 мм правильный результат должен быть: {1400, 1400, 1600} (Эти значения с добавленным буфером конечной стойки дают в сумме общую длину с использованием только разрешенных длин рельсов). и обеспечение сбалансированности набора.)
Примеры неправильных выходных данных (текущие): Например, когда оставшаяся длина составляет 1050 мм, код создает недопустимую направляющую. из {800}. Иногда она превышает или занижает допустимую длину рельсов.
Код: Выделить всё
remainingLength = 2250
odCCDifference = 250
remainingBufferLength = 600
standardStep = 200
isNonStandard = False
standardLengths = [1000, 1200, 1400, 1600, 1800, 2000]
standardLengths.sort()
softMaxLengthIndex = 3
hardMaxLengthIndex = 5
endPostCount = 0
midPostCount = 0
railSets = []
remainingLength -= odCCDifference
while remainingLength >= standardLengths[softMaxLengthIndex]:
remainingLength -= standardLengths[softMaxLengthIndex]
railSets.append(standardLengths[softMaxLengthIndex])
if remainingBufferLength >= remainingLength:
while remainingLength > 0:
remainingLength -= standardStep
railSets.sort()
railSets[0] += standardStep
else:
remainingLength -= standardLengths[softMaxLengthIndex]
railSets.append(standardLengths[softMaxLengthIndex])
while remainingLength < 0:
remainingLength += standardStep
railSets.sort(reverse=True)
railSets[0] -= standardStep
railSets.sort()
print(railSets)
- Как я могу улучшить логику балансировки, чтобы избежать создания незаконных железнодорожных перевозок длины?
- Есть ли альтернативные подходы, которые мне следует рассмотреть для более эффективного разделения общей длины?
Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python