อ่าน 7 นาที
เอพีโมนิเตอร์
โปรแกรมตรวจสอบกระบวนการขั้นสูง (APMonitor) เป็นภาษาสร้างแบบจำลองสำหรับ สมการ พีชคณิตเชิง อนุพันธ์ ( DAE ) [ 1 ]...
เอพีโมนิเตอร์
| เอพีโมนิเตอร์ | |
|---|---|
| นักพัฒนา | เอพีโมนิเตอร์ |
| เวอร์ชันเสถียร | เวอร์ชัน 1.0.1 / 31 มกราคม 2022 |
| ระบบปฏิบัติการ | ข้ามแพลตฟอร์ม |
| พิมพ์ | การคำนวณทางเทคนิค |
| ใบอนุญาต | กรรมสิทธิ์ , BSD |
| เว็บไซต์ | หน้าผลิตภัณฑ์ APMonitor |
| ที่เก็บข้อมูล | https://github.com/APMonitor/ |
โปรแกรมตรวจสอบกระบวนการขั้นสูง (APMonitor)เป็นภาษาสร้างแบบจำลองสำหรับ สมการ พีชคณิตเชิงอนุพันธ์ ( DAE ) [ 1 ] เป็นบริการเว็บฟรีหรือเซิร์ฟเวอร์ภายในเครื่องสำหรับการแก้ปัญหาการแสดงระบบทางกายภาพในรูปแบบของแบบจำลอง DAE แบบปริยาย APMonitor เหมาะสำหรับปัญหาขนาดใหญ่และแก้ปัญหาการเขียนโปรแกรมเชิงเส้นการเขียนโปรแกรมจำนวนเต็มการเขียนโปรแกรมไม่เชิงเส้นการเขียนโปรแกรมจำนวนเต็มแบบผสมไม่เชิงเส้น การจำลองแบบไดนามิก[ 2 ]การประมาณค่าขอบเขตเคลื่อนที่[ 3 ]และการควบคุมการทำนายแบบจำลองไม่เชิงเส้น[ 4 ] APMonitor ไม่ ได้แก้ปัญหาโดยตรง แต่เรียกใช้ ตัวแก้ปัญหาการเขียน โปรแกรมไม่เชิงเส้นเช่นAPOPT , BPOPT , IPOPT , MINOSและSNOPT API ของ APMonitor ให้ค่าอนุพันธ์อันดับแรกและอันดับสองที่แน่นอนของฟังก์ชันต่อเนื่องแก่ตัวแก้ปัญหาผ่านการหาอนุพันธ์อัตโนมัติและในรูปแบบ เมทริกซ์แบบเบาบาง
การบูรณาการภาษาการเขียนโปรแกรม
Julia , MATLABและPythonเป็นภาษาโปรแกรมทางคณิตศาสตร์ที่มีการบูรณาการกับ APMonitor ผ่าน API บริการบนเว็บGEKKO Optimization Suiteเป็นส่วนขยายล่าสุดของ APMonitor ที่มีการบูรณาการ Python อย่างสมบูรณ์ อินเทอร์เฟซเป็นกล่องเครื่องมือหรือโมดูลการเพิ่มประสิทธิภาพในตัวเพื่อโหลดและประมวลผลโซลูชันของปัญหาการเพิ่มประสิทธิภาพ APMonitor เป็นภาษาการสร้างแบบจำลองเชิงวัตถุ และชุดโปรแกรมการเพิ่มประสิทธิภาพที่อาศัยภาษาโปรแกรมในการโหลด รัน และดึงโซลูชัน แบบจำลองและข้อมูลของ APMonitor จะถูกคอมไพล์ในระหว่างการทำงานและแปลงเป็นวัตถุที่ได้รับการแก้ไขโดยเอนจินการเพิ่มประสิทธิภาพ เช่นAPOPTหรือIPOPT APMonitor ไม่ได้ระบุเอนจินการเพิ่มประสิทธิภาพ ทำให้สามารถสลับเอนจินการเพิ่มประสิทธิภาพที่แตกต่างกันได้หลายตัว โหมดการจำลองหรือการเพิ่มประสิทธิภาพยังสามารถกำหนดค่าได้เพื่อกำหนดค่าแบบจำลองใหม่สำหรับการจำลองแบบไดนามิกการควบคุมการทำนายแบบจำลองที่ไม่เป็นเชิงเส้น การ ประมาณค่าขอบเขตเคลื่อนที่หรือปัญหาทั่วไปในการเพิ่มประสิทธิภาพทางคณิตศาสตร์
ขั้นตอนแรกในการแก้ปัญหาคือการแสดงแบบจำลองทางคณิตศาสตร์ในรูปของตัวแปรและสมการ เช่น ปัญหามาตรฐาน Hock & Schittkowski #71 [ 5 ]ที่ใช้ทดสอบประสิทธิภาพของตัว แก้ปัญหาการเขียน โปรแกรมแบบไม่เชิงเส้นปัญหาการเพิ่มประสิทธิภาพเฉพาะนี้มีฟังก์ชันเป้าหมายและอยู่ภายใต้ข้อจำกัดความไม่เท่ากันและข้อจำกัดความเท่ากันตัวแปรทั้งสี่ต้องอยู่ระหว่างขอบเขตล่าง 1 และขอบเขตบน 5 ค่าเดาเริ่มต้นคือแบบจำลองทางคณิตศาสตร์นี้ถูกแปลเป็นภาษาการสร้างแบบจำลอง APMonitor ในไฟล์ข้อความต่อไปนี้
! บันทึกไฟล์เป็นhs71.apm ตัวแปรx1 = 1 , >= 1 , <= 5 x2 = 5 , >= 1 , <= 5 x3 = 5 , > = 1 , <= 5 x4 = 1 , >= 1 , < = 5 สิ้นสุดตัวแปรสมการที่ทำให้ค่าx1 * x4 * ( x1 + x2 + x3 ) + x3 น้อยที่สุดx1 * x2 * x3 * x4 > 25 x1 ^ 2 + x2 ^ 2 + x3 ^ 2 + x4 ^ 2 = 40 สมการสุดท้ายปัญหาดังกล่าวได้รับการแก้ไขใน Python โดยการติดตั้งแพ็กเกจ APMonitor ก่อนด้วยคำสั่งpip install APMonitorหรือจากโค้ด Python ต่อไปนี้
# ติดตั้ง APMonitor import pip pip.main ( [ "install" , "APMonitor" ] )การติดตั้ง Python จำเป็นเพียงครั้งเดียวสำหรับทุกโมดูล เมื่อติดตั้งแพ็กเกจ APMonitor แล้ว ระบบจะนำเข้าแพ็กเกจและ ฟังก์ชัน apm_solveจะแก้ปัญหาการหาค่าเหมาะสมที่สุด จากนั้นผลลัพธ์จะถูกส่งกลับไปยังภาษาโปรแกรมเพื่อประมวลผลและวิเคราะห์ต่อไป
# ตัวอย่าง Python สำหรับการแก้ปัญหาการเพิ่มประสิทธิภาพจากAPMonitor.apm import *# แก้ปัญหาการหาค่าเหมาะสมที่สุดsol = apm_solve ( "hs71" , 3 )# เข้าถึงคำตอบx1 = sol [ "x1" ] x2 = sol [ "x2" ]MATLABและJuliaมีอินเทอร์เฟซที่คล้ายกันโดยมีไวยากรณ์แตกต่างจากข้างต้นเล็กน้อย การขยายขีดความสามารถของภาษาสร้างแบบจำลองมีความสำคัญ เนื่องจากมักต้องมีการประมวลผลข้อมูลหรือผลลัพธ์ก่อนหรือหลังการคำนวณอย่างมีนัยสำคัญ เมื่อแก้ปัญหาการหาค่าเหมาะสมที่สุดที่ซับซ้อน การจำลองแบบไดนามิก การประมาณค่า หรือปัญหาการควบคุม
DAE ดัชนีสูง
ลำดับสูงสุดของอนุพันธ์ที่จำเป็นในการเปลี่ยน DAE กลับไปเป็นรูปแบบ ODE เรียกว่าดัชนีการหาอนุพันธ์วิธีมาตรฐานในการจัดการกับ DAE ที่มีดัชนีสูงคือการหาอนุพันธ์ของสมการเพื่อให้อยู่ในรูปแบบ DAE หรือ ODE ที่มีดัชนี 1 (ดูอัลกอริทึม Pantelides ) อย่างไรก็ตาม วิธีนี้อาจทำให้เกิดปัญหาเชิงตัวเลขที่ไม่พึงประสงค์หลายประการ เช่น ความไม่เสถียร แม้ว่าไวยากรณ์จะคล้ายกับภาษาการสร้างแบบจำลองอื่นๆ เช่น gProms แต่ APMonitor สามารถแก้ DAE ที่มีดัชนีใดๆ ก็ได้โดยไม่ต้องจัดเรียงใหม่หรือหาอนุพันธ์[ 6 ] ตัวอย่างเช่น DAE ที่มีดัชนี 3 แสดงไว้ด้านล่างสำหรับสมการการเคลื่อนที่ของลูกตุ้ม และการจัดเรียงใหม่ที่มีดัชนีต่ำกว่าสามารถคืนระบบสมการนี้กลับไปเป็นรูปแบบ ODE ได้ (ดูตัวอย่างลูกตุ้มดัชนี 0 ถึง 3 )
การเคลื่อนที่แบบลูกตุ้ม (รูปแบบ DAE ดัชนี 3)
พารามิเตอร์ของลูกตุ้มจำลองm = 1 g = 9.81 s = 1 พารามิเตอร์ปลายตัวแปรx = 0 y = - s v = 1 w = 0 lam = m * ( 1 + s * g ) / 2 * s ^ 2 สิ้นสุดตัวแปรสมการx ^ 2 + y ^ 2 = s ^ 2 x = v y = w m * v = -2 * x * lam m * w = -m * g - 2 * y * lam จบสมการจบแบบจำลองการประยุกต์ใช้งานในภาษาสร้างแบบจำลอง APMonitor
ระบบทางกายภาพหลายระบบสามารถแสดงออกมาได้ตามธรรมชาติด้วยสมการเชิงอนุพันธ์พีชคณิตตัวอย่างเช่น:
- การเพาะเลี้ยงเซลล์
- เครื่องปฏิกรณ์เคมี
- การผลิตพลังงานร่วม (ไฟฟ้าและความร้อน) [ 7 ]
- หอการกลั่น
- ระบบอัตโนมัติในการเจาะ[ 8 ]
- การกลั่นไอน้ำน้ำมันหอม ระเหย [ 9 ]
- การเชื่อมแบบกวนเสียดทาน[ 10 ]
- การก่อตัวของไฮเดรตในท่อส่งใต้ทะเลลึก[ 11 ]
- การแพร่กระจายของโรคติดเชื้อ
- ออสซิลเลเตอร์
- การควบคุมการตีอย่างรุนแรง[ 12 ]
- การผลิตพลังงานความร้อนจากแสงอาทิตย์[ 13 ]
- เซลล์เชื้อเพลิงออกไซด์แข็ง[ 14 ] [ 15 ]
- การจำลองการปล่อยกระสวยอวกาศ
- ยานอากาศไร้คนขับ (UAV) [ 16 ]
แบบจำลองสำหรับมอเตอร์กระแสตรง (DC) และการตอบสนองของระดับน้ำตาลในเลือดของผู้ป่วยที่ต้องพึ่งอินซูลินแสดงไว้ด้านล่าง แบบจำลองเหล่านี้เป็นตัวอย่างของสมการเชิงอนุพันธ์และพีชคณิตที่พบได้ในสาขาวิทยาศาสตร์และวิศวกรรมหลายสาขา
มอเตอร์กระแสตรง (DC)
พารามิเตอร์! พารามิเตอร์มอเตอร์ (มอเตอร์กระแสตรง) v = 36 ! แรงดันไฟฟ้าขาเข้ามอเตอร์ (โวลต์) rm = 0.1 ! ความต้านทานมอเตอร์ (โอห์ม) lm = 0.01 ! ความเหนี่ยวนำมอเตอร์ (เฮนรี) kb = 6.5e-4 ! ค่าคงที่แรงเคลื่อนไฟฟ้าต้านกลับ (โวลต์·วินาที/เรเดียน) kt = 0.1 ! ค่าคงที่แรงบิด (นิวตัน·เมตร/เอ) jm = 1.0e-4 ! ความเฉื่อยของโรเตอร์ (กก.ม.²) bm = 1.0e-5 ! การหน่วงเชิงกล (แบบจำลองเชิงเส้นของแรงเสียดทาน: bm * dth)! พารามิเตอร์โหลดjl = 1000 * jm ! โมเมนต์ความเฉื่อยของโหลด (1000 เท่าของโรเตอร์) bl = 1.0e-3 ! ค่าหน่วงของโหลด (แรงเสียดทาน) k = 1.0e2 ! ค่าคงที่สปริงสำหรับเพลามอเตอร์กับโหลดb = 0.1 ! ค่าหน่วงสปริงสำหรับเพลามอเตอร์กับโหลดพารามิเตอร์สุดท้ายตัวแปรi = 0 ! กระแสไฟฟ้าของมอเตอร์ (แอมแปร์) dth_m = 0 ! ความเร็วเชิงมุมของโรเตอร์ หรือบางครั้งเรียกว่าโอเมกา (เรเดียน/วินาที) th_m = 0 ! มุมของโรเตอร์ หรือทีตา (เรเดียน) dth_l = 0 ! ความเร็วเชิงมุมของล้อ (เรเดียน/วินาที) th_l = 0 ! มุมของล้อ (เรเดียน) สิ้นสุดตัวแปรสมการlm * $ i - v = - rm * i - kb * $ th_m jm * $ dth_m = kt * i - ( bm + b ) * $ th_m - k * th_m + b * $ th_l + k * th_l jl * $ dth_l = b * $ th_m + k * th_m - ( b + bl ) * $ th_l - k * th_l dth_m = $ th_m dth_l = $ th_l สิ้นสุดสมการการตอบสนองของระดับน้ำตาลในเลือดของผู้ป่วยที่ต้องพึ่งอินซูลิน
! แหล่งที่มาของแบบจำลอง: ! A. Roy และ RS Parker. “การสร้างแบบจำลองไดนามิกของกรดไขมันอิสระ! กลูโคส และอินซูลิน: แบบจำลองขั้นต่ำที่ขยาย” ! เทคโนโลยีและการบำบัดโรคเบาหวาน 8(6), 617-626, 2006. พารามิเตอร์p1 = 0.068 ! 1/นาทีp2 = 0.037 ! 1/นาทีp3 = 0.000012 ! 1/นาทีp4 = 1.3 ! มล./(นาที·µU) p5 = 0.000568 ! 1/มล. p6 = 0.00006 ! 1/(นาที·µmol) p7 = 0.03 ! 1/นาทีp8 = 4.5 ! มล./(นาที·µU) k1 = 0.02 ! 1/นาทีk2 = 0.03 ! 1/นาทีpF2 = 0.17 ! 1/นาทีpF3 = 0.00001 ! 1/นาทีn = 0.142 ! 1/นาทีVolG = 117 ! dL VolF = 1 1.7 ! L ! พารามิเตอร์พื้นฐานสำหรับผู้ป่วยเบาหวานชนิดที่ 1 Ib = 0 ! อินซูลิน (µU/mL) Xb = 0 ! อินซูลินระยะไกล (µU/mL) Gb = 98 ! ระดับน้ำตาลในเลือด (mg/dL) Yb = 0 ! อินซูลินสำหรับการสร้างไขมัน (µU/mL) Fb = 380 ! กรดไขมันอิสระในพลาสมา (µmol/L) Zb = 380 ! กรดไขมันอิสระระยะไกล (µmol/L) ! อัตราการให้ยาอินซูลินu1 = 3 ! µU/นาที! อัตราการดูดซึมกลูโคสu2 = 300 ! mg/นาที! การให้สารไขมันจากภายนอกu3 = 0 ! มก./นาทีพารามิเตอร์สุดท้ายสารตัวกลางp9 = 0.00021 * exp ( - 0.0055 * G ) ! dL/(min*mg) สารตัวกลางสุดท้ายตัวแปรI = Ib X = Xb G = Gb Y = Yb F = Fb Z = Zb ตัวแปรสุดท้ายสมการ! พลวัตของอินซูลิน$ I = - n * I + p5 * u1 ! พลวัตของช่องอินซูลินระยะไกล$ X = - p2 * X + p3 * I ! พลวัตของกลูโคส$ G = - p1 * G - p4 * X * G + p6 * G * Z + p1 * Gb - p6 * Gb * Zb + u2 / VolG ! พลวัตของอินซูลินสำหรับการสร้างไขมัน$ Y = - pF2 * Y + pF3 * I ! พลวัตของกรดไขมันอิสระในพลาสมา (FFA) $ F = - p7 * ( F - Fb ) - p8 * Y * F + p9 * ( F * G - Fb * Gb ) + u3 / VolF ! พลวัตของ FFA ระยะไกล$ Z = - k2 * ( Z - Zb ) + k1 * ( F - Fb ) สิ้นสุดสมการดูเพิ่มเติม
ลิงก์ภายนอก
- หน้าหลักของ APMonitor
- หลักสูตรการเพิ่มประสิทธิภาพแบบไดนามิกกับ APMonitor
- เอกสารประกอบการใช้งาน APMonitor
- การอ้างอิง APMonitor
- เครื่องมือแก้ปัญหาออนไลน์ด้วย IPOPT
- การเปรียบเทียบไวยากรณ์ของภาษาสร้างแบบจำลองที่เป็นที่นิยม
- ดาวน์โหลด ไคลเอ็นต์ APM MATLAB , APM PythonหรือAPM Juliaสำหรับ APMonitor
- ดาวน์โหลดAPMonitor Server (สำหรับ Windows)
- ดาวน์โหลดAPMonitor Server (Linux)
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เอพีโมนิเตอร์
โปรแกรมตรวจสอบกระบวนการขั้นสูง (APMonitor) เป็นภาษาสร้างแบบจำลองสำหรับ สมการ พีชคณิตเชิง อนุพันธ์ ( DAE ) [ 1 ]...
การบูรณาการภาษาการเขียนโปรแกรม
Julia , MATLAB และ Python เป็นภาษาโปรแกรมทางคณิตศาสตร์ที่มีการบูรณาการกับ APMonitor ผ่าน API บริการบนเว็บ GEKKO Optimization Suite เป็นส่วนขยายล่าสุดของ APMonitor ที่มีการบูรณาการ Python อย่างสมบูรณ์...
DAE ดัชนีสูง
ลำดับสูงสุดของอนุพันธ์ที่จำเป็นในการเปลี่ยน DAE กลับไปเป็นรูปแบบ ODE เรียกว่า ดัชนีการหาอนุพันธ์ วิธีมาตรฐานในการจัดการกับ DAE ที่มีดัชนีสูงคือการหาอนุพันธ์ของสมการเพื่อให้อยู่ในรูปแบบ DAE หรือ ODE ที่มีดัชนี 1 (ดู อัลกอริทึม Pantelides ) อย่างไรก็ตาม...
การเคลื่อนที่แบบลูกตุ้ม (รูปแบบ DAE ดัชนี 3)
พารามิเตอร์ของ ลูกตุ้ม จำลอง m = 1 g = 9.81 s = 1 พารามิเตอร์ ปลาย ตัวแปร x = 0 y = - s v = 1 w = 0 lam = m * ( 1 + s * g ) / 2 * s ^ 2 สิ้นสุด ตัวแปร สม การ x ^ 2 + y ^ 2 = s ^ 2 x = v y = w m * v = -2 * x * lam m * w = -m * g - 2 * y * lam จบ สม การ จบ แบบ...