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