/ / การเขียนโปรแกรมแบบไม่เชิงเส้นเป็นองค์ประกอบหนึ่งของการเขียนโปรแกรมทางคณิตศาสตร์

การโปรแกรมแบบไม่เชิงเส้นเป็นองค์ประกอบหนึ่งของการโปรแกรมเชิงคณิตศาสตร์

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

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

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

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

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

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

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

ดังที่ได้กล่าวไว้ข้างต้นการเขียนโปรแกรมแบบไม่เชิงเส้นต้องใช้แนวทางพิเศษส่วนบุคคลที่ต้องคำนึงถึงลักษณะเฉพาะของมัน

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

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

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

- วิธีการเขียนโปรแกรมแบบไดนามิกจะลดลงเป็นปัญหาการเพิ่มประสิทธิภาพงานหลายมิติให้เป็นมิติที่ต่ำกว่า

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