簡體   English   中英

我需要一些關於如何在 Python 上執行以下工程場景的指導

[英]I need some guidance on how to do the following engineering scenario on Python

我有一個制造場景,其中有 8 個不同的籃子。 每個籃子都有不同類型的零件。 從每個籃子中挑選 1 個或多個零件來制造汽車,我想制造盡可能多的汽車版本,這是我預期的解決方案。 零件可以從每個籃子中隨機挑選(例如:第 15 號零件可以在第 2 號籃子的第 5 號零件之前選擇),但它必須從籃子 1 流到第 8 號籃子(例如:籃子 3 不能在籃子 2 之前)。 一切都是基於文本的,這意味着籃子 1 到 8 是列表,而汽車零件是各自列表中的文本條目。 為了清楚起見,請檢查下面的小例如。 有人可以指導我如何創建這樣一個場景,我可以逐步生成隨機排列的汽車嗎? 我對 Python 有非常基本的了解。

 1. Engine (Eng 1,Eng 2, Eng 3)
 2. Body (Body 1, Body 2, Body 3)
 3. Seats (Seat 1, Seat 2, Seat 3)
 4. Solution (eng 1+body 3+seat 1+seat3), (eng 1+body 1+seat 1)...,(eng n+body n+seat n)

如果您希望生成所有組合,解決此問題的方法之一是使用itertools.product

import itertools
engines = ['Engine 1', 'Engine 2', 'Engine 3']
bodies = ['Body 1' ,'Body 2']
seats = ['Seats 1', 'Seats 2']
cars = itertools.product(engines, bodies, seats)

for car in cars:
    print(car)

這將產生

('Engine 1', 'Body 1', 'Seats 1')
('Engine 1', 'Body 1', 'Seats 2')
('Engine 1', 'Body 2', 'Seats 1')
('Engine 1', 'Body 2', 'Seats 2')
('Engine 2', 'Body 1', 'Seats 1')
('Engine 2', 'Body 1', 'Seats 2')
('Engine 2', 'Body 2', 'Seats 1')
('Engine 2', 'Body 2', 'Seats 2')
('Engine 3', 'Body 1', 'Seats 1')
('Engine 3', 'Body 1', 'Seats 2')
('Engine 3', 'Body 2', 'Seats 1')
('Engine 3', 'Body 2', 'Seats 2')

如果您查看 itertools 頁面,您會發現以下隨機產品生成方法

import random

def random_product(*args, repeat=1):
    "Random selection from itertools.product(*args, **kwds)"
    pools = [tuple(pool) for pool in args] * repeat
    return tuple(random.choice(pool) for pool in pools)

用零件的 args 調用它

 random_product(engines, bodies, seats)

將返回隨機生成的汽車

('Engine 2', 'Body 1', 'Seats 2')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM