เวลาดำเนินการที่เหลืออยู่สั้นที่สุด อัลกอริทึมสำหรับการคำนวณเวลาของกระบวนการเอง กระบวนการสำหรับการคำนวณเวลาที่เหลือ
ทุกสิ่งที่อธิบายไว้ในหัวข้อก่อนหน้านี้มุ่งเน้นไปที่การดำเนินการวิจัยเพิ่มเติมเกี่ยวกับปัญหาของเวลาของกระบวนการและในขอบเขตที่น้อยกว่ามาก การใช้งานจริง- เพื่อเติมเต็มช่องว่างนี้ เราจะร่างวิธีการหนึ่งในการคำนวณเวลาที่เหมาะสมของกระบวนการโดยพิจารณาจากข้อมูลทางสถิติเกี่ยวกับวิวัฒนาการของกระบวนการ
ขอให้เราพิจารณากระบวนการหนึ่งมิติซึ่งมีสถานะเป็นตัวแปรจริง x ให้เราสมมติว่าการสังเกตพลวัตของกระบวนการดำเนินการในเวลาทางดาราศาสตร์ t ดังนั้น t = t k และ x = x k, k =1, ..., n เป็นช่วงเวลาคงที่ของการสังเกตและค่าที่สอดคล้องกันของ กระบวนการระบุ มีมากมายที่แตกต่างกัน วิธีการทางคณิตศาสตร์ทำให้สามารถสร้างเส้นโค้งที่ผ่านจุดต่างๆ (t k, Xk) หรือ "แนวทางที่ดีที่สุด" ไปยังจุดเหล่านั้นได้ ฟังก์ชัน x = x(t) ที่ได้รับในลักษณะนี้ทำให้เกิดความรู้สึกในใจของเราว่ากระบวนการที่พิจารณานั้นขึ้นอยู่กับการเคลื่อนที่ทางกลของเทห์ฟากฟ้า ดังนั้นสถานะของมันจึงแสดงออกมาผ่านเวลาทางดาราศาสตร์ t ข้อสรุปนี้สามารถนำมาพิจารณาได้ หากไม่มีปัญหาคงที่เกิดขึ้นเมื่อพยายามทำนายแนวทางต่อไปของกระบวนการ สำหรับกระบวนการต่างๆ จำนวนมากที่ไม่เกี่ยวข้องโดยตรงกับการเคลื่อนที่ทางกลของเทห์ฟากฟ้า การทำนายทางทฤษฎีที่ได้รับโดยใช้ฟังก์ชัน x = x(t) นอกช่วงการสังเกตจะเริ่มเบี่ยงเบนไปจากข้อมูลการทดลองที่ตามมาอย่างมีนัยสำคัญ พวกเขามักจะพยายามอธิบายสาเหตุของความแตกต่างระหว่างทฤษฎีและการทดลองโดยวิธีการประมวลผลที่เลือกไม่สำเร็จ แต่นี่อาจไม่ใช่สาระสำคัญของเรื่องนี้
กระบวนการใด ๆ ที่เราสนใจเกิดขึ้นในจักรวาล เขา "สัมผัส" อย่างแน่นอนถึงอิทธิพลของการเคลื่อนที่ของเทห์ฟากฟ้า อย่างไรก็ตาม อิทธิพลนี้อาจกลายเป็น "ไม่เข้มงวด" และไม่สามารถกำหนดได้ โดยเฉพาะอย่างยิ่งสิ่งนี้สามารถประจักษ์ได้ในความจริงที่ว่าในช่วงเวลาหนึ่งทางดาราศาสตร์สถานะของกระบวนการยังคงไม่เปลี่ยนแปลง ในเรื่องนี้ ให้เรานึกถึงตัวอย่างที่ให้มาก่อนหน้านี้ด้วยการปิด ห้องว่าง,แยกตัวออกจากโลกภายนอก ปล่อยให้มีเพียงหนึ่งสดบินเข้ามาในห้อง ในช่วงหลายวัน การเปลี่ยนแปลงสถานะของระบบ "room-fly" จะขึ้นอยู่กับการเคลื่อนที่ของแมลงวัน เนื่องจากไม่สามารถคาดหวังการเปลี่ยนแปลงสถานะของห้องได้ ในเวลาเดียวกัน เป็นเรื่องยากที่จะจินตนาการว่าพฤติกรรมของแมลงวันมีความเชื่อมโยงอย่างเคร่งครัดกับวิถีทางดาราศาสตร์
หลังจากที่พูดนอกเรื่องมายาวนาน เรามาอธิบายอัลกอริทึมสำหรับการคำนวณเวลาของกระบวนการกันดีกว่า
ในอัลกอริทึมนี้ หน่วยสำหรับการคำนวณค่าสูงสุดเฉพาะจุดจะถูกเลือกเป็นหน่วยวัดเวลาตามธรรมชาติ นอกจากนี้ ส่วนที่เป็นไปได้ของสถานะคงที่ของกระบวนการจะถูกนำมาพิจารณาด้วย ซึ่งตามที่ระบุไว้ก่อนหน้านี้ เวลาที่เหมาะสมจะหยุดลง เนื่องจากการระบุตัวตนของสองสถานะสามารถพูดได้ภายในขอบเขตความแม่นยำของการวัดเท่านั้น ในสิ่งที่ตามมาด้วยจำนวนบวกที่แน่นอน e จึงถูกนำมาใช้ - ข้อผิดพลาดในการวัดที่อนุญาต
ดังนั้น ข้อมูลอินพุตสำหรับอัลกอริธึมคือจำนวนธรรมชาติ n, จำนวนบวก 8, อาร์เรย์ (tk) และ (x k), k = 1, ..., n เพื่อความสะดวกในการเขียนโปรแกรม อัลกอริธึมจึงถูกนำเสนอในรูปแบบ ของสี่โมดูลที่ดำเนินการตามลำดับ
โมดูล 1โดยใช้ข้อมูล p, e, t k), (x k) ในกรณีทั่วไป สร้างอาร์เรย์ใหม่ 7 = (7+ X = (X t) และอาร์เรย์ประกอบที่เจาะจงมาก P = (?) โดยที่ 1 = 1 ..., เสื้อ และ ต<Сп. Основное назначение этого модуля -- выявление в массиве x k) последовательностей идентичных состояний процесса, сохранение первых элементов в таких последовательностях и удаление всех остальных и, наконец, уменьшение по определенному, правилу исходного интервала наблюдения от t до на сумму тех промежутков времени, в которых процесс протекает стационарно.
โมดูล 1 ประกอบด้วยขั้นตอนต่อไปนี้:
พี: = 1, เสื้อ: = 0, เค: = 1
ในหน้า มีการแนะนำตัวนับ 1, 2 ที่มีค่าเริ่มต้นเฉพาะ:
ในหน้า 3, 4 ค่าตัวนับเพิ่มขึ้น 1
ตรวจเช็คสภาพ k^n. หากเสร็จแล้วให้ไปที่ขั้นตอนที่ 6 หรือไปที่ขั้นตอนที่ 11
ตรวจสอบความไม่เท่าเทียมกัน x k --x k = e หากเป็นเช่นนั้น ให้ไปที่ขั้นตอนที่ 7 หรือไปที่ขั้นตอนที่ 9
7. tii = ti - (tkl - tk), i = k1, ..., p.
ขั้นตอนนี้หมายความว่าหากค่าของ Xk และ Xk 1 ไม่สามารถแยกความแตกต่างได้ภายในข้อผิดพลาด จากนั้นเวลาทั้งหมดที่เริ่มต้นจาก tk จะลดลงตามจำนวน tki-tk
ร = ร. กลับไปที่จุดที่ 4
ทีวี = เสื้อ ; X โวลต์:=x k ; p = p v = v+l. เช่น องค์ประกอบของอาร์เรย์ T, X, P ถูกสร้างขึ้นและกำหนดค่า v ถัดไป
- 10. นำ (t k, ..., t n AND (Xk, - X n) เป็นอาร์เรย์ดั้งเดิมของมิติ n--k 1 + 1 แล้วกลับสู่ขั้นตอนที่ 2
- 11. พิมพ์ m, (T), (X,) และ (P,) โดยที่ i = l, ..., t
ให้เราอธิบายความหมายขององค์ประกอบของอาร์เรย์ P ที่มาคู่กัน จากข้อความที่แล้วตามมาว่าค่าของ pk เท่ากับจำนวนขององค์ประกอบของอาร์เรย์ (xk) ที่ตามมาโดยตรงและแตกต่างจาก x pi+ ... +, + น้อยกว่า e เรายังสังเกตด้วยว่า pi+ ... +p m = n
ตัวอย่างที่ 1 ให้ไว้: n = 20, (/*) = (2, 4, 7, 10, 12, 13, 15, 17, 20, 22, 24, 25,
- 27, 30, 32, 33, 34, 35, 36) และ (x,)= (4, 4, 6, 6, 6, 3, 2, 4, 3, 3, 3, 2, 2, 4, 5 , 5,
- 5, 4, 3) ดูภาพประกอบ 9, ก.
จากการดำเนินการโมดูล 1 จะได้ m = 11
(ช) = (2, 3, 4, 6, 8, 11, 1-2, 15, 17, 18, 19); (X,) = (4, 6, 3, 2, 4, 3, 2, 4,5,4,3)
ผม(ง.) = (2, 4, 1, 1, 1.3, 2, 1.3, 1, 1) ดูภาพประกอบ 9 บี
โมดูล 2ข้อมูลอินพุตเป็นตัวเลขธรรมชาติ m เช่นเดียวกับอาร์เรย์ (7+ (X L), = 1, ..., m โมดูลนี้ในอาร์เรย์ (TJ ระบุช่วงเวลา [TM a], 1 = 1 ม. (มล ตัวอย่างที่ 2 ค่า m, (Ть) และ (X,] ถูกยืมมาจากตัวอย่างก่อนหน้า หลังจากจบโมดูล 2 แล้ว เราจะได้ ml = 3, m2 = 8, (Ш,) = (3, 8, 17 ), (Т*) = (3, 4, 6, 8, 11, 12, 15, 17) โปรดดูรูปที่ 9 ข. โมดูล 3ป้อนข้อมูล ml, m2, (TM n), 1 = 1, ..., ml, (G*), /2 = 1, ..., gn2 โมดูลนี้ได้รับการออกแบบเพื่อสร้างอาร์เรย์ (t(-r) โดยใช้สูตร ทีวี 6 อยู่ที่ไหน [TMp, TMn+i] ตัวแปร t คือเวลาที่เหมาะสมที่เกิดจากการเปลี่ยนแปลงของตัวแปร x การวัดตามธรรมชาติของมันคือหน่วยในการคำนวณค่าสูงสุดเฉพาะจุด ตัวอย่างที่ 3 ข้อมูลเริ่มต้นสำหรับ T 2) เหมือนกับค่า ml, m2 ITM และในตัวอย่างที่ 2 . หลังจากการคำนวณที่เหมาะสมแล้ว เราจะได้ Н = (0; 0.2; 0.6; 1;
1,33; 1,78; 2). โมดูล 4สร้างผลลัพธ์ของผลลัพธ์โดยสร้างความสอดคล้องระหว่างค่าของ m และองค์ประกอบ x จากอาร์เรย์ (xk) ตัวอย่างที่ 4 จากข้อมูลจากตัวอย่างที่ 2 และ 3 ผลลัพธ์ต่อไปนี้จะถูกสร้างขึ้น ดูรูปที่ 9 ใน: เสื้อ: 0; 0.2; 0.6; 1; 1.33; 1.44; x: 6; 3; 2; 4; 3T 0 2; ดังนั้น อัลกอริธึมที่ได้รับการพิจารณาช่วยให้เราสามารถพัฒนาแนวคิดเกี่ยวกับเวลาของกระบวนการโดยอิงตามข้อมูลเกี่ยวกับการเปลี่ยนแปลงในสถานะของกระบวนการที่บันทึกไว้ตามมาตราส่วนเวลาทางดาราศาสตร์ ค่อนข้างชัดเจนว่าคุณสามารถใช้อัลกอริธึมอื่นๆ ได้ เช่น ในการคำนวณลำดับของค่าต่ำสุดเฉพาะที่หรือลำดับผสมที่ประกอบด้วยค่าสูงสุดและค่าต่ำสุดเฉพาะ เมื่อประมวลผลข้อมูลการทดลอง ควรทดสอบตัวเลือกต่างๆ หากผู้ทดลองเลือกเวลาที่เหมาะสมอย่างใดอย่างหนึ่งและรับอาร์เรย์ (t4 และ (xk)) ด้วยเหตุผลบางประการ ในขั้นต่อไปเขาควรใช้วิธีทางคณิตศาสตร์บางอย่างเพื่อประมาณคะแนนการทดลอง (t*, x) ด้วยเส้นโลกโดยประมาณ ของกระบวนการ x = x(t) โดยการประมาณค่าเส้นนี้เกินช่วงสังเกตเริ่มแรก เขาสามารถคาดการณ์เกี่ยวกับเส้นทางต่อไปของกระบวนการได้ เป็นเรื่องน่าสนใจที่จะกล่าวถึงการทดลองทางคอมพิวเตอร์ที่มีจุดมุ่งหมายเพื่อประเมินโอกาสในการใช้อัลกอริทึมที่เสนอ เลือกข้อมูลเกี่ยวกับการไหลของแม่น้ำประจำปีเป็นวัสดุทดลอง Vakhsh (ทาจิกิสถาน) ในรอบ 40 ปีที่ผ่านมา ในช่วงเวลาเดียวกันนั้น ข้อมูลได้ถูกนำไปใช้เกี่ยวกับพลวัตของเลขหมาป่า ซึ่งเป็นดัชนีรวมของกิจกรรมสุริยะที่ใช้กันมากที่สุด อย่างหลังเป็นพื้นฐานสำหรับการพัฒนาเวลาที่เหมาะสมของกระบวนการกิจกรรมแสงอาทิตย์ ในยุคปัจจุบัน ข้อมูลเกี่ยวกับค่าใช้จ่ายในแม่น้ำได้รับการเปลี่ยนแปลง Vakhsh และในช่วงระยะเวลาการสังเกต ทฤษฎีจะขึ้นอยู่กับการไหลของน้ำตามฟังก์ชันของเวลาที่เหมาะสมของกิจกรรมสุริยะ คุณลักษณะเฉพาะของกราฟผลลัพธ์คือพฤติกรรมที่เกือบจะเป็นระยะของค่าใช้จ่ายสูงสุดและต่ำสุด อย่างไรก็ตามต้นทุนไม่คงที่ (เวลาจากการทำงานจะไม่ได้รับการสนับสนุนจนกว่าจะเริ่มดำเนินการกับทรัพยากรในช่วงแรก) การย่อเล็กสุด ความล่าช้าหรือ เวลาตอบสนอง(รวมเวลาจากการทำงานจนกว่าจะเสร็จสิ้นในกรณีของกิจกรรมเป็นระยะ หรือจนกว่าระบบจะตอบสนองและมอบทางออกให้กับผู้ใช้คนแรกในกรณีของกิจกรรมเชิงโต้ตอบ) หรือการเพิ่มประสิทธิภาพสูงสุด ความยุติธรรม(เวลา CPU ที่เท่ากันสำหรับแต่ละกระบวนการ หรือเวลาที่สอดคล้องกันโดยทั่วไปมากกว่านั้นตามลำดับความสำคัญและปริมาณงานของแต่ละกระบวนการ) ในทางปฏิบัติ เป้าหมายเหล่านี้มักจะขัดแย้งกัน (เช่น ปริมาณงานเทียบกับเวลาแฝง) ดังนั้นผู้จัดกำหนดการจะสร้างการแลกเปลี่ยนที่เหมาะสม การตั้งค่าจะวัดจากปัญหาใดๆ ที่กล่าวถึงข้างต้น ขึ้นอยู่กับความต้องการและวัตถุประสงค์ของผู้ใช้ ใน AIX เวอร์ชัน 4 มีการตั้งค่าที่เป็นไปได้สามแบบสำหรับนโยบายการกำหนดตารางเวลาเธรด: เธรดเป็นที่สนใจหลักของแอปพลิเคชันที่ปัจจุบันประกอบด้วยกระบวนการอะซิงโครนัสหลายกระบวนการ แอปพลิเคชันเหล่านี้สามารถกำหนดภาระงานเบาบนระบบได้หากแปลงเป็นโครงสร้างแบบมัลติเธรด บ่อยครั้งที่นักพัฒนา โดยเฉพาะผู้ที่ไม่มีประสบการณ์ มักจะสับสนเมื่อถูกขอให้กำหนดกำหนดเวลาในการทำงานให้เสร็จสิ้น อย่างไรก็ตาม ความสามารถในการวางแผนเป็นทักษะที่มีประโยชน์และจำเป็นซึ่งไม่เพียงช่วยในการทำงานเท่านั้น แต่ยังช่วยในชีวิตด้วย เราตัดสินใจถามผู้เชี่ยวชาญว่าจะเรียนรู้วิธีการวางแผนอย่างถูกต้องและส่งมอบโครงการตรงเวลาได้อย่างไร บทสรุปสั้น ๆ สามารถพบได้ในตอนท้ายของบทความ นักพัฒนามักจะต้องคำนึงถึงพารามิเตอร์หลายตัวพร้อมกันเพื่อประมาณเวลาที่ใช้ในการทำงานให้เสร็จสิ้น: หากต้องการเรียนรู้วิธีประมาณกำหนดเวลางานอย่างเพียงพอ คุณต้องฝึกฝนอย่างต่อเนื่อง ในช่วงเริ่มต้นของงาน ฉันทำสิ่งนี้ทุกประการ: ฉันประมาณเวลาในการทำงานที่เข้ามาให้เสร็จสิ้น แม้ว่าจะไม่มีใครต้องการก็ตาม จากนั้นดูว่าฉันสามารถจัดการได้อย่างแม่นยำเพียงใดเพื่อประเมินผล ในขณะที่ทำงานเสร็จ เขาสังเกตว่าการกระทำใดใช้เวลานานกว่านั้น หากมีสิ่งใดทำให้ระยะเวลาเพิ่มขึ้นอย่างมาก ฉันจำช่วงเวลานี้และนำมาพิจารณาในการประเมินครั้งถัดไป ในการประเมินอย่างเป็นกลางเกี่ยวกับเวลาที่จำเป็นสำหรับการทำงานโดยเฉพาะ ควรเพิ่มระยะขอบเล็กน้อยเพื่อให้ครอบคลุมสถานการณ์เหตุสุดวิสัย มักได้รับการประเมินเป็นเปอร์เซ็นต์ของความสำเร็จของงานหลัก แต่จะแตกต่างกันไปสำหรับทุกคน บางคนบวก 20% ของเวลา บางคน 10% และบางส่วน 50% นอกจากนี้ยังเป็นประโยชน์ในการวิเคราะห์สาเหตุของการพลาดกำหนดเวลาหลังจากการละเมิดกำหนดเวลาที่ร้ายแรงแต่ละครั้ง หากคุณขาดคุณสมบัติ คุณจะต้องแก้ไขจุดอ่อนของตนเอง หากปัญหาเป็นเรื่องขององค์กร ให้ทำความเข้าใจว่าอะไรขัดขวางไม่ให้ทำงานได้ตามปกติ เลื่อนตำแหน่ง บทความจำนวนมากมีไว้สำหรับวิธีการประเมินความเข้มข้นของแรงงานของโครงการ รวมถึงระยะเวลาของงานและงานแต่ละงาน อย่างไรก็ตามสิ่งนี้ยังคงทำให้เกิดความขัดแย้งทั้งภายในทีมงานโครงการและในการสื่อสารกับลูกค้า ผู้ช่วยหลักในการประเมินคือประสบการณ์ ลองเปรียบเทียบงานใหม่กับงานที่ทำไปแล้ว หากคุณกำลังจัดทำรายงาน ให้ดูว่ารายงานที่คล้ายกันนี้ใช้เวลานานเท่าใดในอดีต หากคุณกำลังทำอะไรใหม่ๆ ลองแบ่งมันออกเป็นส่วนที่ทราบแล้วประเมินผล ถ้างานนี้เป็นงานใหม่ ให้แบ่งเวลาไว้เพื่อศึกษา (ให้ดียิ่งขึ้น ให้ประสานงานในครั้งนี้กับบุคคลที่กำหนดงาน) โปรดใส่ใจกับขั้นตอนต่อไปนี้ - หากคุณต้องการพัฒนาบริการ การประเมินจะต้องรวมการทดสอบหน่วยด้วย (และอาจไม่ใช่แค่การทดสอบหน่วยเท่านั้น) การจัดเตรียมข้อมูลการทดสอบจะใช้เวลาระยะหนึ่ง คุณควรพิจารณาบูรณาการกับบริการอื่น ๆ เป็นต้น ให้เวลาในการแก้ไขข้อบกพร่องที่คุณพบด้วยตนเองหรือด้วยความช่วยเหลือจากผู้ทดสอบ อาจเสียเวลาไปมากกับงานที่ "มองไม่เห็น" ตัวอย่างเช่น มีการประเมินเพื่อการพัฒนาและมีการประเมินเพื่อการทดสอบ แต่การถ่ายโอนสิ่งประดิษฐ์เพื่อการทดสอบอาจเกี่ยวข้องกับการปรับใช้แท่น ดังนั้นจึงเป็นสิ่งสำคัญที่จะต้องเห็นภาพกระบวนการทั้งหมดด้วยจิตใจเพื่อไม่ให้พลาดสิ่งใด หลังจากพิจารณาความซับซ้อนแล้ว จำเป็นต้องรวมงานใหม่ลงในปฏิทิน โดยไม่ลืมงานและกิจกรรมอื่นๆ ที่ดำเนินไปพร้อมๆ กัน และอย่าลืมว่าแผนนั้นไร้ประโยชน์ แต่การวางแผนนั้นประเมินค่าไม่ได้ เรียนรู้ที่จะปรับเปลี่ยนแผนในเวลาที่เหมาะสม แจ้งให้ทุกคนที่เกี่ยวข้องทราบ และเพิ่มระดับในเวลาที่เหมาะสมเพื่อไม่ให้พลาดกำหนดเวลาจะไม่สร้างความประหลาดใจให้กับใครๆ เลื่อนตำแหน่ง คำถามที่ไม่สามารถตอบแบบสั้นได้ ถ้ามันง่าย ปัญหาเรื่องกำหนดเวลาที่ขาดหายไปก็จะไม่มีอยู่จริง เพื่อให้คาดการณ์กำหนดเวลาการพัฒนาได้มากขึ้น เราต้องเข้าใจก่อนว่าทำไมโปรแกรมเมอร์จึงทำผิดพลาดตลอดเวลา เหตุผลแรกก็คืองานส่วนใหญ่ที่โปรแกรมเมอร์ทำนั้นมีเอกลักษณ์เฉพาะตัวในระดับหนึ่งหรืออย่างอื่น นั่นเป็นไปได้มากว่าโปรแกรมเมอร์จะทำงานที่คล้ายกันเป็นครั้งแรก เขาไม่รู้ว่างานนี้จะใช้เวลานานแค่ไหน หากนี่คือโปรแกรมเมอร์ที่มีประสบการณ์สูงและต้องทำงานที่คล้ายกัน การประเมินของเขาจะใกล้เคียงกับความเป็นจริงมากขึ้น ลองใช้การเปรียบเทียบง่ายๆ - หากคุณไม่เคยขุดคูน้ำ คุณจะไม่สามารถบอกได้อย่างแน่ชัดว่าจะใช้เวลาขุดคูน้ำกว้าง 30 ซม. ลึก 60 ซม. และยาว 20 ม. นานแค่ไหน หากคุณเคยขุดมาก่อน เวลาทำงานโดยประมาณจะใกล้เคียงกับระยะเวลาจริงของงานมากขึ้น เหตุผลที่สองคือโปรแกรมเมอร์เป็นคนมองโลกในแง่ดีโดยธรรมชาติ นั่นคือเมื่อพิจารณางาน เลือกตัวเลือกการใช้งาน และประเมินการปรับปรุง นักพัฒนาคาดหวังว่าทุกอย่างจะทำงานได้ตามที่เขาคาดหวัง และเขาไม่คิดถึงปัญหาที่เขาจะต้องเจอระหว่างทาง บ่อยครั้งเขาไม่สามารถคาดเดาได้ ตัวอย่างเช่น มีงานที่โปรแกรมเมอร์สามารถใช้งานได้โดยใช้ไลบรารีซอฟต์แวร์โอเพ่นซอร์สของบุคคลที่สาม ในขั้นตอนการประเมิน เขาพบมันบนอินเทอร์เน็ต อ่านคำอธิบาย - มันเหมาะกับเขา และเขายังประมาณปริมาณงานที่เขาต้องทำเพื่อสร้างในการใช้ห้องสมุดนี้ได้อย่างถูกต้องอีกด้วย แต่เขาไม่ได้คาดการณ์เลยว่าจะเกิดข้อผิดพลาดในไลบรารีนี้ในสภาพแวดล้อมของผลิตภัณฑ์ซอฟต์แวร์ของเขา นักพัฒนาจะต้องไม่เพียงแต่สร้างการใช้ไลบรารีลงในโค้ดของเขาเท่านั้น แต่ยังต้องแก้ไขข้อบกพร่องในไลบรารีด้วย และบ่อยครั้งที่นักพัฒนาไม่ได้ให้เวลาในการแก้ไขข้อผิดพลาดของเขา สถิติแสดงให้เห็นว่าการทดสอบและแก้ไขข้อผิดพลาดอาจใช้เวลาประมาณ 50% ของเวลาที่ใช้ในการเขียนโค้ด ตัวเลขดังกล่าวขึ้นอยู่กับคุณสมบัติของนักพัฒนา สภาพแวดล้อม และแนวทางปฏิบัติในการพัฒนาที่ใช้ (เช่น การทดสอบหน่วยจะช่วยลดเวลานี้ลงอย่างมาก และระยะเวลาสุดท้าย/ความเข้มข้นของแรงงานของงานการพัฒนาจะน้อยลง) หากเรากลับไปสู่การเปรียบเทียบกับผู้ขุด ผู้ขุดไม่คาดคิดว่าพลั่วจะหัก และเขาต้องใช้เวลาสองชั่วโมงในการหากิ่งใหม่ เหตุผลที่สามคือข้อกำหนดที่ไม่คาดฝัน ไม่มีการผลิตวัสดุในด้านอื่นใดที่ลูกค้าชื่นชอบการเปรียบเทียบการพัฒนาซอฟต์แวร์จึงมีข้อกำหนดใหม่ ๆ มากมายหรือไม่ ลองนึกภาพทางเดินของผู้ขุดที่ขุดลึก 19 เมตรจากทั้งหมด 20 เมตร และได้ยินจากลูกค้าว่าขอให้ขุดคูน้ำไม่ให้เป็นเส้นตรง แต่ให้วิ่งเป็นงูที่มีความยาวแขน 97 เซนติเมตร จะจัดการกับทั้งหมดนี้อย่างไรและจะใช้ชีวิตในสภาวะที่ไม่แน่นอนดังกล่าวได้อย่างไร? ลดความไม่แน่นอนและสร้างเวลาสำรอง วิธีที่ง่ายที่สุดในการทำให้ความคาดหวังของคุณเข้าใกล้ความเป็นจริงมากขึ้นคือการใช้กฎง่ายๆ ของ Pi เมื่อได้รับค่าประมาณจากนักพัฒนา (ในแง่ของเวลาหรือความเข้มข้นของแรงงาน) คุณต้องคูณด้วย Pi (= 3.14159) ยิ่งนักพัฒนาซอฟต์แวร์มีประสบการณ์มากในการประเมิน อัตราส่วนนี้ก็จะยิ่งต่ำลง การฝึกแยกปัญหาเดิมออกเป็นงานเล็กๆ โดยใช้เวลาไม่เกิน 4 ชั่วโมง ยิ่งการสลายตัวมีรายละเอียดมากเท่าใด โอกาสที่การประมาณการจะใกล้เคียงกับความซับซ้อน/ระยะเวลาจริงก็จะยิ่งมากขึ้นเท่านั้น เพื่อสรุปโดยย่อเพื่อกำหนดกำหนดเวลาในการทำงานให้เสร็จสิ้นอย่างถูกต้องการดำเนินการต่อไปนี้จะมีประโยชน์: โปรดจำไว้ว่าหากข้อเท็จจริงเกินประมาณการของคุณ 30% นี่เป็นผลลัพธ์ที่ดีมาก เลื่อนตำแหน่ง เพื่อการประเมินที่แม่นยำที่สุด คุณต้องมีประสบการณ์ในการพัฒนาจริง และโดยเฉพาะในด้านเฉพาะ แต่ยังมีกฎทั่วไปที่จะช่วยให้คุณหลีกเลี่ยงข้อผิดพลาดในการวางแผนและปัญหาในการส่งมอบงานให้กับลูกค้า ฉันจะอธิบายกฎเหล่านี้เช่นนี้ ก่อนอื่นคุณต้องเข้าใจปัญหาก่อน สิ่งนี้ดูเหมือนชัดเจนและไม่เกี่ยวข้องโดยตรงกับการประมาณเวลา แต่จริงๆ แล้ว มันเป็นประเด็นสำคัญ แม้แต่ในโครงการขนาดใหญ่ที่จริงจัง หนึ่งในปัจจัยหลักของความล้มเหลวและความล่าช้าก็คือปัญหาในการกำหนดข้อกำหนด สำหรับนักพัฒนามือใหม่ น่าเสียดายที่นี่เป็นปัญหาร้ายแรง - พวกเขาไม่ได้อ่านข้อกำหนดทางเทคนิคหรืออ่านและทำความเข้าใจอย่างเฉพาะเจาะจง (จากสิบคะแนน พวกเขาจำได้และทำครบห้าข้อ และจำส่วนที่เหลือเมื่อส่งผลลัพธ์) เป็นที่ชัดเจนว่างานที่เข้าใจผิดไม่สามารถดำเนินการได้อย่างถูกต้องตรงเวลา ต่อไปคือการประมาณเวลาในการพัฒนานั่นเอง ลักษณะเฉพาะของการเขียนโปรแกรมคือไม่มีงานที่เหมือนกันทุกประการ สิ่งนี้ทำให้งานของเราน่าสนใจยิ่งขึ้น แต่การประมาณกำหนดเวลานั้นยากกว่า การสลายตัวทำงานได้ดีที่นี่เช่น การแบ่งปัญหาที่ซับซ้อนและไม่ซ้ำกันออกเป็นลำดับงานย่อยเล็กๆ ที่คุ้นเคย และแต่ละรายการสามารถประเมินได้ภายในเวลาไม่กี่ชั่วโมงอย่างเพียงพอ มาบวกค่าประมาณของงานย่อยและรับค่าประมาณสำหรับงานทั้งหมดกันดีกว่า ตามกฎแล้วการประมาณการดังกล่าวจะรวมเฉพาะค่าใช้จ่ายในการเขียนโค้ดเท่านั้น แน่นอนว่านี่คือส่วนที่สำคัญที่สุดของการพัฒนา แต่ยังห่างไกลจากส่วนเดียว (และมักไม่ใหญ่โตที่สุด) ความสำเร็จของงานยังรวมถึงการอ่านและชี้แจงข้อกำหนด การประชุมกับเพื่อนร่วมงานหรือลูกค้า การดีบักและการทดสอบ การจัดทำเอกสาร การส่งมอบผลลัพธ์ (การสาธิตให้ลูกค้าเห็น และการแก้ไขที่เป็นไปได้ตามความคิดเห็นของเขา) ประสบการณ์เท่านั้นที่จะบอกคุณได้อย่างชัดเจนว่าจะใช้เวลานานแค่ไหนในการดำเนินการเหล่านี้ให้เสร็จสิ้น ในตอนแรก อย่างน้อยที่สุดก็เป็นสิ่งสำคัญที่จะไม่ลืมที่จะนำมาพิจารณาในการคำนวณ และคุณสามารถขอประมาณเวลาโดยประมาณจากเพื่อนร่วมงานที่มีประสบการณ์มากกว่าได้ ดังนั้นเราจึงประมาณค่าแรงสำหรับการเขียนโค้ดเพิ่มประมาณการต้นทุนของงานเพิ่มเติม - และเราได้รับเวลาประมาณที่จำเป็นในการทำงานให้เสร็จสิ้น แต่นั่นไม่ใช่ทั้งหมด! คุณต้องระบุวันที่เสร็จสิ้นตามแผนสำหรับงาน อาจเป็นความผิดพลาดที่จะหารค่าแรง (เป็นชั่วโมง) ด้วย 8 ชั่วโมงแล้วบวกเข้ากับวันที่ปัจจุบัน ในทางปฏิบัติจริง Developer ไม่เคย (โอเค แทบไม่เคย) ทำงาน 100% ของเวลากับงานใดงานหนึ่งโดยเฉพาะเลย คุณจะใช้เวลากับงานอื่นอย่างแน่นอน - สำคัญ แต่ไม่เกี่ยวข้องโดยตรงกับงานหลัก เช่น ช่วยเหลือเพื่อนร่วมงาน ฝึกอบรม การเขียนรายงาน เป็นต้น โดยทั่วไปเมื่อวางแผนเชื่อว่า 60-70% ของเวลาทำงานถูกใช้ไปกับการทำงานโดยตรงในโครงการปัจจุบัน นอกจากนี้ คุณต้องคำนึงถึงความล่าช้าที่อาจเกิดขึ้นซึ่งจะทำให้คุณไม่สามารถทำงานต่อไปได้ ตัวอย่างเช่น หากคุณจำเป็นต้องโต้ตอบกับผู้อื่น (เพื่อนร่วมงาน ลูกค้า) เพื่อสิ่งนี้ ให้คำนึงถึงความพร้อม ตารางงาน ฯลฯ ต่อไปนี้เป็นกฎพื้นฐานที่ในความคิดของฉัน จะช่วยให้นักพัฒนาหลีกเลี่ยงปัญหาในการประมาณและดำเนินการตามกำหนดเวลา นอกจากนี้ สิ่งสำคัญคือการสั่งสมประสบการณ์ของคุณเองทั้งในการปฏิบัติงานและในการประเมิน ตัวอย่างเช่น จะมีประโยชน์มากหลังจากเสร็จสิ้นงานในการเปรียบเทียบการประมาณการเบื้องต้นกับกำหนดเวลาจริงและสรุปผลในอนาคต และแน่นอนว่าควรศึกษาประสบการณ์ของผู้อื่นด้วย ฉันอยากจะแนะนำหนังสือในหัวข้อนี้โดย S. McConnell “โครงการซอฟต์แวร์มีค่าใช้จ่ายเท่าไร” และ S. Arkhipenkov “การบรรยายเกี่ยวกับการจัดการโครงการซอฟต์แวร์” เลื่อนตำแหน่ง เมื่อประมาณและวางแผนกำหนดเวลา คุณต้อง: เลื่อนตำแหน่ง ในบริษัทของเรา การวางแผนงานจะต้องผ่านหลายขั้นตอนเสมอ ในด้านธุรกิจ เรากำหนดเป้าหมายเชิงกลยุทธ์ 5-6 ประการสำหรับปี งานเหล่านี้เป็นงานระดับสูง เช่น การเพิ่มพารามิเตอร์บางอย่างขึ้นหลายเปอร์เซ็นต์ จากนั้น แผนกต่างๆ ของบริษัทจะกำหนดงานทางธุรกิจให้กับทีมไอทีทั้งหมด กำหนดเวลาสำหรับงานเหล่านี้จะได้รับการประเมินเบื้องต้นคร่าวๆ ซึ่งมักกำหนดโดยสมาชิกในทีมทุกคน เช่น ผู้จัดการ นักวิเคราะห์ นักพัฒนา และผู้ทดสอบ เมื่อธุรกิจได้รับการประเมินนี้แล้ว ธุรกิจจะจัดลำดับความสำคัญของงานตามเป้าหมายเชิงกลยุทธ์ของบริษัท เป้าหมายเชิงกลยุทธ์แบบตัดขวางช่วยในเรื่องนี้ เห็นได้ชัดว่าเราทุกคนทำงานเพื่อจุดประสงค์ร่วมกัน ไม่มีสถานการณ์เช่นนี้เมื่อมีคนดึงไปในทิศทางของตนเองเท่านั้น เรารวบรวมสปรินต์จากงานที่ประมาณไว้อย่างแม่นยำในแง่ของกำหนดเวลา สำหรับบางทีมจะเป็นรายไตรมาส สำหรับบางทีมจะเป็นรายเดือน สำหรับงานต่างๆ ที่จะจัดอยู่ในการวิ่งครั้งต่อไป ตามการประมาณการเบื้องต้น ทีมงานจะให้การประมาณที่แม่นยำ งานใหญ่แบ่งออกเป็นงานระดับล่าง โดยแต่ละงานมีนักแสดงเฉพาะรายเป็นผู้รับผิดชอบ และเป็นผู้ให้การประเมินที่แม่นยำ ในขั้นตอนนี้ สิ่งสำคัญคืออย่าลืมเพิ่มเวลาสำรองเพื่อแก้ไขข้อบกพร่อง เพราะเฉพาะผู้ที่ไม่ทำอะไรเลยเท่านั้นที่ไม่มีข้อผิดพลาด ทั้งเจ้าของผลิตภัณฑ์และลูกค้าธุรกิจต่างเข้าใจเรื่องนี้เป็นอย่างดี ในเวลาเดียวกัน ระยะเวลาที่ต้องการจะต้องเพียงพอ: จะไม่มีใครเข้าใจนักพัฒนาที่กำหนดเวลาสำหรับงานง่ายๆ ที่ยาวเกินไป เขาจะถูกขอให้พิสูจน์เหตุผลในการตัดสินใจ สิ่งที่ยากที่สุดคือการอธิบายให้ธุรกิจทราบว่าเหตุใดจึงต้องใช้เวลาในการปรับโครงสร้างใหม่ เรารู้สึกขอบคุณบริษัทของเราสำหรับความจริงที่ว่าบางครั้งเราก็ประสบความสำเร็จในเรื่องนี้ เพราะท้ายที่สุดแล้ว การปรับโครงสร้างใหม่จะนำไปสู่การทำให้โครงสร้างพื้นฐานง่ายขึ้นและการวางโค้ดตามลำดับ ซึ่งจะเพิ่มความเสถียรของระบบและสามารถเร่งการพัฒนาได้อย่างมาก ของฟังก์ชันใหม่ๆ บางครั้งข้อผิดพลาดในการประเมินยังคงเกิดขึ้น ในความคิดของฉัน เป็นไปไม่ได้ที่แผนกพัฒนาในบริษัทขนาดใหญ่ที่มีโครงสร้างพื้นฐานที่พัฒนาแล้วเพื่อหลีกเลี่ยงปัญหานี้โดยสิ้นเชิง ในกรณีนี้ เป็นสิ่งสำคัญที่นักพัฒนาจะต้องแจ้งให้ผู้จัดการของเขาทราบทันทีเกี่ยวกับสิ่งที่เกิดขึ้น และในทางกลับกัน เขาก็จัดการเพื่อเตือนธุรกิจและ "เล่นซ้ำ" บางสิ่งในแผนทั่วไปของบริษัท การทำงานในโหมดนี้ถูกต้องมากกว่าการพยายามทำอย่างเมามันใน 3 วันซึ่งใช้เวลา 5 วันและจากนั้นก็จมอยู่กับข้อผิดพลาดจำนวนมากที่เกิดขึ้นเนื่องจากความเร่งรีบดังกล่าว เลื่อนตำแหน่ง คำตอบที่ถูกต้องของคำถามทั้งสองส่วน [วิธีเรียนรู้วิธีการวางแผนอย่างถูกต้องและส่งมอบโครงการตรงเวลา - สีแดง.] - ประสบการณ์. ไม่มีวิธีอื่นในการ “รู้จักเซน” ตามทฤษฎีการตัดสินใจ การสรุปที่แม่นยำใดๆ สามารถสรุปได้เฉพาะจากการวิเคราะห์ข้อมูลจำนวนหนึ่งที่มีอยู่แล้วเท่านั้น และยิ่งมีข้อมูลมากเท่าใด การคาดการณ์และการประเมินขั้นสุดท้ายก็จะยิ่งแม่นยำมากขึ้นเท่านั้น ตามคำพูดของเฮอร์เบิร์ต ชอว์: “ประสบการณ์คือโรงเรียนที่มนุษย์เรียนรู้ว่าเมื่อก่อนเขาเป็นคนโง่แค่ไหน” สิ่งนี้นำไปสู่ข้อสรุปที่ค่อนข้างง่าย: หากโปรแกรมเมอร์มีประสบการณ์ที่เกี่ยวข้องกับงานที่ทำอยู่อยู่แล้ว เขาก็สามารถไว้วางใจมันได้ ถ้าไม่ เขาก็สามารถพึ่งพาประสบการณ์ของ "เพื่อนร่วมงาน" ของเขาได้ ถัดไป คุณต้องเข้าใจว่าการวางแผนกำหนดเวลาโดยตรงเป็นงานที่ผู้คนต้องรับมือได้แย่มาก โดยเฉพาะในด้านการพัฒนา เมื่อประมาณวันที่ครบกำหนด ถือเป็นแนวปฏิบัติที่ดีที่จะแนะนำ "ปัจจัยการปรับปรุง" จากการประมาณการเดิม ตัวชี้วัดนี้สามารถอยู่ในช่วง 1.5 ถึง 3 ขึ้นอยู่กับประสบการณ์ของนักพัฒนาและระดับความไม่แน่นอนของงานที่ได้รับการแก้ไขภายในโครงการ เลื่อนตำแหน่ง สิ่งสำคัญคือต้องพิจารณาปัจจัยหลายประการในการกำหนดกำหนดเวลา เช่น ประสบการณ์การทำงาน คุณเข้าใจขอบเขตของงานข้างหน้าชัดเจนแค่ไหน? คุณเคยทำอะไรแบบนี้มาก่อนหรือไม่? เห็นได้ชัดว่ายิ่งมีประสบการณ์มากเท่าไหร่งานก็จะเสร็จเร็วขึ้นเท่านั้น ข้อกำหนดทางเทคนิคที่เป็นลายลักษณ์อักษรอย่างดีมีบทบาทสำคัญในการกำหนดกำหนดเวลา สิ่งต่างๆ ในพื้นที่ของเราเป็นเรื่องยากมาก บ่อยครั้งที่ลูกค้าไม่รู้ว่าเขาต้องการอะไร ดังนั้นฉันขอแนะนำให้คุณใช้เวลาเพิ่มอีกวันหรือสองวัน แต่ขอแนวคิดที่ชัดเจนจากลูกค้าเกี่ยวกับผลลัพธ์ที่ต้องการ สิ่งสำคัญคือความเข้าใจนี้มีร่วมกัน และหลังจากนี้คุณก็สามารถเริ่มเจรจาจำนวนและเงื่อนไขได้ รวมถึงความเสี่ยงด้วยเสมอ สำหรับผู้เริ่มต้น ฉันแนะนำให้คูณเวลาโดยประมาณที่จะเสร็จสิ้นด้วยสอง ท้ายที่สุดแล้ว การส่งมอบโครงการก่อนกำหนดและเติบโตในฐานะผู้เชี่ยวชาญในสายตาของลูกค้า จะดีกว่าที่จะส่งมอบในภายหลังและทำลายชื่อเสียงของคุณ เลื่อนตำแหน่ง คำแนะนำทั่วไปคือนักพัฒนาจำเป็นต้องเรียนรู้วิธีการแบ่งแยกงานอย่างถูกต้อง มองหาข้อผิดพลาดที่อาจเกิดขึ้นอยู่เสมอ อาศัยประสบการณ์ของตนเอง และอย่าลืมเตือนลูกค้าและเพื่อนร่วมงานอย่างทันท่วงทีหากงานไม่สามารถแก้ไขได้ภายในเวลาที่กำหนด กรอบ การสร้างแผนงานที่ชัดเจนนั้นยากกว่าการกำหนดเส้นตายในการทำงานชิ้นเดียวให้สำเร็จ ในเวลาเดียวกัน สิ่งสำคัญไม่เพียงแต่จะต้องส่งมอบโครงการให้ตรงเวลาเท่านั้น แต่ยังต้องแน่ใจว่าระบบที่คุณพัฒนาสามารถแก้ไขปัญหาทางธุรกิจได้อย่างถูกต้องอีกด้วย ที่นี่ ทีมไอทีได้รับความช่วยเหลือจากวิธีการพัฒนาซอฟต์แวร์ต่างๆ ตั้งแต่ RUP และ MSF ไปจนถึง SCRUM และรูปแบบ Agile อื่นๆ ตัวเลือกเครื่องมือมีมากมาย และลูกค้าของเราจำนวนมากต้องการทราบล่วงหน้าว่าเราจะทำงานร่วมกับพวกเขาในโครงการอย่างไร หลักการใดที่เรายึดถือ อย่างไรก็ตาม หัวข้อของ Agile ในปัจจุบันมีความใกล้ชิดกับทั้งธุรกิจและแม้แต่ในแต่ละโครงการสำหรับภาครัฐ เนื่องจากหลักการของวิธีการนี้ทำให้สามารถดำเนินโครงการได้อย่างรวดเร็ว โดยจัดการความคาดหวังของลูกค้าในการวนซ้ำแต่ละครั้ง ตัวอย่างเช่น ในทีม Agile แทบไม่มีการพูดคุยกับลูกค้ายืดเยื้อเลย ลืมหน้าที่อธิบายรายละเอียดทางเทคนิคที่ไม่จำเป็นไปได้เลย เช่น ความรวดเร็วของรายการแบบเลื่อนลงที่ปรากฏ เปิดโอกาสให้ลูกค้าทดลองใช้ระบบเวอร์ชันกลาง จากนั้นคุณจะเข้าใจซึ่งกันและกันได้ง่ายขึ้นมาก ทีม Agile วางแผนทุกอย่างร่วมกันและกำหนดระดับแรงงานที่เหมาะสมที่สุดซึ่งจำเป็นสำหรับการแก้ปัญหาเฉพาะ ตัวอย่างเช่น หนึ่งในเทคนิคที่เรียกว่า "การวางแผนโป๊กเกอร์" ซึ่งผู้เข้าร่วมแต่ละคนจะประเมินค่าแรงที่จำเป็นสำหรับงานเฉพาะโดยไม่เปิดเผยตัวตน หลังจากนั้นทีมงานจะกำหนดน้ำหนักเฉลี่ยของงานตามจุดเนื้อเรื่องหรือชั่วโมงคน และกระจายงานตามหลักการ “ใครชอบอะไร” ในเวลาเดียวกัน ทุกๆ วันทีมงานจะรวมตัวกันเพื่อประชุมเป็นเวลา 15 นาที โดยทุกคนจะพูดคุยเกี่ยวกับสถานะของงานปัจจุบันของตนภายในไม่กี่นาที รวมถึงรายงานปัญหาต่างๆ ที่เกิดขึ้นด้วย ทีมงานแก้ไขปัญหาที่ตรวจพบอย่างรวดเร็ว ดังนั้นลูกค้าจึงดูขั้นตอนต่อไปของการทำงานของโปรแกรมเมอร์โดยเร็วที่สุด นักพัฒนาจะไม่ชะลอการทำงานให้เสร็จสิ้นเนื่องจากการไม่เต็มใจที่จะรบกวนทีมอีกครั้งหรือความพยายามที่ไร้ประโยชน์ที่จะคิดออกด้วยตนเองซึ่งฆ่าเวลาอันมีค่า อย่างไรก็ตาม ในสถานะเล็กๆ ดังกล่าว นักพัฒนามีความปรารถนาที่จะแสดงด้านที่ดีที่สุดของตน เพื่อแสดงให้เห็นว่าคุณเข้าถึงงานของคุณอย่างมีความรับผิดชอบ มันกระตุ้นและมีวินัยในตนเองจริงๆ อัลกอริธึมเวอร์ชันก่อนหน้าที่ถูกสลับคืออัลกอริธึมเวลาดำเนินการที่เหลืออยู่ที่สั้นที่สุด ตามอัลกอริธึมนี้ ตัวกำหนดเวลาจะเลือกกระบวนการที่มีเวลาดำเนินการเหลือสั้นที่สุดในแต่ละครั้ง ในกรณีนี้จำเป็นต้องทราบเวลาเสร็จงานล่วงหน้าด้วย เมื่องานใหม่มาถึง เวลาดำเนินการทั้งหมดจะถูกเปรียบเทียบกับเวลาดำเนินการที่เหลืออยู่ของงานปัจจุบัน หากเวลาดำเนินการของงานใหม่สั้นลง กระบวนการปัจจุบันจะถูกระงับและการควบคุมจะถูกโอนไปยังงานใหม่ โครงการนี้ช่วยให้คุณสามารถให้บริการคำขอระยะสั้นได้อย่างรวดเร็ว การวางแผนสามระดับ ระบบการประมวลผลแบบแบตช์อนุญาตให้มีการจัดกำหนดการได้สามระดับ ดังแสดงในรูป เมื่องานใหม่เข้ามาในระบบ งานเหล่านั้นจะถูกวางไว้ในคิวที่จัดเก็บไว้ในดิสก์ก่อน ทางเข้า กำหนดการเข้าถึง
เลือกงานและโอนเข้าระบบ งานที่เหลือยังคงอยู่ในคิว เมื่องานเข้าสู่ระบบแล้ว กระบวนการที่เกี่ยวข้องจะถูกสร้างขึ้น และสามารถแข่งขันเพื่อเข้าถึงโปรเซสเซอร์ได้ทันที อย่างไรก็ตาม อาจเป็นไปได้ว่ามีกระบวนการมากเกินไปและกระบวนการทั้งหมดไม่พอดีกับหน่วยความจำ จากนั้นบางกระบวนการก็จะถูกเพจออกไปยังดิสก์ การกำหนดเวลาระดับที่สองจะกำหนดว่ากระบวนการใดที่สามารถจัดเก็บไว้ในหน่วยความจำ และกระบวนการใดที่สามารถจัดเก็บไว้ในดิสก์ได้ นี่คือสิ่งที่เขาทำ กำหนดการหน่วยความจำ
. ตัวกำหนดเวลาหน่วยความจำจะดูกระบวนการบนดิสก์เป็นระยะๆ เพื่อตัดสินใจว่าจะย้ายกระบวนการใดไปยังหน่วยความจำ ในบรรดาเกณฑ์ที่ใช้โดยตัวกำหนดตารางเวลามีดังต่อไปนี้: 1. นานแค่ไหนแล้วตั้งแต่กระบวนการถูกสลับไปยังดิสก์หรือโหลดจากดิสก์? 2. กระบวนการใช้ CPU นานแค่ไหน? 3. ขนาดของกระบวนการคือเท่าใด (กระบวนการขนาดเล็กไม่รบกวน)? 4. ความสำคัญของกระบวนการคืออะไร? ระดับการกำหนดเวลาที่สามมีหน้าที่รับผิดชอบในการอนุญาตให้กระบวนการในสถานะพร้อมเข้าถึงโปรเซสเซอร์ เมื่อเราพูดถึง “ผู้จัดกำหนดการ” เรามักจะหมายถึง ตัวกำหนดเวลาซีพียู
- ตัวกำหนดเวลานี้ใช้อัลกอริธึมที่เหมาะสมกับสถานการณ์ ทั้งที่มีและไม่มีการหยุดชะงัก เราได้ดูอัลกอริธึมเหล่านี้บางส่วนแล้ว และเราจะทำความคุ้นเคยกับอัลกอริธึมอื่นๆ ในภายหลัง การวางแผนในระบบเชิงโต้ตอบ การวางแผนแบบวนรอบ หนึ่งในวิธีที่เก่าแก่ที่สุด ง่ายที่สุด ยุติธรรมที่สุด และใช้บ่อยที่สุดคืออัลกอริธึมการตั้งเวลาแบบวน แต่ละกระบวนการจะได้รับเวลาโปรเซสเซอร์จำนวนหนึ่ง ซึ่งเรียกว่าการแบ่งเวลา หากกระบวนการยังคงทำงานอยู่เมื่อสิ้นสุดการแบ่งเวลา กระบวนการนั้นจะถูกยกเลิกและการควบคุมจะถูกถ่ายโอนไปยังกระบวนการอื่น แน่นอนว่าหากกระบวนการบล็อกหรือยุติก่อนกำหนด การเปลี่ยนแปลงการควบคุมจะเกิดขึ้น ณ จุดนี้ การใช้งานการกำหนดเวลาแบบ Round-Robin นั้นง่ายดาย ตัวกำหนดตารางเวลาจำเป็นต้องรักษารายการกระบวนการให้อยู่ในสถานะพร้อมเท่านั้น เมื่อกระบวนการถึงขีดจำกัดเวลา กระบวนการจะถูกส่งไปยังจุดสิ้นสุดของรายการ แง่มุมเดียวที่น่าสนใจของอัลกอริธึมนี้คือความยาวของควอนตัม การสลับจากกระบวนการหนึ่งไปอีกกระบวนการหนึ่งต้องใช้เวลา - จำเป็นต้องบันทึกและโหลดการลงทะเบียนและแผนที่หน่วยความจำอัปเดตตารางและรายการบันทึกและโหลดแคชหน่วยความจำใหม่ ฯลฯ สามารถกำหนดข้อสรุปได้ดังนี้: ควอนตัมที่เล็กเกินไปจะนำไปสู่ การสลับกระบวนการบ่อยครั้งและประสิทธิภาพเพียงเล็กน้อย แต่ควอนตัมที่มีขนาดใหญ่เกินไปอาจส่งผลให้การตอบสนองช้าต่อคำขอเชิงโต้ตอบระยะสั้น ค่าควอนตัมประมาณ 2 0 -5 0 ms มักจะเป็นการประนีประนอมที่สมเหตุสมผล การวางแผนลำดับความสำคัญ การจัดกำหนดการแบบ Round-robin มีสมมติฐานที่สำคัญว่ากระบวนการทั้งหมดเท่าเทียมกัน ในสถานการณ์ของคอมพิวเตอร์ที่มีผู้ใช้จำนวนมาก สิ่งนี้อาจไม่เป็นเช่นนั้น ตัวอย่างเช่น ในมหาวิทยาลัย คณบดีควรได้รับการแต่งตั้งก่อน ตามด้วยอาจารย์ เลขานุการ คนทำความสะอาด และตามด้วยนักศึกษาเท่านั้น ความจำเป็นที่ต้องคำนึงถึงปัจจัยภายนอกดังกล่าวนำไปสู่การวางแผนลำดับความสำคัญ แนวคิดพื้นฐานนั้นเรียบง่าย: แต่ละกระบวนการได้รับการกำหนดลำดับความสำคัญ และการควบคุมจะถูกถ่ายโอนไปยังกระบวนการที่พร้อมซึ่งมีลำดับความสำคัญสูงสุด หลายคิว. ตัวกำหนดเวลาลำดับความสำคัญอันดับแรกๆ ถูกนำไปใช้ในระบบ CTSS (ระบบแบ่งเวลาที่ใช้ร่วมกันได้) ปัญหาหลักของระบบ CTSS คือการสลับกระบวนการช้าเกินไป เนื่องจากคอมพิวเตอร์ IBM 7094 สามารถเก็บกระบวนการเดียวในหน่วยความจำได้เท่านั้น สวิตช์แต่ละตัวหมายถึงการถ่ายกระบวนการปัจจุบันลงดิสก์ และอ่านกระบวนการใหม่จากดิสก์ นักพัฒนาของ CTSS ตระหนักได้อย่างรวดเร็วว่าประสิทธิภาพจะดีขึ้นหากกระบวนการที่จำกัดโดยโปรเซสเซอร์ได้รับการแบ่งเวลาให้ใหญ่กว่าการได้รับการแบ่งเวลาเพียงเล็กน้อย แต่บ่อยครั้ง ในอีกด้านหนึ่งสิ่งนี้จะลดจำนวนการถ่ายโอนจากหน่วยความจำไปยังดิสก์และในทางกลับกันจะทำให้เวลาตอบสนองลดลงดังที่เราได้เห็นไปแล้ว เป็นผลให้มีการพัฒนาโซลูชันที่มีคลาสลำดับความสำคัญ กระบวนการในคลาสที่มีลำดับความสำคัญสูงสุดได้รับการจัดสรรหนึ่งควอนตัม กระบวนการในคลาสถัดไปได้รับการจัดสรรสองควอนตัม กระบวนการในคลาสถัดไปได้รับการจัดสรรสี่ควอนตัม ฯลฯ เมื่อกระบวนการใช้เวลาที่ได้รับจัดสรรทั้งหมด กระบวนการจะถูกย้ายไปยังระดับที่ต่ำกว่า ระดับ. ตัวอย่างเช่น พิจารณากระบวนการที่ต้องคำนวณมากกว่า 100 ควอนตัม ขั้นแรก มันจะได้รับหนึ่งควอนตัม จากนั้นมันจะถูกปั๊มลงดิสก์ ครั้งต่อไปเขาได้รับ 2 ควอนตัม จากนั้น 4, 8,16, 32, 64 แม้ว่าจาก 64 เขาจะใช้เพียง 37 เท่านั้น ในกรณีนี้ จำเป็นต้องมีการถ่ายโอนเพียง 7 ครั้ง (รวมการโหลดเริ่มต้น) แทนที่จะเป็น 100 ซึ่งจะเป็น จำเป็นต้องใช้อัลกอริธึมแบบ Round-robin นอกจากนี้ เมื่อเข้าสู่คิวลำดับความสำคัญมากขึ้น กระบวนการจะเริ่มน้อยลงเรื่อยๆ ส่งผลให้ CPU ใช้กระบวนการสั้นลง “กระบวนการที่สั้นที่สุดคือขั้นตอนถัดไป” เนื่องจากอัลกอริธึม Shortest Task First ช่วยลดเวลาตอบสนองโดยเฉลี่ยในระบบการประมวลผลเป็นชุด เราจึงต้องการใช้อัลกอริทึมนี้ในระบบโต้ตอบเช่นกัน สิ่งนี้เป็นไปได้ในระดับหนึ่ง กระบวนการโต้ตอบส่วนใหญ่มักเป็นไปตามรูปแบบของ “การรอคำสั่ง การดำเนินการคำสั่ง การรอคำสั่ง การดำเนินการคำสั่ง...” หากคุณถือว่าการดำเนินการแต่ละคำสั่งเป็นงานที่แยกจากกัน คุณสามารถลดการตอบสนองโดยเฉลี่ยโดยรวมให้เหลือน้อยที่สุด เวลาโดยรันงานที่สั้นที่สุดก่อน ปัญหาเดียวก็คือ คือการทำความเข้าใจว่ากระบวนการรอใดที่สั้นที่สุด วิธีการหนึ่งจะขึ้นอยู่กับการประมาณความยาวของกระบวนการโดยพิจารณาจากพฤติกรรมก่อนหน้าของกระบวนการ ในกรณีนี้ กระบวนการที่มีเวลาโดยประมาณสั้นที่สุดจะเริ่มขึ้น สมมติว่าเวลาดำเนินการที่คาดหวังของคำสั่งคือ T 0 และเวลาที่คาดหวังของการรันครั้งต่อไปคือ T 1 คุณสามารถปรับปรุงการประมาณเวลาได้โดยนำผลรวมถ่วงน้ำหนักของเวลาเหล่านี้ ที่ 0 + (1 - a)T 1 . โดยการเลือกค่าที่เหมาะสมสำหรับ a เราสามารถบังคับให้อัลกอริธึมการประมาณค่าลืมเกี่ยวกับการรันครั้งก่อนๆ ได้อย่างรวดเร็ว หรือในทางกลับกัน คือการจดจำมันเป็นเวลานาน เมื่อหา = 1/2 เราจะได้ค่าประมาณแบบต่างๆ: T 0, T 0/2 + T 1/2, T 0/4 + T 1/4 + T 2/2, T 0/8 + T 1/8 + T 2/4 + T 3/2 หลังจากการวิ่งสามครั้ง น้ำหนักของ T 0 ในการประมาณการจะลดลงเหลือ 1/8 วิธีการประมาณค่าถัดไปในชุดข้อมูลโดยใช้ค่าเฉลี่ยถ่วงน้ำหนักของค่าก่อนหน้าและการประมาณค่าก่อนหน้า มักเรียกว่าการชราภาพ วิธีการนี้ใช้ได้กับหลายสถานการณ์ที่จำเป็นต้องมีการประมาณค่าจากค่าก่อนหน้า วิธีที่ง่ายที่สุดในการใช้ความชราคือที่ = 1/2 ในทุกขั้นตอนที่คุณต้องการ เพิ่มค่าใหม่ให้กับค่าประมาณปัจจุบันและหารผลรวมครึ่งหนึ่ง (เลื่อนไปทางขวา 1 บิต) รับประกันการวางแผน แนวทางการวางแผนที่แตกต่างกันโดยพื้นฐานคือการให้คำมั่นสัญญาที่แท้จริงแก่ผู้ใช้แล้วจึงดำเนินการตามนั้น ต่อไปนี้เป็นคำมั่นสัญญาที่พูดง่ายและรักษาได้ง่าย: หากคุณแชร์โปรเซสเซอร์กับผู้ใช้ n ราย คุณจะได้รับพลังของโปรเซสเซอร์ 1/n และในระบบที่มีผู้ใช้หนึ่งคนและมีตัวประมวลผล n ตัวทำงานอยู่ แต่ละตัวจะได้รับรอบตัวประมวลผล 1/n เพื่อให้บรรลุตามสัญญานี้ ระบบจะต้องติดตามการจัดสรร CPU ระหว่างกระบวนการตั้งแต่วินาทีแรกที่แต่ละกระบวนการถูกสร้างขึ้น จากนั้นระบบจะคำนวณจำนวนทรัพยากร CPU ที่กระบวนการมีสิทธิ์ได้รับ เช่น เวลานับตั้งแต่สร้างหารด้วย n ตอนนี้เราสามารถคำนวณอัตราส่วนของเวลาที่ให้กับกระบวนการต่อเวลาที่มีสิทธิได้ ค่าผลลัพธ์ 0.5 หมายความว่ากระบวนการได้รับเพียงครึ่งหนึ่งของจำนวนเงินที่จัดสรร และ 2.0 หมายความว่ากระบวนการได้รับมากเป็นสองเท่าของที่ควรจะเป็น จากนั้นจึงเริ่มกระบวนการที่มีอัตราส่วนน้อยที่สุดจนกระทั่ง มันจะไม่ใหญ่กว่าเพื่อนบ้านที่ใกล้ที่สุด การวางแผนลอตเตอรี อัลกอริธึมจะขึ้นอยู่กับการแจกจ่ายตั๋วลอตเตอรีเพื่อประมวลผลการเข้าถึงทรัพยากรต่างๆ รวมถึงตัวประมวลผล เมื่อผู้วางแผนจำเป็นต้องตัดสินใจ ลอตเตอรีจะถูกสุ่มเลือกและเจ้าของจะสามารถเข้าถึงทรัพยากรได้ ในแง่ของการเข้าถึง CPU "ลอตเตอรี" สามารถเกิดขึ้นได้ 50 ครั้งต่อวินาที โดยผู้ชนะจะได้รับเวลา CPU 20ms กระบวนการที่สำคัญกว่าสามารถได้รับตั๋วเพิ่มเติมเพื่อเพิ่มโอกาสในการชนะ หากมีตั๋วเพียง 100 ใบและ 20 ใบอยู่ในกระบวนการเดียว จะได้รับ 20% ของเวลาประมวลผล แตกต่างจากตัวกำหนดเวลาลำดับความสำคัญซึ่งเป็นเรื่องยากมากที่จะประเมินว่าลำดับความสำคัญ 40 หมายถึงอะไรในการกำหนดเวลาลอตเตอรีทุกอย่างชัดเจน แต่ละกระบวนการจะได้รับเปอร์เซ็นต์ของทรัพยากรโดยประมาณเท่ากับเปอร์เซ็นต์ของตั๋วที่มีอยู่ การวางแผนลอตเตอรีมีคุณสมบัติที่น่าสนใจหลายประการ ตัวอย่างเช่น หากในระหว่างการสร้างกระบวนการได้รับตั๋วหลายใบ โอกาสในการถูกรางวัลในลอตเตอรีครั้งต่อไปจะแปรผันตามจำนวนตั๋ว กระบวนการสื่อสารสามารถแลกเปลี่ยนตั๋วได้หากจำเป็น ดังนั้น หากกระบวนการของไคลเอ็นต์ส่งข้อความไปยังกระบวนการของเซิร์ฟเวอร์แล้วบล็อก กระบวนการดังกล่าวสามารถส่งตั๋วทั้งหมดไปยังกระบวนการของเซิร์ฟเวอร์เพื่อเพิ่มโอกาสที่เซิร์ฟเวอร์จะเริ่มทำงาน เมื่อกระบวนการเซิร์ฟเวอร์เสร็จสิ้น ก็สามารถคืนตั๋วทั้งหมดกลับมาได้ การวางแผนอย่างยุติธรรม จนถึงตอนนี้ เราได้สันนิษฐานว่าแต่ละกระบวนการได้รับการควบคุมโดยอิสระจากผู้ที่เป็นเจ้าของ ดังนั้น หากผู้ใช้ 1 สร้าง 9 กระบวนการ และผู้ใช้ 2 - 1 กระบวนการ จากนั้นใช้การกำหนดเวลาแบบ Round-robin หรือในกรณีที่มีลำดับความสำคัญเท่ากัน ผู้ใช้ 1 จะได้รับ 90% ของตัวประมวลผล และผู้ใช้ 2 เพียง 10 เท่านั้น เพื่อหลีกเลี่ยงสถานการณ์ดังกล่าว บางระบบจะให้ความสนใจกับเจ้าของกระบวนการก่อนที่จะจัดกำหนดการ ในรุ่นนี้ ผู้ใช้แต่ละคนจะได้รับส่วนแบ่งของโปรเซสเซอร์ และผู้กำหนดเวลาจะเลือกกระบวนการตามข้อเท็จจริงนี้ หากในตัวอย่างของเราผู้ใช้แต่ละคนมี สัญญา 50% ของโปรเซสเซอร์จากนั้นพวกเขาจะได้รับ 50% ของโปรเซสเซอร์โดยไม่คำนึงถึงจำนวนกระบวนการ การวางแผนในระบบเรียลไทม์ ในระบบเรียลไทม์ เวลามีบทบาทสำคัญ โดยส่วนใหญ่ อุปกรณ์ทางกายภาพภายนอกตั้งแต่หนึ่งเครื่องขึ้นไปจะสร้างสัญญาณอินพุต และคอมพิวเตอร์จะต้องตอบสนองอย่างเพียงพอภายในระยะเวลาที่กำหนด ระบบเรียลไทม์แบ่งออกเป็น ระบบเรียลไทม์อย่างหนัก
ซึ่งหมายถึงการมีกำหนดเวลาที่เข้มงวดสำหรับแต่ละงาน (ต้องปฏิบัติตาม) และ ระบบเรียลไทม์ที่ยืดหยุ่น
ซึ่งการฝ่าฝืนกำหนดเวลาเป็นสิ่งที่ไม่พึงประสงค์แต่ก็ยอมรับได้ ในทั้งสองกรณี โปรแกรมจะแบ่งออกเป็นหลายกระบวนการ ซึ่งแต่ละกระบวนการสามารถคาดเดาได้ กระบวนการเหล่านี้มักใช้เวลาสั้นและทำงานเสร็จภายในไม่กี่วินาที เมื่อสัญญาณภายนอกปรากฏขึ้น ขึ้นอยู่กับผู้จัดกำหนดการเพื่อให้แน่ใจว่ากำหนดการจะยังคงอยู่ เหตุการณ์ภายนอกที่ระบบต้องตอบสนองสามารถแบ่งออกเป็น เป็นระยะๆ(เกิดขึ้นเป็นระยะๆ) และ ไม่ใช่เป็นระยะ(เกิดขึ้นอย่างไม่คาดฝัน) อาจมีกระแสเหตุการณ์เป็นระยะๆ หลายช่วงที่ระบบต้องประมวลผล ขึ้นอยู่กับเวลาที่ใช้ในการประมวลผลแต่ละเหตุการณ์ ระบบอาจไม่สามารถประมวลผลเหตุการณ์ทั้งหมดได้ทันเวลา ข้อมูลที่เกี่ยวข้อง. การแนะนำ วัตถุประสงค์ของการประชุมเชิงปฏิบัติการเกี่ยวกับองค์กรการผลิตคือเพื่อขยายและเพิ่มพูนความรู้ทางทฤษฎีเพื่อปลูกฝังทักษะที่จำเป็นสำหรับการแก้ปัญหาที่พบบ่อยที่สุดในทางปฏิบัติเกี่ยวกับองค์กรและการวางแผนการผลิต การประชุมเชิงปฏิบัติการประกอบด้วยงานสำหรับส่วนหลักของหลักสูตร ในตอนต้นของแต่ละหัวข้อจะมีการนำเสนอคำแนะนำระเบียบวิธีสั้น ๆ และข้อมูลทางทฤษฎี ปัญหาทั่วไปพร้อมวิธีแก้ไข และปัญหาสำหรับวิธีแก้ปัญหาอิสระ การมีคำแนะนำด้านระเบียบวิธีและข้อมูลทางทฤษฎีโดยย่อในแต่ละหัวข้อทำให้คุณสามารถใช้เวิร์กช็อปนี้เพื่อการเรียนรู้ทางไกลได้ การคำนวณระยะเวลารอบการผลิต ระยะเวลาของวงจรการผลิตทำหน้าที่เป็นตัวบ่งชี้ประสิทธิภาพของกระบวนการผลิต วงจรการผลิต– ระยะเวลาการเข้าพักของวัตถุแรงงานในกระบวนการผลิตตั้งแต่ช่วงเวลาที่เปิดตัววัตถุดิบจนถึงช่วงเวลาที่ปล่อยผลิตภัณฑ์สำเร็จรูป วงจรการผลิตประกอบด้วย ชั่วโมงการทำงานในระหว่างที่มีการใช้แรงงานและ เวลาพัก- การหยุดพักขึ้นอยู่กับสาเหตุที่ทำให้เกิดสามารถแบ่งออกเป็น: 1) เปิด เป็นธรรมชาติหรือเทคโนโลยี - ถูกกำหนดโดยธรรมชาติของผลิตภัณฑ์ 2) องค์กร(หยุดพักระหว่างกะ) ระยะเวลาของวงจรการผลิตประกอบด้วยองค์ประกอบดังต่อไปนี้: ทีไซเคิล = ที+ เหล่านั้น ทีกิน + ทีทีอาร์ + ทีเคเค - ทีเดือน - ทีมทส. ที่ไหน ทีเหล่านั้น– เวลาของการดำเนินการทางเทคโนโลยี ไม่ได้กิน -เวลาของกระบวนการทางธรรมชาติ (การทำให้แห้ง การทำให้เย็นลง ฯลฯ ); ที ตร –เวลาขนส่งวัตถุแรงงาน ที เคเค -เวลาควบคุมคุณภาพ t mo –ระยะเวลาการดูแลระหว่างการผ่าตัด ทีเอ็มซี -เวลาจัดเก็บในคลังสินค้าระหว่างร้านค้า (ทีสาม ทีเคเค สามารถใช้ร่วมกับ ทีเดือน) การคำนวณรอบเวลาการผลิตขึ้นอยู่กับประเภทของการผลิต ในการผลิตจำนวนมาก ระยะเวลาของวงจรการผลิตจะถูกกำหนดตามเวลาที่ผลิตภัณฑ์อยู่ในการผลิต เช่น ทีไซเคิล = ทีในเอ็ม ที่ไหน ทีวี– ปล่อยจังหวะ; ม– จำนวนงาน ภายใต้ ปล่อยจังหวะจำเป็นต้องเข้าใจช่วงเวลาระหว่างการเปิดตัวผลิตภัณฑ์ที่ผลิตหนึ่งและผลิตภัณฑ์ถัดไป จังหวะการปล่อยถูกกำหนดโดยสูตร เสื้อ ใน = เทฟฟ์ /V, ที่ไหน เทฟ– กองทุนที่มีประสิทธิผลของเวลาคนงานสำหรับรอบระยะเวลาการเรียกเก็บเงิน (กะ วัน ปี) ใน– ปริมาณผลผลิตในช่วงเวลาเดียวกัน (ในหน่วยธรรมชาติ) ตัวอย่าง: T cm = 8 ชั่วโมง = 480 นาที; T ต่อ = 30 นาที; → เทฟฟ์ = 480 – – 30 = 450 นาที B = 225 ชิ้น; ทีใน = 450/225 = 2 นาที ในการผลิตแบบอนุกรม ซึ่งการประมวลผลดำเนินการเป็นชุด ระยะเวลาของวงจรเทคโนโลยีไม่ได้ถูกกำหนดต่อหน่วยของผลิตภัณฑ์ แต่สำหรับทั้งชุด ยิ่งไปกว่านั้น ขึ้นอยู่กับวิธีการปล่อยแบทช์เข้าสู่การผลิต เราจะได้รอบเวลาที่แตกต่างกัน การเคลื่อนย้ายผลิตภัณฑ์ในการผลิตมีสามวิธี: ตามลำดับ ขนาน และผสม (อนุกรม-ขนาน) ฉัน- ที่ ตามลำดับเมื่อชิ้นส่วนเคลื่อนที่ การดำเนินการแต่ละครั้งจะเริ่มต้นหลังจากที่ชิ้นส่วนก่อนหน้าเสร็จสิ้นแล้วเท่านั้น ระยะเวลาของวงจรสำหรับการเคลื่อนที่ตามลำดับของชิ้นส่วนจะเท่ากับ: ที่ไหน n
– จำนวนชิ้นส่วนของชุดที่กำลังดำเนินการ เสื้อชิ้นฉัน- อัตราชิ้นของเวลาในการดำเนินการ ซี ฉัน– จำนวนงานต่อ ฉันการดำเนินงาน; ม– จำนวนการดำเนินการตามกระบวนการทางเทคโนโลยี มอบชุดผลิตภัณฑ์จำนวน 5 ชิ้น แบตช์จะถูกส่งผ่านตามลำดับผ่านการดำเนินการ 4 ครั้ง ระยะเวลาของการดำเนินการครั้งแรกคือ 10 นาที ครั้งที่สองคือ 20 นาที ที่สามคือ 10 นาที ครั้งที่สี่คือ 30 นาที (รูปที่ 1) รูปที่ 1 ตวงจร = ตสุดท้าย = 5·(10+20+10+30) = 350 นาที วิธีการเรียงลำดับชิ้นส่วนที่เคลื่อนไหวมีข้อดีที่ทำให้มั่นใจได้ถึงการทำงานของอุปกรณ์โดยไม่ต้องหยุดทำงาน แต่ข้อเสียคือระยะเวลาของวงจรการผลิตในกรณีนี้จะยาวที่สุด นอกจากนี้ ยังมีการสร้างสต็อกชิ้นส่วนจำนวนมากที่ไซต์งาน ซึ่งต้องใช้พื้นที่การผลิตเพิ่มเติม ครั้งที่สอง- ที่ ขนานในระหว่างการเคลื่อนย้ายแบทช์ แต่ละชิ้นส่วนจะไม่ถูกกักไว้ที่สถานีงาน แต่จะถูกถ่ายโอนทีละรายการไปยังการปฏิบัติงานถัดไปทันที โดยไม่ต้องรอให้การประมวลผลของทั้งแบทช์เสร็จสิ้น ดังนั้น ด้วยการเคลื่อนที่แบบขนานของชิ้นส่วนชุดหนึ่ง ในสถานที่ทำงานแต่ละแห่ง การดำเนินการต่างๆ จะดำเนินการพร้อมกันในส่วนต่างๆ ของชุดเดียวกัน เวลาการประมวลผลของแบทช์ที่มีการเคลื่อนย้ายผลิตภัณฑ์แบบขนานจะลดลงอย่างรวดเร็ว: ดล .
ที่ไหน ไม่– จำนวนชิ้นส่วนใน ชุดโอน(ชุดการขนส่ง) เช่น จำนวนผลิตภัณฑ์ที่ถูกถ่ายโอนจากการดำเนินการหนึ่งไปยังอีกที่หนึ่งพร้อมกัน ความยาว – รอบการทำงานที่ยาวที่สุด เมื่อเปิดตัวผลิตภัณฑ์เป็นชุดพร้อมกัน ชิ้นส่วนของทั้งชุดจะได้รับการประมวลผลอย่างต่อเนื่องเฉพาะในสถานที่ทำงานที่การปฏิบัติงานระยะยาวเป็นไปตามระยะเวลาสั้นๆ เท่านั้น ในกรณีที่การดำเนินการระยะสั้นตามมาด้วยการดำเนินการที่ยาวนาน เช่น อีกต่อไป (ในตัวอย่างของเรา การดำเนินการครั้งที่สาม) การดำเนินการเหล่านี้จะดำเนินการไม่ต่อเนื่อง เช่น อุปกรณ์ไม่ได้ใช้งาน ที่นี่ ไม่สามารถประมวลผลชุดชิ้นส่วนได้ทันทีโดยไม่มีความล่าช้า เนื่องจากการดำเนินการก่อนหน้า (ที่ยาวนาน) ไม่อนุญาตให้ทำเช่นนี้ ในตัวอย่างของเรา: n= 5, ที 1 = 10; ที 2 = 20; ที 3 = 10; ที 4 = 30; กับ= 1. ตไอน้ำ = 1·(10+20+10+30)+(5-1)·30=70+120 = 190 นาที ลองพิจารณาแผนภาพการเคลื่อนที่แบบขนานของชิ้นส่วน (รูปที่ 2): รูปที่ 2 III- เพื่อลดการหยุดชะงักในการประมวลผลแต่ละส่วนของชุดงานในการดำเนินการทั้งหมด ให้ใช้ ขนาน-อนุกรมหรือ ผสมวิธีการเปิดตัวซึ่งชิ้นส่วน (หลังการประมวลผล) จะถูกถ่ายโอนไปยังการดำเนินการถัดไปทีละรายการ หรือในรูปแบบของชุด "การขนส่ง" (หลายชิ้น) ในลักษณะที่การดำเนินการจะไม่หยุดชะงักในสถานที่ทำงานใดๆ ในวิธีผสม ความต่อเนื่องของการประมวลผลจะถูกดึงมาจากวิธีตามลำดับ และการเปลี่ยนชิ้นส่วนจากการดำเนินการไปสู่การดำเนินการทันทีหลังจากการประมวลผลถูกนำมาจากวิธีคู่ขนาน ด้วยวิธีการเปิดตัวสู่การผลิตแบบผสมผสาน ระยะเวลาของวงจรจะถูกกำหนดโดยสูตร แกนกลาง .
คอร์อยู่ไหน – วงจรการทำงานที่สั้นที่สุด (จากการทำงานแต่ละคู่ที่อยู่ติดกัน) ม-1 –
จำนวนชุดค่าผสม หากการดำเนินการที่ตามมานั้นนานกว่าการดำเนินการก่อนหน้าหรือเท่ากัน การดำเนินการนี้จะเริ่มต้นทีละรายการทันทีหลังจากประมวลผลส่วนแรกในการดำเนินการก่อนหน้า ในทางกลับกัน หากการดำเนินการครั้งต่อไปสั้นกว่าครั้งก่อน การหยุดชะงักจะเกิดขึ้นที่นี่ระหว่างการโอนชิ้นงาน เพื่อป้องกันไม่ให้เกิดความจำเป็นต้องสะสมสำรองการขนส่งในปริมาณที่เพียงพอเพื่อให้แน่ใจว่าการทำงานในการดำเนินการครั้งต่อไป ในการค้นหาจุดนี้บนกราฟในทางปฏิบัติ จำเป็นต้องถ่ายโอนส่วนสุดท้ายของแบทช์และย้ายระยะเวลาของการดำเนินการไปทางขวา เวลาในการประมวลผลสำหรับส่วนอื่นๆ ทั้งหมดในแบทช์จะถูกพล็อตไว้ทางด้านซ้ายบนกราฟ จุดเริ่มต้นของการประมวลผลส่วนแรกบ่งบอกถึงช่วงเวลาที่ต้องโอนงานค้างในการขนส่งจากการดำเนินการก่อนหน้าไปยังการดำเนินการนี้ หากการดำเนินการที่อยู่ติดกันมีระยะเวลาเท่ากัน จะมีเพียงการดำเนินการเดียวเท่านั้นที่ถือว่าสั้นหรือยาว (รูปที่ 3) รูปที่ 3 ตคู่สุดท้าย = 5·(10+20+10+30)-(5-1)·(10+10+10) = 350-120 = 230 นาที วิธีหลักในการลดรอบเวลาการผลิตคือ: 1) การลดความเข้มข้นของแรงงานของผลิตภัณฑ์การผลิตโดยการปรับปรุงความสามารถในการผลิตของการออกแบบที่ผลิตขึ้น การใช้คอมพิวเตอร์ และการแนะนำกระบวนการทางเทคโนโลยีขั้นสูง 2) การจัดกระบวนการแรงงานอย่างมีเหตุผล การจัดและการบำรุงรักษาสถานที่ทำงานโดยอาศัยความเชี่ยวชาญและความร่วมมือ การใช้เครื่องจักรที่กว้างขวาง และระบบอัตโนมัติของการผลิต 3) ลดการหยุดพักในที่ทำงานทั้งที่วางแผนไว้และไม่ได้วางแผนไว้โดยอาศัยการใช้หลักการทางวิทยาศาสตร์ของกระบวนการผลิตอย่างมีเหตุผล 4) การเร่งปฏิกิริยาอันเป็นผลมาจากการเพิ่มความดัน อุณหภูมิ การเปลี่ยนไปสู่กระบวนการต่อเนื่อง เป็นต้น 5) ปรับปรุงกระบวนการขนส่ง การจัดเก็บ และการควบคุม และรวมเข้ากับกระบวนการแปรรูปและประกอบให้ทันเวลา การลดระยะเวลาของวงจรการผลิตถือเป็นภารกิจสำคัญอย่างหนึ่งในการจัดการการผลิตเพราะว่า ส่งผลต่อการหมุนเวียนของเงินทุนหมุนเวียน, ลดต้นทุนค่าแรง, ลดพื้นที่จัดเก็บ, ความจำเป็นในการขนส่ง เป็นต้น งาน 1 กำหนดระยะเวลาของรอบการประมวลผลของชิ้นส่วน 50 ชิ้นพร้อมประเภทการเคลื่อนที่ตามลำดับ ขนาน และอนุกรม-ขนานในกระบวนการผลิต กระบวนการประมวลผลชิ้นส่วนประกอบด้วยการดำเนินการห้าครั้งซึ่งมีระยะเวลาขั้นต่ำตามลำดับ: ที 1 =2; ที 2 =3; ที 3 =4; ที 4 =1; ที 5 = 3 การดำเนินการครั้งที่สองจะดำเนินการในเครื่องสองเครื่อง และดำเนินการแต่ละเครื่องในเครื่องเดียว ขนาดล็อตโอนมี 4 ชิ้น 2 กำหนดระยะเวลาของรอบการประมวลผลของชิ้นส่วน 50 ชิ้นพร้อมประเภทการเคลื่อนที่ตามลำดับ ขนาน และอนุกรม-ขนานในกระบวนการผลิต กระบวนการประมวลผลชิ้นส่วนประกอบด้วยการดำเนินการสี่ประการซึ่งมีระยะเวลาขั้นต่ำตามลำดับ: ที 1 =1; ที 2 =4; ที 3 =2; ที 4 = 6 การดำเนินการที่สี่จะดำเนินการในเครื่องสองเครื่องและอีกเครื่องหนึ่งดำเนินการในเครื่องเดียว ขนาดล็อตโอน 5 ชิ้น 3 ชุดชิ้นส่วน 200 ชิ้นได้รับการประมวลผลโดยมีการเคลื่อนตามลำดับแบบขนานในระหว่างกระบวนการผลิต กระบวนการแปรรูปชิ้นส่วนประกอบด้วยการดำเนินการหกครั้ง โดยมีระยะเวลาขั้นต่ำตามลำดับ: ที 1 =8; ที 2 =3; ที 3 =27; ที 4 =6; ที 5 =4; ที 6 =20. การดำเนินการที่สามจะดำเนินการในเครื่องสามเครื่อง การดำเนินการที่หกจะดำเนินการในสองเครื่อง และการดำเนินการที่เหลือแต่ละรายการในเครื่องเดียว กำหนดว่าระยะเวลาของรอบการประมวลผลสำหรับชุดชิ้นส่วนจะเปลี่ยนไปอย่างไร หากการเคลื่อนไหวในการผลิตเวอร์ชันขนานตามลำดับถูกแทนที่ด้วยการเคลื่อนไหวแบบขนาน ขนาดล็อตโอน 20 ชิ้น 4 ชุดชิ้นส่วนจำนวน 300 ชิ้นได้รับการประมวลผลโดยมีการเคลื่อนตามลำดับแบบขนานในระหว่างกระบวนการผลิต กระบวนการประมวลผลชิ้นส่วนประกอบด้วยการดำเนินการเจ็ดครั้งซึ่งมีระยะเวลาตามลำดับขั้นต่ำ: ที 1 =4; ที 2 =5; ที 3 =7; ที 4 =3; ที 5 =4; ที 6 =5; ที 7 = 6 การดำเนินการแต่ละครั้งจะดำเนินการในเครื่องเดียว ล็อตการโอน – 30 ชิ้น จากการปรับปรุงเทคโนโลยีการผลิตระยะเวลาของการดำเนินการครั้งที่สามลดลง 3 นาทีครั้งที่เจ็ด - 2 นาที พิจารณาว่ารอบการประมวลผลของชุดชิ้นส่วนเปลี่ยนแปลงไปอย่างไร 5 ให้ชุดช่องว่างประกอบด้วย 5 ชิ้น ชุดต้องผ่านการปฏิบัติการ 4 ครั้ง: ระยะเวลาของครั้งแรกคือ 10 นาที, ครั้งที่สองคือ 20 นาที, ที่สามคือ 10 นาที, ที่สี่คือ 30 นาที กำหนดระยะเวลาของวงจรโดยวิธีการวิเคราะห์และกราฟิกพร้อมการเคลื่อนไหวตามลำดับ 6 ให้ชุดช่องว่างประกอบด้วยสี่ชิ้น ชุดต้องผ่านการปฏิบัติการ 4 ครั้ง: ระยะเวลาของครั้งแรกคือ 5 นาที, ครั้งที่สองคือ 10 นาที, ที่สามคือ 5 นาที, ที่สี่คือ 15 นาที กำหนดระยะเวลาของวงจรโดยวิธีการวิเคราะห์และกราฟิกที่มีการเคลื่อนที่แบบขนาน 7 ให้ชุดช่องว่างประกอบด้วย 5 ชิ้น ชุดต้องผ่านการปฏิบัติการ 4 ครั้ง: ระยะเวลาของครั้งแรกคือ 10 นาที, ครั้งที่สองคือ 20 นาที, ที่สามคือ 10 นาที, ที่สี่คือ 30 นาที กำหนดระยะเวลาของวงจรโดยวิธีการวิเคราะห์และกราฟิกสำหรับการเคลื่อนที่แบบอนุกรม-ขนาน 8 กำหนดระยะเวลาของวงจรเทคโนโลยีในการประมวลผลชุดผลิตภัณฑ์จำนวน 180 ชิ้น ด้วยการเคลื่อนไหวแบบขนานและต่อเนื่อง สร้างกราฟกระบวนการประมวลผล ขนาดของล็อตโอนคือ 30 ชิ้น มาตรฐานเวลาและจำนวนงานในการดำเนินงานมีดังนี้OS/360 และผู้สืบทอด
เอไอเอ็กซ์
, ผู้อำนวยการฝ่ายเทคนิคศูนย์นวัตกรรมเทคโนโลยีและโซลูชั่น “เจ็ท อินโฟซิสเต็มส์”
หากเรากลับมาจัดสรรทุนสำรองครั้งนี้ควรจัดสรรเมื่อสิ้นสุดโครงการ การสำรองและรวมไว้สำหรับแต่ละงานถือเป็นแนวปฏิบัติที่ไม่ดี กฎพาร์กินสัน “งานเต็มตลอดเวลาที่ได้รับจัดสรร” ปฏิบัติตามอย่างเคร่งครัด