การเขียนโปรแกรมเชิงเส้นคืออะไร วิธีการที่ไม่ธรรมดา

หากอยู่ในปัญหา การเขียนโปรแกรมเชิงเส้นมีเพียงสองตัวแปรเท่านั้น ดังนั้นจึงสามารถแก้ไขแบบกราฟิกได้

พิจารณาปัญหาการเขียนโปรแกรมเชิงเส้นที่มีตัวแปรสองตัวและ:
(1.1) ;
(1.2)
นี่ก็มี ตัวเลขที่กำหนดเอง- งานอาจเป็นได้ทั้งการค้นหาค่าสูงสุด (สูงสุด) หรือการค้นหาค่าต่ำสุด (นาที) ระบบข้อจำกัดอาจมีทั้งป้ายและป้าย

การสร้างขอบเขตของโซลูชันที่เป็นไปได้

วิธีการแบบกราฟิกสำหรับการแก้ปัญหา (1) มีดังต่อไปนี้
ขั้นแรก เราวาดแกนพิกัดและเลือกมาตราส่วน อสมการแต่ละข้อของระบบข้อจำกัด (1.2) กำหนดครึ่งระนาบที่ล้อมรอบด้วยเส้นตรงที่สอดคล้องกัน

ดังนั้นความไม่เท่าเทียมกันประการแรก
(1.2.1)
กำหนดครึ่งระนาบที่ล้อมรอบด้วยเส้นตรง

ด้านหนึ่งของเส้นตรงนี้และอีกด้านหนึ่ง

บนเส้นตรงมาก

หากต้องการทราบว่าอสมการด้านใด (1.2.1) เราจะเลือกจุดใดก็ได้ที่ไม่อยู่บนเส้น ต่อไป เราแทนที่พิกัดของจุดนี้เป็น (1.2.1) หากความไม่เท่าเทียมกันยังคงอยู่ แสดงว่าครึ่งระนาบจะมีจุดที่เลือกไว้ หากความไม่เท่าเทียมกันไม่เกิดขึ้น แสดงว่าฮาล์ฟเพลนจะอยู่อีกด้านหนึ่ง (ไม่มีจุดที่เลือก) แรเงาครึ่งระนาบซึ่งมีความไม่เท่าเทียมกัน (1.2.1) เก็บไว้
(2)
เราทำเช่นเดียวกันกับความไม่เท่าเทียมกันของระบบที่เหลืออยู่ (1.2) ด้วยวิธีนี้เราจะได้ครึ่งระนาบที่แรเงา ประเด็นของขอบเขตของการแก้ปัญหาที่เป็นไปได้นั้นเป็นไปตามความไม่เท่าเทียมกันทั้งหมด (1.2) ดังนั้น ตามภาพแล้ว พื้นที่ของสารละลายที่ยอมรับได้ (ADA) คือจุดตัดของระนาบครึ่งระนาบที่สร้างขึ้นทั้งหมด การแรเงา ODR เป็นรูปหลายเหลี่ยมนูนที่มีใบหน้าอยู่ในเส้นตรงที่สร้างขึ้น นอกจากนี้ ODF อาจเป็นรูปร่างนูน ส่วน รังสี หรือเส้นตรงได้อย่างไม่จำกัด

หากไม่พอใจอย่างน้อยหนึ่งข้อ ให้เลือกจุดอื่น และต่อไปเรื่อย ๆ จนกระทั่งพบจุดหนึ่งซึ่งพิกัดเป็นไปตามระบบ (1.2)

การหาจุดสิ้นสุดของฟังก์ชันวัตถุประสงค์

ดังนั้นเราจึงมีขอบเขตสีเทาของวิธีแก้ปัญหาที่เป็นไปได้ (ADA) มันถูกจำกัดด้วยเส้นประที่ประกอบด้วยส่วนต่างๆ และรังสีที่เป็นของเส้นตรงที่สร้างขึ้น (2) ODS จะเป็นเซตนูนเสมอ อาจเป็นเซตที่มีขอบเขตหรือไม่มีขอบเขตตามทิศทางใดทิศทางหนึ่งก็ได้

ทีนี้เราก็หาจุดสุดโต่งได้แล้ว ฟังก์ชั่นวัตถุประสงค์
(1.1) .

เมื่อต้องการทำสิ่งนี้ ให้เลือกตัวเลขใดก็ได้และสร้างเส้นตรง
(3) .
เพื่อความสะดวกในการนำเสนอต่อไป เราถือว่าเส้นตรงนี้ผ่าน ODR บนบรรทัดนี้ ฟังก์ชันวัตถุประสงค์จะคงที่และเท่ากับ
.
เส้นตรงดังกล่าวเรียกว่าเส้นระดับฟังก์ชัน
.
เส้นตรงนี้แบ่งระนาบออกเป็นสองระนาบครึ่ง บนเครื่องบินครึ่งลำ

บนอีกครึ่งระนาบ

นั่นคือด้านหนึ่งของเส้นตรง (3) ฟังก์ชั่นวัตถุประสงค์จะเพิ่มขึ้น และยิ่งเราย้ายจุดจากเส้นตรง (3) มากเท่าไร ค่าก็จะยิ่งมากขึ้นเท่านั้น

ที่อีกด้านหนึ่งของเส้นตรง (3) ฟังก์ชั่นวัตถุประสงค์จะลดลง และยิ่งเราย้ายจุดจากเส้นตรง (3) ไปอีกด้านหนึ่งมากเท่าไร ค่าก็จะยิ่งน้อยลงเท่านั้น
.
หากเราวาดเส้นขนานกับเส้น (3) เส้นใหม่จะเป็นเส้นระดับของฟังก์ชันวัตถุประสงค์ด้วย แต่มีค่าต่างกัน
.

อาจมีกรณีที่เส้นตรงขนานกับด้านใดด้านหนึ่งของ ODR จากนั้นเส้นตรงจะลากผ่านจุดยอดสองจุดของรูปหลายเหลี่ยม ODR เรากำหนดพิกัดของจุดยอดเหล่านี้ ในการกำหนดค่าสูงสุด (ขั้นต่ำ) ของฟังก์ชันวัตถุประสงค์ คุณสามารถใช้พิกัดของจุดยอดใดๆ เหล่านี้ได้:
.
ปัญหามีทางแก้มากมายนับไม่ถ้วน วิธีแก้คือจุดใดๆ ที่อยู่ในส่วนที่อยู่ระหว่างจุด และ รวมถึงจุดและจุดนั้นด้วย

ตัวอย่างการแก้ปัญหาการเขียนโปรแกรมเชิงเส้นโดยใช้วิธีกราฟิก

สภาพปัญหา

บริษัทผลิตชุดเดรส 2 รุ่น A และ B ใช้ผ้า 3 แบบ ในการทำชุดรุ่น A หนึ่งชุด ต้องใช้ผ้าประเภทแรก 2 ม. ผ้าประเภทที่สอง 1 ม. ผ้าประเภทที่สาม 2 ม. ในการทำเดรสรุ่น B หนึ่งชุด ต้องใช้ผ้าประเภทแรก 3 ม. ผ้าประเภทที่สอง 1 ม. ผ้าประเภทที่สาม 2 ม. สต็อกผ้าประเภทแรกคือ 21 ม. ประเภทที่สอง - 10 ม. ประเภทที่สาม - 16 ม. การเปิดตัวผลิตภัณฑ์ประเภท A หนึ่งรายการสร้างรายได้ 400 เดน หน่วยหนึ่งผลิตภัณฑ์ประเภท B - 300 den หน่วย

จัดทำแผนการผลิตที่ช่วยให้บริษัทมีรายได้สูงสุด แก้ไขปัญหาแบบกราฟิก

สารละลาย

ให้ตัวแปรและแทนจำนวนชุดที่ผลิต รุ่น A และ B ตามลำดับ จากนั้นปริมาณผ้าประเภทแรกที่ใช้จะเป็น:
(ม.)
ปริมาณผ้าประเภทที่สองที่ใช้จะเป็น:
(ม.)
ปริมาณผ้าประเภทที่สามที่ใช้จะเป็น:
(ม.)
เนื่องจากจำนวนชุดที่ผลิตไม่สามารถติดลบได้
และ .
รายได้จากชุดที่ผลิตจะเป็น:
(จำนวนหน่วย)

จากนั้นแบบจำลองทางเศรษฐศาสตร์-คณิตศาสตร์ของปัญหาจะมีรูปแบบ:


เราแก้มันแบบกราฟิก
เราวาดแกนพิกัดและ .

เรากำลังสร้างเส้นตรง
ที่ .
ที่ .
ลากเส้นตรงผ่านจุด (0; 7) และ (10.5; 0)

เรากำลังสร้างเส้นตรง
ที่ .
ที่ .
ลากเส้นตรงผ่านจุด (0; 10) และ (10; 0)

เรากำลังสร้างเส้นตรง
ที่ .
ที่ .
ลากเส้นตรงผ่านจุด (0; 8) และ (8; 0)



เราแรเงาพื้นที่เพื่อให้จุด (2; 2) ตกลงไปในส่วนที่แรเงา เราได้ OABC รูปสี่เหลี่ยม


(A1.1) .
ที่ .
ที่ .
ลากเส้นตรงผ่านจุด (0; 4) และ (3; 0)

เรายังสังเกตอีกว่าเนื่องจากสัมประสิทธิ์ของและของฟังก์ชันวัตถุประสงค์เป็นบวก (400 และ 300) ค่านี้จะเพิ่มขึ้นตามและเพิ่มขึ้น
.

เราวาดเส้นตรงขนานกับเส้นตรง (A1.1) ให้ไกลที่สุดเท่าที่จะเป็นไปได้ในทิศทางที่เพิ่มขึ้น และผ่านจุด OABC ของรูปสี่เหลี่ยมขนมเปียกปูนอย่างน้อยหนึ่งจุด เส้นดังกล่าวผ่านจุด C จากการก่อสร้างเราจะกำหนดพิกัดของมัน

วิธีแก้ไขปัญหา: ;

.
คำตอบ

นั่นคือเพื่อให้ได้รายได้สูงสุดจำเป็นต้องสร้างชุดโมเดล A จำนวน 8 ชุด รายได้จะอยู่ที่ 3200 เด็น หน่วย

สภาพปัญหา

แก้ปัญหาการเขียนโปรแกรมเชิงเส้นแบบกราฟิก

สารละลาย

เราแก้มันแบบกราฟิก
เราวาดแกนพิกัดและ .

เรากำลังสร้างเส้นตรง
ที่ .
ที่ .
ลากเส้นตรงผ่านจุด (0; 6) และ (6; 0)

เรากำลังสร้างเส้นตรง
จากที่นี่.
ที่ .
ที่ .
ลากเส้นตรงผ่านจุด (3; 0) และ (7; 2)

เรากำลังสร้างเส้นตรง
เราสร้างเส้นตรง (แกน abscissa)

ขอบเขตของสารละลายที่ยอมรับได้ (ADA) ถูกจำกัดด้วยเส้นตรงที่สร้างขึ้น หากต้องการทราบว่าด้านใด เราสังเกตว่าจุดนั้นเป็นของ ODR เนื่องจากเป็นไปตามระบบอสมการ:

เราแรเงาพื้นที่ตามแนวขอบเขตของเส้นที่สร้างขึ้นเพื่อให้จุด (4; 1) ตกลงไปในส่วนที่แรเงา เราได้สามเหลี่ยม ABC

เราสร้างเส้นระดับของฟังก์ชันวัตถุประสงค์ตามอำเภอใจเช่น
.
ที่ .
ที่ .
ลากเส้นระดับตรงผ่านจุด (0; 6) และ (4; 0)
เนื่องจากฟังก์ชั่นวัตถุประสงค์เพิ่มขึ้นตามการเพิ่มขึ้น และ เราจึงวาดเส้นตรงขนานกับเส้นระดับและไกลที่สุดเท่าที่เป็นไปได้จากมันในทิศทางที่ เพิ่มขึ้น และผ่านจุดสามเหลี่ยม ABC อย่างน้อยหนึ่งจุด เส้นดังกล่าวผ่านจุด C จากการก่อสร้างเราจะกำหนดพิกัดของมัน
.

เราวาดเส้นตรงขนานกับเส้นตรง (A1.1) ให้ไกลที่สุดเท่าที่จะเป็นไปได้ในทิศทางที่เพิ่มขึ้น และผ่านจุด OABC ของรูปสี่เหลี่ยมขนมเปียกปูนอย่างน้อยหนึ่งจุด เส้นดังกล่าวผ่านจุด C จากการก่อสร้างเราจะกำหนดพิกัดของมัน

วิธีแก้ไขปัญหา: ;

ตัวอย่างการไม่มีวิธีแก้ปัญหา

สภาพปัญหา

แก้ปัญหาการเขียนโปรแกรมเชิงเส้นแบบกราฟิก ค้นหาค่าสูงสุดและต่ำสุดของฟังก์ชันวัตถุประสงค์

สารละลาย

เราแก้ไขปัญหาแบบกราฟิก
เราวาดแกนพิกัดและ .

เรากำลังสร้างเส้นตรง
ที่ .
ที่ .
ลากเส้นตรงผ่านจุด (0; 8) และ (2.667; 0)

เรากำลังสร้างเส้นตรง
ที่ .
ที่ .
ลากเส้นตรงผ่านจุด (0; 3) และ (6; 0)

เรากำลังสร้างเส้นตรง
ที่ .
ที่ .
ลากเส้นตรงผ่านจุด (3; 0) และ (6; 3)

เส้นตรงคือแกนพิกัด

ขอบเขตของสารละลายที่ยอมรับได้ (ADA) ถูกจำกัดด้วยเส้นตรงและแกนพิกัดที่สร้างขึ้น หากต้องการทราบว่าด้านใด เราสังเกตว่าจุดนั้นเป็นของ ODR เนื่องจากเป็นไปตามระบบอสมการ:

เราแรเงาพื้นที่เพื่อให้จุด (3; 3) ตกลงไปในส่วนที่แรเงา เราได้พื้นที่ไม่จำกัดที่ล้อมรอบด้วยเส้นหัก ABCDE

เราสร้างเส้นระดับของฟังก์ชันวัตถุประสงค์ตามอำเภอใจเช่น
(A3.1) .
ที่ .
ที่ .
ลากเส้นตรงผ่านจุด (0; 7) และ (7; 0)
เนื่องจากค่าสัมประสิทธิ์ของ และ เป็นบวก จึงเพิ่มขึ้นตามการเพิ่มขึ้น และ

ในการหาค่าสูงสุด คุณจะต้องวาดเส้นขนานซึ่งอยู่ห่างจากทิศทางที่เพิ่มขึ้นให้มากที่สุด และผ่านจุดหนึ่งของขอบเขต ABCDE อย่างน้อยหนึ่งจุด อย่างไรก็ตาม เนื่องจากพื้นที่นั้นไม่จำกัดในด้านของค่าขนาดใหญ่ของ และ จึงไม่สามารถวาดเส้นตรงดังกล่าวได้ ไม่ว่าเราจะลากเส้นไหนก็จะมีจุดในภูมิภาคที่ห่างไกลออกไปในทิศทางที่เพิ่มขึ้นและ .

ดังนั้นจึงไม่มีสูงสุด คุณสามารถทำให้มันใหญ่เท่าที่คุณต้องการ
.
เรากำลังมองหาขั้นต่ำ เราวาดเส้นตรงขนานกับเส้นตรง (A3.1) และไกลที่สุดเท่าที่เป็นไปได้จากเส้นนั้นในทิศทางที่ลดลง และผ่านจุดอย่างน้อยหนึ่งจุดของขอบเขต ABCDE เส้นดังกล่าวผ่านจุด C จากการก่อสร้างเราจะกำหนดพิกัดของมันค่าต่ำสุด

วิธีแก้ไขปัญหา: ;

ฟังก์ชั่นวัตถุประสงค์:ค่าสูงสุด
ไม่มีอยู่จริง
.

การเขียนโปรแกรมเชิงเส้น

การเขียนโปรแกรมเชิงเส้น- วินัยทางคณิตศาสตร์ที่อุทิศให้กับทฤษฎีและวิธีการแก้ปัญหาสุดขีดบนเซตของปริภูมิเวกเตอร์มิติที่กำหนดโดยระบบสมการเชิงเส้นและอสมการ

การโปรแกรมเชิงเส้นเป็นกรณีพิเศษของการเขียนโปรแกรมแบบนูน ซึ่งในทางกลับกันเป็นกรณีพิเศษของการเขียนโปรแกรมทางคณิตศาสตร์ ในขณะเดียวกันก็เป็นพื้นฐานของวิธีการต่างๆ ในการแก้ปัญหาการเขียนโปรแกรมจำนวนเต็มและไม่เชิงเส้น ลักษณะทั่วไปประการหนึ่งของการเขียนโปรแกรมเชิงเส้นคือการเขียนโปรแกรมเชิงเส้นแบบเศษส่วน

คุณสมบัติหลายประการของปัญหาการโปรแกรมเชิงเส้นสามารถตีความได้ว่าเป็นคุณสมบัติของรูปทรงหลายเหลี่ยม ดังนั้น จึงกำหนดสูตรและพิสูจน์ทางเรขาคณิตได้

เรื่องราว

วิธีจุดภายในถูกกล่าวถึงครั้งแรกโดย I. I. Dikin ในปี 1967

งาน

ปัญหาการเขียนโปรแกรมเชิงเส้นหลัก (มาตรฐาน) เรียกว่าปัญหาการหาค่าต่ำสุดของฟังก์ชันวัตถุประสงค์เชิงเส้น ( รูปร่างเชิงเส้น) ของแบบฟอร์ม:

ภายใต้เงื่อนไข

, .

ปัญหาการเขียนโปรแกรมเชิงเส้นจะมีปัญหา มุมมองที่เป็นที่ยอมรับ หากอยู่ในปัญหาหลักแทนที่จะเป็นระบบสมการแรกมีระบบสมการ:

,

ปัญหาหลักสามารถลดลงเป็นปัญหาตามรูปแบบบัญญัติได้โดยการแนะนำตัวแปรเพิ่มเติม

ปัญหาการโปรแกรมเชิงเส้นตรงในรูปแบบทั่วไปที่สุด (ปัญหาที่มีข้อจำกัดแบบผสม: ความเท่าเทียมกันและความไม่เท่าเทียมกัน การมีอยู่ของตัวแปรที่ปราศจากข้อจำกัด) สามารถลดลงให้กลายเป็นปัญหาที่เทียบเท่ากัน (โดยมีชุดวิธีแก้ปัญหาเดียวกัน) โดยการแทนที่ตัวแปรและแทนที่ความเท่าเทียมกันด้วยคู่ของ ความไม่เท่าเทียมกัน

เห็นได้ง่ายว่าปัญหาในการหาค่าสูงสุดสามารถแทนที่ได้ด้วยงานหาค่าต่ำสุดโดยการหาค่าสัมประสิทธิ์ที่มีเครื่องหมายตรงกันข้าม

ตัวอย่างของปัญหา

การจับคู่สูงสุด

พิจารณาปัญหาการจับคู่สูงสุดในกราฟสองฝ่าย: มีเด็กชายและเด็กหญิงหลายคน และสำหรับเด็กชายและเด็กหญิงแต่ละคนจะรู้ว่าพวกเขามีเสน่ห์ต่อกันหรือไม่ จำเป็นต้องแต่งงาน จำนวนสูงสุดคู่รักที่มีความเห็นอกเห็นใจซึ่งกันและกัน

ให้เราแนะนำตัวแปรที่สอดคล้องกับคู่ของ -boy และ -girl และปฏิบัติตามข้อจำกัด:

ด้วยฟังก์ชันวัตถุประสงค์ แสดงให้เห็นว่าในบรรดาวิธีแก้ปัญหาที่ดีที่สุดสำหรับปัญหานี้ มีจำนวนเต็มหนึ่ง ตัวแปรที่เท่ากับ 1 จะตรงกับคู่รักที่ควรแต่งงานกัน

การไหลสูงสุด

ให้มีกราฟ (ที่มีขอบเชิง) ซึ่งสำหรับแต่ละขอบของมัน ปริมาณงาน- และมีจุดยอดสองจุด: ท่อระบายน้ำและแหล่งที่มา จำเป็นต้องระบุในแต่ละขอบว่าของเหลวจะไหลผ่านได้มากน้อยเพียงใด (ไม่เกินความจุ) เพื่อเพิ่มการไหลทั้งหมดจากแหล่งกำเนิดไปยังท่อระบายน้ำ (ของเหลวไม่สามารถปรากฏหรือหายไปที่จุดยอดทั้งหมด ยกเว้นท่อระบายน้ำและแหล่งที่มา)

ให้เราพิจารณาปริมาณของของเหลวที่ไหลผ่านซี่โครงเป็นตัวแปร แล้ว

,

ความจุของขอบนั้นอยู่ที่ไหน ความไม่เท่าเทียมกันเหล่านี้จะต้องเสริมด้วยความเท่าเทียมกันของปริมาณของไหลเข้าและไหลออกสำหรับแต่ละจุดยอด ยกเว้นท่อระบายน้ำและแหล่งที่มา ตามฟังก์ชัน เป็นเรื่องธรรมดาที่จะคำนึงถึงความแตกต่างระหว่างปริมาณของไหลที่ไหลออกและไหลเข้าที่แหล่งกำเนิด

ลักษณะทั่วไปของปัญหาก่อนหน้านี้คือการไหลสูงสุดของต้นทุนขั้นต่ำ ในปัญหานี้ จะมีการกำหนดต้นทุนสำหรับแต่ละ Edge และคุณต้องเลือกโฟลว์ที่มีต้นทุนขั้นต่ำจากโฟลว์สูงสุด ปัญหานี้มาจากปัญหาการเขียนโปรแกรมเชิงเส้นสองปัญหา: ขั้นแรกคุณต้องแก้ไขปัญหาการไหลสูงสุด จากนั้นเพิ่มข้อจำกัดเข้าไปในปัญหานี้ โดยที่ค่าของการไหลสูงสุดคือ และแก้ไขปัญหาด้วย คุณลักษณะใหม่- ต้นทุนการไหล

ปัญหาเหล่านี้สามารถแก้ไขได้เร็วกว่าอัลกอริธึมทั่วไปในการแก้ปัญหาการเขียนโปรแกรมเชิงเส้น เนื่องจากมีโครงสร้างพิเศษของสมการและอสมการ

งานขนส่ง

มีสินค้าที่เป็นเนื้อเดียวกันบางอย่างที่ต้องโอนจากคลังสินค้าไปยังโรงงาน คลังสินค้าแต่ละแห่งจะทราบได้ว่ามีสินค้าจำนวนเท่าใด และทราบความต้องการสินค้าสำหรับแต่ละโรงงาน ค่าขนส่งเป็นสัดส่วนกับระยะทางจากคลังสินค้าถึงโรงงาน (ทราบระยะทางทั้งหมดจากคลังสินค้าแห่งที่ 3 ถึงโรงงานแห่งที่ 2) ก็ต้องแต่งให้มากที่สุด แผนราคาถูกการขนส่ง.

ตัวแปรชี้ขาดใน ในกรณีนี้คือปริมาณของสินค้าที่ขนส่งจากคลังสินค้าแห่งที่ 2 ไปยังโรงงานแห่งที่ 2 พวกเขาปฏิบัติตามข้อจำกัด:

ฟังก์ชันวัตถุประสงค์มีรูปแบบ: ซึ่งจะต้องย่อให้เล็กสุด

เกมผลรวมเป็นศูนย์

มีเมทริกซ์ขนาด ผู้เล่นคนแรกเลือกหมายเลขตั้งแต่ 1 ถึง คนที่สอง - จาก 1 ถึง จากนั้นพวกเขาตรวจสอบตัวเลขและผู้เล่นคนแรกจะได้รับคะแนน และผู้เล่นคนที่สองจะได้รับคะแนน (หมายเลขที่เลือกโดยผู้เล่นคนแรกจะได้รับคะแนนคนที่สอง) เราจำเป็นต้องค้นหากลยุทธ์ที่เหมาะสมที่สุดสำหรับผู้เล่นคนแรก

สมมติว่าในกลยุทธ์ที่เหมาะสมที่สุด ผู้เล่นคนแรกจะต้องเลือกตัวเลขที่มีความน่าจะเป็น กลยุทธ์ที่ดีที่สุดคือวิธีแก้ปัญหาการเขียนโปรแกรมเชิงเส้นต่อไปนี้:

, , (),

ซึ่งจำเป็นต้องขยายฟังก์ชันให้ใหญ่สุด ค่าในคำตอบที่ดีที่สุดคือความคาดหวังทางคณิตศาสตร์ของผลตอบแทนของผู้เล่นคนแรกในกรณีที่เลวร้ายที่สุด

อัลกอริธึมโซลูชัน

ที่มีชื่อเสียงที่สุดและใช้กันอย่างแพร่หลายในการปฏิบัติแก้ งานทั่วไปการเขียนโปรแกรมเชิงเส้น (LP) เป็นวิธีแบบซิมเพล็กซ์ แม้ว่าวิธีการแบบซิมเพล็กซ์จะเป็นอัลกอริธึมที่มีประสิทธิภาพพอสมควรดังที่ได้แสดงให้เห็นแล้วก็ตาม ผลลัพธ์ที่ดีเมื่อแก้ไขปัญหา LP ที่ใช้ จะเป็นอัลกอริทึมที่มีความซับซ้อนแบบเอ็กซ์โปเนนเชียล เหตุผลก็คือลักษณะเชิงผสมของวิธีซิมเพล็กซ์ ซึ่งจะระบุจุดยอดของรูปทรงหลายเหลี่ยมของคำตอบที่เป็นไปได้ตามลำดับเมื่อค้นหาวิธีแก้ปัญหาที่ดีที่สุด

อัลกอริธึมพหุนามวิธีแรกคือวิธีทรงรีถูกเสนอในปี 1979 โดยนักคณิตศาสตร์ชาวโซเวียต แอล. คาชิยาน จึงเป็นการแก้ปัญหา เป็นเวลานานยังคงไม่ได้รับการแก้ไข วิธีทรงรีมีลักษณะที่แตกต่างอย่างสิ้นเชิงและไม่รวมกันมากกว่าวิธีซิมเพล็กซ์ อย่างไรก็ตาม จากมุมมองด้านการคำนวณ วิธีการนี้กลับกลายเป็นว่าไม่มีท่าว่าจะดีนัก อย่างไรก็ตาม ข้อเท็จจริงของความซับซ้อนของปัญหาพหุนามนำไปสู่การสร้างชั้นเรียนทั้งหมด อัลกอริธึมที่มีประสิทธิภาพหจก. - วิธีจุดภายในโดยวิธีแรกคืออัลกอริทึมของ N. Karmarkar ที่เสนอในปี 1984 อัลกอริทึมประเภทนี้ใช้การตีความปัญหา LP อย่างต่อเนื่อง เมื่อแทนที่จะระบุจุดยอดของรูปทรงหลายเหลี่ยมของการแก้ปัญหา LP การค้นหาจะดำเนินการตามวิถีในอวกาศ ตัวแปรปัญหาโดยไม่ผ่านจุดยอดของรูปทรงหลายเหลี่ยม วิธีจุดภายใน ซึ่งแตกต่างจากวิธีซิมเพล็กซ์ โดยเลี่ยงจุดจากด้านในของขอบเขต ค่าที่ยอมรับได้ใช้วิธีการเขียนโปรแกรมแบบไม่เชิงเส้นแบบล็อกกั้นที่พัฒนาขึ้นในปี 1960 โดย Fiacco และ McCormick

ดูเพิ่มเติม

  • วิธีกราฟิกสำหรับการแก้ปัญหาการเขียนโปรแกรมเชิงเส้น

หมายเหตุ

วรรณกรรม

  • โธมัส เอช. คอร์แมน และคณะบทที่ 29 การเขียนโปรแกรมเชิงเส้น // อัลกอริทึม: การสร้างและการวิเคราะห์ = ความรู้เบื้องต้นเกี่ยวกับอัลกอริทึม - ฉบับที่ 2 - อ.: “วิลเลียมส์”, 2549. - หน้า 1296. - ISBN 5-8459-0857-4
  • อาคูลิช อิ.ล.บทที่ 1 ปัญหาการเขียนโปรแกรมเชิงเส้น บทที่ 2 ปัญหาการเขียนโปรแกรมเชิงเส้นพิเศษ // การเขียนโปรแกรมทางคณิตศาสตร์ในตัวอย่างและปัญหา - ม.: มัธยมปลาย, 2529. - 319 น. - ไอ 5-06-002663-9
  • คาร์มานอฟ วี.จี.การเขียนโปรแกรมทางคณิตศาสตร์ - ฉบับที่ 3 - อ.: Nauka, 2529. - 288 น.
  • Danzig George Bernard "ความทรงจำเกี่ยวกับจุดเริ่มต้นของการเขียนโปรแกรมเชิงเส้น"

ลิงค์

  • - แพ็คเกจเพิ่มประสิทธิภาพฟรีที่ออกแบบมาเพื่อแก้ปัญหาการเขียนโปรแกรมเชิงเส้น จำนวนเต็ม และเป้าหมาย
  • Vershik A. M. “ เกี่ยวกับ L. V. Kantorovich และการเขียนโปรแกรมเชิงเส้น”
  • Bolshakova I. V. , Kuralenko M. V. “ การเขียนโปรแกรมเชิงเส้น คู่มือการศึกษาและระเบียบวิธีสำหรับการทดสอบ”
  • Barsov A. S. “ การเขียนโปรแกรมเชิงเส้นคืออะไร” การบรรยายยอดนิยมเกี่ยวกับคณิตศาสตร์ Gostekhizdat, 2502
  • เอ็ม. เอ็น. วยาลีอสมการเชิงเส้นและเชิงร่วม - เอ็มซีเอ็นเอ็มโอ, 2546.

มูลนิธิวิกิมีเดีย

  • 2010.
  • ซัลเทน, เฟลิกซ์

กลาโกว์, มาร์ตินา

การเขียนโปรแกรมเชิงเส้น

การเขียนโปรแกรมเชิงเส้น- วินัยทางคณิตศาสตร์ที่อุทิศให้กับทฤษฎีและวิธีการแก้ปัญหาสุดขีดบนเซตของปริภูมิเวกเตอร์มิติที่กำหนดโดยระบบสมการเชิงเส้นและอสมการ

การโปรแกรมเชิงเส้นเป็นกรณีพิเศษของการเขียนโปรแกรมแบบนูน ซึ่งในทางกลับกันเป็นกรณีพิเศษของการเขียนโปรแกรมทางคณิตศาสตร์ ในขณะเดียวกันก็เป็นพื้นฐานของวิธีการต่างๆ ในการแก้ปัญหาการเขียนโปรแกรมจำนวนเต็มและไม่เชิงเส้น ลักษณะทั่วไปประการหนึ่งของการเขียนโปรแกรมเชิงเส้นคือการเขียนโปรแกรมเชิงเส้นแบบเศษส่วน

คุณสมบัติหลายประการของปัญหาการโปรแกรมเชิงเส้นสามารถตีความได้ว่าเป็นคุณสมบัติของรูปทรงหลายเหลี่ยม ดังนั้น จึงกำหนดสูตรและพิสูจน์ทางเรขาคณิตได้

เรื่องราว

วิธีจุดภายในถูกกล่าวถึงครั้งแรกโดย I. I. Dikin ในปี 1967

งาน

ปัญหาการเขียนโปรแกรมเชิงเส้นหลัก (มาตรฐาน) พจนานุกรมเศรษฐศาสตร์-คณิตศาสตร์

ภายใต้เงื่อนไข

, .

ปัญหาการเขียนโปรแกรมเชิงเส้นจะมีปัญหา เรียกว่าปัญหาการหาค่าต่ำสุดของฟังก์ชันวัตถุประสงค์เชิงเส้น (รูปแบบเชิงเส้น) ของแบบฟอร์ม: หากอยู่ในปัญหาหลักแทนที่จะเป็นระบบสมการแรกมีระบบสมการ:

,

ปัญหาหลักสามารถลดลงเป็นปัญหาตามรูปแบบบัญญัติได้โดยการแนะนำตัวแปรเพิ่มเติม

ปัญหาการโปรแกรมเชิงเส้นตรงในรูปแบบทั่วไปที่สุด (ปัญหาที่มีข้อจำกัดแบบผสม: ความเท่าเทียมกันและความไม่เท่าเทียมกัน การมีอยู่ของตัวแปรที่ปราศจากข้อจำกัด) สามารถลดลงให้กลายเป็นปัญหาที่เทียบเท่ากัน (โดยมีชุดวิธีแก้ปัญหาเดียวกัน) โดยการแทนที่ตัวแปรและแทนที่ความเท่าเทียมกันด้วยคู่ของ ความไม่เท่าเทียมกัน

เห็นได้ง่ายว่าปัญหาในการหาค่าสูงสุดสามารถแทนที่ได้ด้วยงานหาค่าต่ำสุดโดยการหาค่าสัมประสิทธิ์ที่มีเครื่องหมายตรงกันข้าม

ตัวอย่างของปัญหา

การจับคู่สูงสุด

มุมมองที่เป็นที่ยอมรับ

ให้เราแนะนำตัวแปรที่สอดคล้องกับคู่ของ -boy และ -girl และปฏิบัติตามข้อจำกัด:

ด้วยฟังก์ชันวัตถุประสงค์ แสดงให้เห็นว่าในบรรดาวิธีแก้ปัญหาที่ดีที่สุดสำหรับปัญหานี้ มีจำนวนเต็มหนึ่ง ตัวแปรที่เท่ากับ 1 จะตรงกับคู่รักที่ควรแต่งงานกัน

การไหลสูงสุด

พิจารณาปัญหาการจับคู่สูงสุดในกราฟสองฝ่าย: มีเด็กชายและเด็กหญิงหลายคน และสำหรับเด็กชายและเด็กหญิงแต่ละคนจะรู้ว่าพวกเขามีเสน่ห์ต่อกันหรือไม่ เราต้องแต่งงานกับคู่รักให้ได้มากที่สุดด้วยความเห็นอกเห็นใจซึ่งกันและกัน

ให้เราพิจารณาปริมาณของของเหลวที่ไหลผ่านซี่โครงเป็นตัวแปร แล้ว

,

ความจุของขอบนั้นอยู่ที่ไหน ความไม่เท่าเทียมกันเหล่านี้จะต้องเสริมด้วยความเท่าเทียมกันของปริมาณของไหลเข้าและไหลออกสำหรับแต่ละจุดยอด ยกเว้นท่อระบายน้ำและแหล่งที่มา ตามฟังก์ชัน เป็นเรื่องธรรมดาที่จะคำนึงถึงความแตกต่างระหว่างปริมาณของไหลที่ไหลออกและไหลเข้าที่แหล่งกำเนิด

ให้มีกราฟ (ที่มีขอบเชิง) ซึ่งระบุความจุสำหรับแต่ละขอบ และมีจุดยอดสองจุด: ท่อระบายน้ำและแหล่งที่มา จำเป็นต้องระบุในแต่ละขอบว่าของเหลวจะไหลผ่านได้มากน้อยเพียงใด (ไม่เกินความจุ) เพื่อเพิ่มการไหลทั้งหมดจากแหล่งกำเนิดไปยังท่อระบายน้ำ (ของเหลวไม่สามารถปรากฏหรือหายไปที่จุดยอดทั้งหมด ยกเว้นท่อระบายน้ำและแหล่งที่มา)

ปัญหาเหล่านี้สามารถแก้ไขได้เร็วกว่าอัลกอริธึมทั่วไปในการแก้ปัญหาการเขียนโปรแกรมเชิงเส้น เนื่องจากมีโครงสร้างพิเศษของสมการและอสมการ

งานขนส่ง

ลักษณะทั่วไปของปัญหาก่อนหน้านี้คือการไหลสูงสุดของต้นทุนขั้นต่ำ ในปัญหานี้ จะมีการกำหนดต้นทุนสำหรับแต่ละ Edge และคุณต้องเลือกโฟลว์ที่มีต้นทุนขั้นต่ำจากโฟลว์สูงสุด ปัญหานี้มาจากปัญหาการเขียนโปรแกรมเชิงเส้นสองปัญหา: ขั้นแรกคุณต้องแก้ไขปัญหาการไหลสูงสุด จากนั้นเพิ่มข้อจำกัดให้กับปัญหานี้ โดยที่ค่าของการไหลสูงสุดคือ และแก้ไขปัญหาด้วยฟังก์ชันใหม่ - ต้นทุนของการไหล

ตัวแปรชี้ขาดในกรณีนี้คือปริมาณของสินค้าที่ขนส่งจากคลังสินค้าแห่งที่ 2 ไปยังโรงงานแห่งที่ 2 พวกเขาปฏิบัติตามข้อจำกัด:

ฟังก์ชันวัตถุประสงค์มีรูปแบบ: ซึ่งจะต้องย่อให้เล็กสุด

เกมผลรวมเป็นศูนย์

มีเมทริกซ์ขนาด ผู้เล่นคนแรกเลือกหมายเลขตั้งแต่ 1 ถึง คนที่สอง - จาก 1 ถึง จากนั้นพวกเขาตรวจสอบตัวเลขและผู้เล่นคนแรกจะได้รับคะแนน และผู้เล่นคนที่สองจะได้รับคะแนน (หมายเลขที่เลือกโดยผู้เล่นคนแรกจะได้รับคะแนนคนที่สอง) เราจำเป็นต้องค้นหากลยุทธ์ที่เหมาะสมที่สุดสำหรับผู้เล่นคนแรก

สมมติว่าในกลยุทธ์ที่เหมาะสมที่สุด ผู้เล่นคนแรกจะต้องเลือกตัวเลขที่มีความน่าจะเป็น กลยุทธ์ที่ดีที่สุดคือวิธีแก้ปัญหาการเขียนโปรแกรมเชิงเส้นต่อไปนี้:

, , (),

ซึ่งจำเป็นต้องขยายฟังก์ชันให้ใหญ่สุด ค่าในคำตอบที่ดีที่สุดคือความคาดหวังทางคณิตศาสตร์ของผลตอบแทนของผู้เล่นคนแรกในกรณีที่เลวร้ายที่สุด

อัลกอริธึมโซลูชัน

วิธีปฏิบัติที่มีชื่อเสียงและใช้กันอย่างแพร่หลายในการแก้ปัญหาการเขียนโปรแกรมเชิงเส้นทั่วไป (LP) คือวิธีซิมเพล็กซ์ แม้ว่าวิธีซิมเพล็กซ์จะเป็นอัลกอริธึมที่มีประสิทธิผลพอสมควรซึ่งแสดงผลลัพธ์ที่ดีในการแก้ปัญหา LP ที่ประยุกต์ แต่ก็เป็นอัลกอริธึมที่มีความซับซ้อนแบบเอกซ์โปเนนเชียล เหตุผลก็คือลักษณะเชิงผสมของวิธีซิมเพล็กซ์ ซึ่งจะระบุจุดยอดของรูปทรงหลายเหลี่ยมของคำตอบที่เป็นไปได้ตามลำดับเมื่อค้นหาวิธีแก้ปัญหาที่ดีที่สุด

อัลกอริธึมพหุนามวิธีแรกคือวิธีทรงรีถูกเสนอในปี 1979 โดยนักคณิตศาสตร์ชาวโซเวียต แอล. คาชิยาน จึงเป็นการแก้ปัญหาที่ยังไม่ได้รับการแก้ไขมาเป็นเวลานาน วิธีทรงรีมีลักษณะที่แตกต่างอย่างสิ้นเชิงและไม่รวมกันมากกว่าวิธีซิมเพล็กซ์ อย่างไรก็ตาม จากมุมมองทางการคำนวณ วิธีการนี้กลับกลายเป็นว่าไม่มีท่าว่าจะดีนัก อย่างไรก็ตามความเป็นจริงของปัญหาที่ซับซ้อนพหุนามนำไปสู่การสร้างอัลกอริธึม LP ที่มีประสิทธิภาพทั้งระดับ - วิธีจุดภายในโดยวิธีแรกคืออัลกอริทึมของ N. Karmarkar ที่เสนอในปี 1984 อัลกอริทึมประเภทนี้ใช้การตีความปัญหา LP อย่างต่อเนื่อง เมื่อแทนที่จะระบุจุดยอดของรูปทรงหลายเหลี่ยมเพื่อแก้ไขปัญหา LP การค้นหาจะดำเนินการไปตามวิถีในพื้นที่ของตัวแปรปัญหาที่ไม่ผ่านจุดยอดของ รูปทรงหลายเหลี่ยม วิธีจุดภายใน ซึ่งแตกต่างจากวิธีซิมเพล็กซ์ตรงที่ลัดเลาะผ่านจุดจากด้านในของภูมิภาคที่เป็นไปได้ โดยใช้วิธีการเขียนโปรแกรมแบบไม่เชิงเส้นที่กั้นด้วยล็อกซึ่งพัฒนาขึ้นในคริสต์ทศวรรษ 1960 โดย Fiacco และ McCormick

ดูเพิ่มเติม

  • วิธีกราฟิกสำหรับการแก้ปัญหาการเขียนโปรแกรมเชิงเส้น

หมายเหตุ

วรรณกรรม

  • โธมัส เอช. คอร์แมน และคณะบทที่ 29 การเขียนโปรแกรมเชิงเส้น // อัลกอริทึม: การสร้างและการวิเคราะห์ = ความรู้เบื้องต้นเกี่ยวกับอัลกอริทึม - ฉบับที่ 2 - อ.: “วิลเลียมส์”, 2549. - หน้า 1296. - ISBN 5-8459-0857-4
  • อาคูลิช อิ.ล.บทที่ 1 ปัญหาการเขียนโปรแกรมเชิงเส้น บทที่ 2 ปัญหาการเขียนโปรแกรมเชิงเส้นพิเศษ // การเขียนโปรแกรมทางคณิตศาสตร์ในตัวอย่างและปัญหา - ม.: มัธยมปลาย, 2529. - 319 น. - ไอ 5-06-002663-9
  • คาร์มานอฟ วี.จี.การเขียนโปรแกรมทางคณิตศาสตร์ - ฉบับที่ 3 - อ.: Nauka, 2529. - 288 น.
  • Danzig George Bernard "ความทรงจำเกี่ยวกับจุดเริ่มต้นของการเขียนโปรแกรมเชิงเส้น"

ลิงค์

  • - แพ็คเกจเพิ่มประสิทธิภาพฟรีที่ออกแบบมาเพื่อแก้ปัญหาการเขียนโปรแกรมเชิงเส้น จำนวนเต็ม และเป้าหมาย
  • Vershik A. M. “ เกี่ยวกับ L. V. Kantorovich และการเขียนโปรแกรมเชิงเส้น”
  • Bolshakova I. V. , Kuralenko M. V. “ การเขียนโปรแกรมเชิงเส้น คู่มือการศึกษาและระเบียบวิธีสำหรับการทดสอบ”
  • Barsov A. S. “ การเขียนโปรแกรมเชิงเส้นคืออะไร” การบรรยายยอดนิยมเกี่ยวกับคณิตศาสตร์ Gostekhizdat, 2502
  • เอ็ม. เอ็น. วยาลีอสมการเชิงเส้นและเชิงร่วม - เอ็มซีเอ็นเอ็มโอ, 2546.

มูลนิธิวิกิมีเดีย

  • 2010.
  • ซัลเทน, เฟลิกซ์

กลาโกว์, มาร์ตินา

    ดูว่า "การเขียนโปรแกรมเชิงเส้น" ในพจนานุกรมอื่น ๆ คืออะไร:- - การเขียนโปรแกรมเชิงเส้น พื้นที่ของการเขียนโปรแกรมทางคณิตศาสตร์ที่อุทิศให้กับทฤษฎีและวิธีการแก้ปัญหาสุดขีดโดยมีลักษณะความสัมพันธ์เชิงเส้นระหว่าง ... ... ระหว่าง… …

    การเขียนโปรแกรมเชิงเส้น

    การเขียนโปรแกรมเชิงเส้นคู่มือนักแปลทางเทคนิค - สาขาการเขียนโปรแกรมทางคณิตศาสตร์ที่อุทิศให้กับทฤษฎีและวิธีการแก้ปัญหาสุดขีดที่มีลักษณะเฉพาะด้วยความสัมพันธ์เชิงเส้นระหว่างตัวแปร ในรูปแบบทั่วไปที่สุด ปัญหาของ L.p. สามารถเขียนได้แบบนี้ ดาน่า......

การเขียนโปรแกรมเชิงเส้นเป็นหนึ่งในสิ่งที่ดีที่สุด ส่วนสำคัญคณิตศาสตร์ซึ่งมีการศึกษารากฐานทางทฤษฎีและระเบียบวิธีสำหรับการแก้ปัญหาบางอย่าง วินัยทางคณิตศาสตร์นี้มีการใช้กันอย่างแพร่หลายใน ปีที่ผ่านมาในสาขาเศรษฐศาสตร์และเทคนิคต่างๆ โดยที่การวางแผนและการใช้ทางคณิตศาสตร์มีบทบาทไม่น้อย ระบบอัตโนมัติการคำนวณ สาขาวิชาวิทยาศาสตร์นี้เน้นไปที่การศึกษาแบบจำลองการหาค่าเหมาะที่สุดเชิงเส้น นั่นคือการเขียนโปรแกรมเชิงเส้นเป็นเรื่องเกี่ยวกับตัวเลข เป็นครั้งแรก เทอมนี้ถูกเสนอโดย T. Koopmans ในปี 1951 แผนที่เหมาะสมที่สุดแต่ละ โปรแกรมเชิงเส้นจำเป็นต้องเชื่อมโยงโดยอัตโนมัติ ระดับที่เหมาะสมที่สุดราคานั่นคือด้วยการประเมินที่กำหนดอย่างเป็นกลาง

การเขียนโปรแกรมเชิงเส้น: วิธีการ

การใช้เทคนิคนี้ทำให้สามารถแก้ไขปัญหาร้ายแรงที่เกี่ยวข้องกับเศรษฐศาสตร์ได้จำนวนมาก ในกรณีนี้มักจะจำเป็นต้องค้นหาค่าสุดขีดของฟังก์ชันบางอย่างของค่าตัวแปร การแก้ระบบสมการและอสมการที่แปลงรูปได้จะแสดงเป็นพื้นฐานของการเขียนโปรแกรมเชิงเส้น ประเภทนี้การเขียนโปรแกรมมีลักษณะเฉพาะด้วยการกำหนดตัวแปรทางคณิตศาสตร์ ลำดับและลำดับการคำนวณที่แน่นอน เช่นเดียวกับ การวิเคราะห์เชิงตรรกะ- สิ่งนี้ใช้กับ:

หากมีความแน่นอนทางคณิตศาสตร์และข้อจำกัดเชิงปริมาณระหว่างปัจจัยที่กำลังศึกษาและ ปริมาณตัวแปร;

หากมีปัจจัยที่เปลี่ยนกันได้เนื่องจากลำดับการคำนวณ

หากนำตรรกะทางคณิตศาสตร์มารวมกับความเข้าใจในแก่นแท้ของปรากฏการณ์ที่กำลังศึกษาอยู่

การเขียนโปรแกรมเชิงเส้นช่วยในการคำนวณประสิทธิภาพสูงสุดของเครื่องจักร สายการผลิต หน่วยทั้งหมด ตลอดจนแก้ไขปัญหาการใช้วัสดุที่มีอยู่อย่างสมเหตุสมผล

ในการเกษตรโดยใช้ วิธีนี้ต้นทุนขั้นต่ำของการปันส่วนอาหารจะพิจารณาจากปริมาณอาหารที่มีอยู่ โดยคำนึงถึงประเภทและเนื้อหาของสารที่เป็นประโยชน์บางอย่างในตัวพวกเขา

ในโรงหล่อ เทคนิคนี้ช่วยให้คุณพบวิธีแก้ปัญหา ปัญหาการขนส่งและปัญหาเกี่ยวกับสารผสมที่เป็นส่วนหนึ่งของประจุโลหะวิทยา สาระสำคัญของปัญหาการขนส่งในกรณีนี้บ่งบอกถึงความผูกพันที่เหมาะสมที่สุดระหว่างองค์กรการบริโภคกับองค์กรที่มีส่วนร่วมในการผลิต

การเขียนโปรแกรมเชิงเส้น: ปัญหา

คุณสมบัติที่โดดเด่นทุกคน งานทางเศรษฐกิจซึ่งแก้ไขได้โดยใช้เทคนิคการเขียนโปรแกรมเชิงเส้นคือตัวเลือก ตัวเลือกบางอย่างแนวทางแก้ไขตลอดจนเงื่อนไขที่จำกัด การแก้ปัญหาดังกล่าวทำให้สามารถหาแนวทางแก้ไขที่ดีที่สุดจากทุกคนได้ ตัวเลือกอื่น.

คุณค่าที่สำคัญของการใช้เทคนิคการเขียนโปรแกรมเชิงเส้นในทางเศรษฐศาสตร์คือทางเลือกของ ตัวเลือกที่ดีที่สุดจาก ปริมาณมากตัวเลือกทั้งหมดที่ถือว่ายอมรับได้ ปัญหาดังกล่าวแทบจะเป็นไปไม่ได้เลยที่จะแก้ไขด้วยวิธีอื่นเนื่องจากมีเพียงผู้เดียวเท่านั้นที่อนุญาตให้ค้นหาระดับความสมเหตุสมผลของการใช้งาน การใช้โปรแกรมเชิงเส้นเช่นปัญหาพื้นฐานในการขนส่งได้รับการแก้ไขซึ่งควรลดการหมุนเวียนของสินค้าอุปโภคบริโภคระหว่างการจัดส่ง จากผู้ผลิต

การเขียนโปรแกรมเชิงเส้นใน Excel

ในกระบวนการแก้ไขปัญหาดังกล่าว อันดับแรกจำเป็นต้องสร้างแบบจำลองซึ่งแสดงถึงการกำหนดเงื่อนไข ภาษาคณิตศาสตร์- หลังจากขั้นตอนนี้จะสามารถหาวิธีแก้ปัญหาได้โดย วิธีกราฟิก- เพื่อจุดประสงค์นี้ใน โปรแกรมเอ็กเซลมีอยู่จริง ฟังก์ชั่นพิเศษ"กำลังหาทางแก้ไข"

ตามที่ได้ชัดเจนจากข้างต้นแล้ว การเขียนโปรแกรมเชิงเส้นมีขอบเขตการใช้งานที่กว้างมาก

15. วิธีการวิเคราะห์ วิธีการเขียนโปรแกรมเชิงเส้น

15.1. วิธีการวิเคราะห์

ตลอดวิวัฒนาการทั้งหมดของมนุษย์ เมื่อกระทำการกระทำบางอย่าง พยายามที่จะประพฤติตนในลักษณะที่ทำให้ผลสำเร็จตามผลของการกระทำบางอย่างกลายเป็นสิ่งที่ดีที่สุดในแง่หนึ่ง เมื่อย้ายจากจุดหนึ่งไปยังอีกจุดหนึ่ง เขาพยายามหาเส้นทางที่สั้นที่สุดเท่าที่จะเป็นไปได้ เมื่อสร้างที่อยู่อาศัย เขามองหารูปทรงเรขาคณิตที่ใช้เชื้อเพลิงน้อยที่สุดจึงจะเป็นที่ยอมรับได้ สภาพที่สะดวกสบายการดำรงอยู่. ขณะต่อเรือ เขาพยายามสร้างรูปร่างให้เรือมีความต้านทานน้ำน้อยที่สุด รายการตัวอย่างที่คล้ายกันสามารถดำเนินการต่อได้อย่างง่ายดาย

วิธีแก้ปัญหาที่ดีที่สุดสำหรับปัญหาในแง่หนึ่งมักเรียกว่า เหมาะสมที่สุด- ในปัจจุบัน ไม่มีปัญหาใดสามารถแก้ไขได้โดยไม่ใช้หลักการเพิ่มประสิทธิภาพ ปัญหาที่ซับซ้อน- เมื่อตั้งค่าและแก้ไขปัญหาการปรับให้เหมาะสม มีคำถามสองข้อเกิดขึ้น: อะไรจะปรับให้เหมาะสมและอย่างไร

คำตอบสำหรับคำถามแรกนั้นได้มาจากการศึกษาปัญหาที่ต้องแก้ไขอย่างเจาะลึก มีการระบุพารามิเตอร์ที่กำหนดระดับความสมบูรณ์แบบของการแก้ปัญหาที่เกิดขึ้น โดยปกติจะเรียกว่าพารามิเตอร์นี้ ฟังก์ชั่นเป้าหมายหรือ เกณฑ์คุณภาพ- จากนั้น ชุดของปริมาณจะถูกสร้างขึ้นเพื่อกำหนดฟังก์ชันวัตถุประสงค์ ท้ายที่สุดแล้ว มีการกำหนดข้อจำกัดทั้งหมดที่ต้องนำมาพิจารณาเมื่อแก้ไขปัญหา หลังจากนั้น แบบจำลองทางคณิตศาสตร์จะถูกสร้างขึ้น ซึ่งประกอบด้วยการสร้างการพึ่งพาเชิงวิเคราะห์ของฟังก์ชันวัตถุประสงค์ในการโต้แย้งทั้งหมด และการกำหนดเชิงวิเคราะห์ของข้อจำกัดที่เกี่ยวข้องกับปัญหา ต่อไปเราเริ่มค้นหาคำตอบสำหรับคำถามที่สอง

ดังนั้น สมมติว่าเป็นผลมาจากการทำให้ปัญหาที่ประยุกต์ใช้เป็นระเบียบ พบว่าฟังก์ชันวัตถุประสงค์คือ โดยที่เซต X คือลักษณะทั่วไปของข้อจำกัด เรียกว่าเซตของวิธีแก้ปัญหาที่เป็นไปได้ สาระสำคัญของปัญหาการปรับให้เหมาะสมคือการค้นหาชุด X - ชุดโซลูชันที่เป็นไปได้สำหรับโซลูชันดังกล่าว
ซึ่งเป้าหมายทำงาน ถึงค่าต่ำสุดหรือสูงสุด

ส่วนสำคัญของวิธีการปรับให้เหมาะสมคือการเขียนโปรแกรมเชิงเส้น

15.2. แนวคิดพื้นฐานของการโปรแกรมเชิงเส้น

การกล่าวถึงครั้งแรก (พ.ศ. 2481) เกี่ยวกับวิธีทางคณิตศาสตร์ในการจัดการการผลิตที่มีประสิทธิภาพเป็นของนักคณิตศาสตร์ชาวโซเวียต L. V. Kantorovich อีกหนึ่งปีต่อมาในปี พ.ศ. 2482 L. V. Kantorovich ได้ตีพิมพ์งาน "วิธีการทางคณิตศาสตร์ในการจัดระเบียบและการวางแผนการผลิต" และนำผลลัพธ์ที่ได้รับไปใช้จริง คำว่า "การเขียนโปรแกรมเชิงเส้น" ได้รับการแนะนำโดยนักคณิตศาสตร์ชาวอเมริกัน J. Danzig และ T. Koopmans ในช่วงปลายทศวรรษที่ 40 J. Dantzig พัฒนาเครื่องมือทางคณิตศาสตร์ของวิธีซิมเพล็กซ์สำหรับการแก้ปัญหาการเขียนโปรแกรมเชิงเส้น (1951) วิธีเริมใช้เพื่อแก้ปัญหาการเขียนโปรแกรมเชิงเส้นที่หลากหลายและยังคงเป็นหนึ่งในวิธีการหลัก

การเขียนโปรแกรมเชิงเส้นเป็นสาขาหนึ่งของคณิตศาสตร์ที่เน้นไปที่การค้นหาปัญหาสุดขั้ว (สูงสุดหรือต่ำสุด) ตามที่อธิบายไว้ สมการเชิงเส้น- นอกจากนี้ สมการเชิงเส้นยังอธิบายทั้งฟังก์ชันวัตถุประสงค์และพารามิเตอร์อินพุต (ตัวแปร) ของเงื่อนไขของข้อจำกัด พารามิเตอร์อินพุต- เงื่อนไขที่จำเป็นสำหรับปัญหาการเขียนโปรแกรมเชิงเส้นคือการมีข้อจำกัดด้านทรัพยากร (วัตถุดิบ วัสดุ การเงิน ความต้องการผลิตภัณฑ์ที่ผลิต ฯลฯ) ให้กับผู้อื่น เงื่อนไขที่สำคัญการแก้ปัญหาคือการเลือกเกณฑ์การหยุดสำหรับอัลกอริธึมนั่นคือ ฟังก์ชั่นวัตถุประสงค์จะต้องเหมาะสมที่สุดในแง่หนึ่ง ความสมเหตุสมผลของฟังก์ชันวัตถุประสงค์จะต้องแสดงออกมาในเชิงปริมาณ หากฟังก์ชันเป้าหมายแสดงด้วยสมการหนึ่งหรือสองสมการ ในทางปฏิบัติปัญหาดังกล่าวจะสามารถแก้ไขได้ค่อนข้างง่าย เกณฑ์การหยุดอัลกอริทึม (หรือเกณฑ์การปรับให้เหมาะสม) ต้องเป็นไปตามข้อกำหนดต่อไปนี้:

    เป็นคนเดียวสำหรับงานที่ได้รับมอบหมาย

    วัดเป็นหน่วยปริมาณ

    ขึ้นอยู่กับพารามิเตอร์อินพุตเชิงเส้น

จากที่กล่าวมาข้างต้น เราสามารถกำหนดปัญหาการเขียนโปรแกรมเชิงเส้นในรูปแบบทั่วไปได้:

หาจุดสิ้นสุดของฟังก์ชันวัตถุประสงค์

ภายใต้ข้อจำกัดในรูปแบบของความเสมอภาค:

(2.2)

ภายใต้ข้อจำกัดในรูปแบบของความไม่เท่าเทียมกัน:

(2.3)

และเงื่อนไขของการไม่เป็นลบของพารามิเตอร์อินพุต:

กล่าวโดยย่อ ปัญหาการเขียนโปรแกรมเชิงเส้นสามารถเขียนได้ดังนี้

(2.5)

ระบุว่า

ที่ไหน
- ตัวแปรอินพุต

ตัวเลขเป็นบวก ลบ และเท่ากับศูนย์

ในรูปแบบเมทริกซ์ ปัญหานี้สามารถเขียนได้ดังนี้

ปัญหาการเขียนโปรแกรมเชิงเส้นสามารถแก้ไขได้ทั้งเชิงวิเคราะห์และเชิงกราฟิก

15.3. ปัญหาการเขียนโปรแกรมเชิงเส้น Canonical

, ผม=1,…,ม.,

, เจ=1,…,น.

วิธีการคำนวณหลักสำหรับการแก้ปัญหาการเขียนโปรแกรมเชิงเส้นได้รับการพัฒนาโดยเฉพาะสำหรับปัญหา Canonical

15.4. ปัญหาการเขียนโปรแกรมเชิงเส้นทั่วไป

จำเป็นต้องเพิ่ม (ย่อ) ฟังก์ชันเชิงเส้นของ nตัวแปร

ภายใต้ข้อจำกัด

, ฉัน=1,…, เค,

, ฉัน=1+ เค,…, ,

, …,

ที่นี่ เค, n. ปัญหามาตรฐานจะได้รับเป็นกรณีพิเศษของปัญหาทั่วไปด้วย เค= , = n- ตามบัญญัติ - ที่ เค=0, = n.

ตัวอย่าง.

โรงงานผลิตลูกกวาดผลิตขนมหวานหลายประเภท เรียกพวกเขาว่า "A", "B" และ "C" เป็นที่ทราบกันว่าการขายขนมหวาน "A" สิบกิโลกรัมให้ผลกำไร 90 รูเบิล "B" - 100 รูเบิลและ "C" - 160 รูเบิล สามารถผลิตขนมได้ในปริมาณเท่าใดก็ได้ (รับประกันยอดขาย) แต่วัตถุดิบมีจำนวนจำกัด มีความจำเป็นต้องกำหนดว่าต้องผลิตขนมชนิดใดและจำนวนกี่สิบกิโลกรัมเพื่อให้ได้กำไรรวมจากการขายสูงสุด อัตราการใช้วัตถุดิบในการผลิตขนมแต่ละชนิดจำนวน 10 กิโลกรัม แสดงไว้ในตารางที่ 1

ตารางที่ 1. อัตราการใช้วัตถุดิบ

สำหรับการผลิต

การกำหนดปัญหาทางเศรษฐศาสตร์และคณิตศาสตร์มีรูปแบบ

ค้นหาค่าตัวแปรดังกล่าว X=(x1, x2, x3), ถึง

ฟังก์ชั่นวัตถุประสงค์

ภายใต้เงื่อนไข-ข้อจำกัด: