Tourism Logistics - โลจิสติกส์สำหรับการท่องเที่ยว

Welcome


Tourism
Logistics



CMSE
Conference



Journal EEQEL




คลังหนังสือ
Komsan
Suriya



















เข้าใจละ CGE ใน Matlab Print E-mail
คมสัน สุริยะ
26 กรกฎาคม 2552
 
 

หัวใจของ CGE

 
CGE คือ ระบบสมการ   การแก้สมการจึงจะทำได้ก็ต่อเมื่อจำนวนสมการเท่ากับจำนวนตัวแปร   สมการที่เราต้องสร้างได้แก่ สมการ zero profit ของแต่ละภาคการผลิต   สมการ  budget balance ของแต่ละครัวเรือน และสมการ market clearing  ของแต่ละสินค้า  ซึ่งในแบบจำลอง Shoven-Whalley  มีจำนวนภาคการผลิตอยู่ 3 ภาค ครัวเรือนอยู่ 2 ครัวเรือน สินค้าอยู่ 7 ตัว (รวมทุนและแรงงาน) ดังนั้นจำนวนสมการจะมีทั้งสิ้นเท่ากับ 3+2+7 เท่ากับ 12 สมการ
 

 
ตัวแปรที่เป็น unknown ก็ต้องมีจำนวน12  ตัวเท่ากัน อันประกอบด้วย ปริมาณการผลิต 3 ภาคการผลิต ระดับความพอใจของ 2 ครัวเรือน และราคาสินค้า 7 ตัว 
 



การทำงานของ CGE  ใน  Matlab

 
ใน Matlab อาจารย์เบริ๊กเกอร์ (มหาวิทยาลัยคีล ประเทศเยอรมนี) เขียนไว้ได้ซับซ้อนแต่สั้นกระชับ ขั้นตอนคือ เก็บค่าตัวแปรจากตาราง SAM   แล้วคำนวณ input coefficient (a) , output coefficient (b) , และ household demand coefficient (d) ออกมาด้วย Hotelling-Shepard-lemma   จากนั้นตั้งสมการที่ต้องการ solve คือ สมการ zero profit สมการ  budget balance และสมการ market clearing  แล้ว solve หาค่าตัว unknown ออกมาโดยมีเป้าหมายให้สมการเหล่านั้นเท่ากับ 0 ทั้งหมด
 

 
การเก็บค่าตัวแปรจากตาราง SAM แล้วกรองค่าตัวแปรให้เหมาะสมกับการคำนวณ พร้อมกับการกำหนดรูปแบบฟังก์ชั่น (cost function, revenue function, preference function) พร้อมทั้งคำนวณดุลยภาพ ณ สถานการณ์เริ่มต้น   ขั้นตอนเหล่านี้กระทำในฟังก์ชั่นหน้ากาก  
 

 
 จากนั้นส่งค่าตัวแปรจาก SAM ที่ผ่านการคัดกรองแล้วไปยังฟังก์ชั่น model  เพื่อคำนวณ a, b และ d   ออกมา พร้อมทั้งตั้งสมการเป้าหมาย  (zero profit, budget balance  และ market clearing)  และกำหนดตำแหน่งของ shock
 

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

 
ฟังก์ชั่น cgesolve พร้อมจะทำงานแล้ว เหลือเพียงการเลือกวิธีการทางคณิตศาสตร์เพื่อ solve ระบบสมการเท่านั้น เมื่อเลือกได้แล้วโปรแกรม Matlab ก็จะอาศัยเวลาพอประมาณเพื่อคำนวณหาค่า unknown ที่ทำให้สมการเป้าหมายได้ค่าออกมาเท่ากับ 0 พอดี
 

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



ข้อดีของการเขียน CGE บน Matlab 

 
ข้อดีของการเขียน CGE บน Matlab ก็คือสามารถดึงเอาฟังก์ชั่นที่มีท่านอื่นเขียนไว้แล้วมาใช้เป็น Sub-routine ของโปรแกรมของเราได้ และที่สำคัญคือตามไปตรวจสอบได้ด้วยว่าเขาเขียนฟังก์ชั่นนั้นว่าอย่างไร เราจึงสามารถทำความเข้าใจหากเกิด error อะไรขึ้น  และจะหาทางแก้ไขอะไรได้ง่ายกว่าใน GAMS แบบ MPS/GE ที่พอติดปัญหาแล้วก็ไม่รู้จะแก้อย่างไร  เพราะกลไกข้างในของมันไม่ได้แสดงไว้อย่างเปิดเผย
 



CGE v.s. Macroeconomic Model

 
ข้อแตกต่างระหว่าง CGE และ Macroeconomic Model  คือ CGE จะวนกลับมาปิดตัวเองเสมอ เหมือนเป็นสี่เหลี่ยมที่มีประตูอยู่ในแต่ละด้าน   ประตูทั้งสี่ต้องปิดเสมอ (สมการ zero profit ของแต่ละภาคการผลิต   สมการ  budget balance ของแต่ละครัวเรือน สมการ market clearing  ของแต่ละสินค้า และอีกสมการหนึ่งคือ  สมการปริมาณเงินในระบบเท่าเดิม  ซึ่งจะเป็นสมการที่การันตีว่าระบบสมการจะมีได้เพียงคำตอบเดียว )
 

 
ส่วน Macroeconomic Model  เราอาจจะเขียนให้เดินหน้าเรื่อย ๆ ไม่ต้องกลับมามองย้อนดูข้าง ๆ หรือข้างหลังว่าส่วนอื่น ๆ ของระบบมีความขัดแย้งกันเองหรือไม่ เช่น อัตราดอกเบี้ยที่คำนวณได้จากสมการหนึ่งกับอีกสมการหนึ่งอาจจะไม่เท่ากัน แสดงให้เห็นว่าระบบเศรษฐกิจไม่ได้อยู่ในดุลยภาพ แต่เราอาจจะไม่ใส่ใจที่จะคำนวณหาตัวแปรต่าง ๆ ที่จะทำให้อัตราดอกเบี้ยที่มาจากทุกทางเท่ากัน เราก็อาจจะเดินหน้าต่อไปด้วยค่าตัวแปรที่คำนวณได้จาก Partial equilibrium  อันใดอันหนึ่งแล้วคำนวณอย่างอื่นต่อไป
 

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



อย่างไรก็ตาม 
Macroeconomic Model  อาจเขียนให้ solve อะไรบางอย่างได้ เช่น ราคาสินค้า แต่ก็จะยังคงเป็น Partial equilibrium เพราะราคาดังกล่าวทำให้ตลาดนั้นได้ดุลยภาพ  ในขณะที่ตลาดอื่น ๆ อาจจะไม่ได้ดุลยภาพ  ซึ่งหมายความว่าอาจจะเกิดภาวะของเหลือขายไม่หมด หรือ ของขาดตลาด ( เกิด Excess supply หรือ Excess demand )
 



Matlab v.s. GAMS


สำหรับการเปรียบเทียบการเขียนโปรแกรมด้วย Matlab และ GAMS (เขียนแบบตรง ๆ ไม่ใช้ MPS/GE)  ดังที่มีท่านผู้ถามมา   อาจารย์เบริ๊กเกอร์ช่วยตอบให้ว่า Matlab ได้เปรียบในเรื่องการมี Sub-routine ที่ดึงมาใช้ได้ง่ายและเปิดเผยชัดเจน   และง่ายต่อการเปลี่ยนแปลงเพื่อทดลองรันในหลาย ๆ เงื่อนไข  ซึ่งจะใช้ได้ดีกับการทดลองเปลี่ยนแปลงรูปแบบตลาด จาก Perfect competitiong ไปเป็น Imperfect competition  แบบต่าง ๆ     ส่วน  GAMS  ได้เปรียบเรื่องการเขียนสมการออกมาหน้าตาเหมือนใน Text book  แต่จะยากหากต้องเปลี่ยนแปลงอะไรเพราะทุกบรรทัดจะมีผลต่อกันทั้งหมด   



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



ส่วน  GAMS แบบ MPS/GE  เวลามีปัญหาแล้วมักหาทางแก้กันไม่ค่อยได้  เพราะ Syntax ค่อนข้างไม่ยืดหยุ่น  ทำให้ใช้ได้กับการทดลองเล็ก ๆ น้อย ๆ จึงเหมาะกับการเป็นอุปกรณ์ประกอบการสอนในระดับเบื้องต้นเท่านั้น  ไม่เหมาะกับการใช้งานจริง



บันทึกเรื่องจำนวนสมการมากกว่าจำนวนตัวแปร


เรื่องสำคัญที่ควรบันทึกไว้อีกอย่างคือสมการปริมาณเงินในระบบเท่าเดิม  สมการนี้เพิ่มเข้ามาแล้วทำให้จำนวนสมการเท่ากับ 13 สมการ แต่ตัว unknown ยังเท่ากับ 12 ตัวอยู่ ถามว่ามีปัญหาไหม  คำตอบคือไม่มี  เพราะสมการนี้เกิดจากการใช้ P ที่คำนวณออกมาได้แล้วจากสมการจำนวน 12 สมการข้างต้น (หากสมการก่อนหน้านี้มีไม่ถึง 12 สมการจะคำนวณ P  ออกมาไม่ได้)  สมการสุดท้ายนี้เพียงแต่ shape ให้ P ออกมาตรงตามความต้องการเท่านั้น    แต่กระนั้นสมการจะมี 14 สมการก็ไม่ได้  เพราะเราไม่สามารถทำให้ P  สนองความต้องการหลายอย่างได้ในเวลาพร้อม ๆ กัน  ดูตัวอย่างข้างล่างนี้



X+Y =10
XY   =16

แบบนี้แก้สมการออกมาได้ว่า  X=2, Y=8   หรืออาจบอกว่า  X=8, Y=2  ก็ย่อมได้  ตอนนี้มีสองคำตอบ แล้วอันไหนถูกเราก็ไม่รู้

แต่เมื่อเรากำหนดสมการออกมาอีกว่า
Y-X  = 6

นั่นหมายความได้ว่า  X=2, Y=8  แน่นอนเพียงคำตอบเดียว

ดังนั้นการตั้งระบบสมการว่า

X+Y =10
XY   =16
Y-X  = 6

มีจำนวนสามสมการ แต่มีตัวแปรสองตัว  ย่อมหาคำตอบออกมาได้


ตรงข้ามกับระบบสมการแบบนี้

X+Y=10
XY=16
Y-X=6
X=2Y

ซึ่งไม่มีทางที่ X  จะเป็นได้ทั้ง 2  และ 16  ในเวลาเดียวกัน
เราเรียกระบบสมการนี้ว่า Over-indentification 
แปลว่าเราต้องการมากเกินกว่าที่สมการจะให้ได้   สมการก็เกินกำลังที่จะให้เราได้


แต่ถ้าระบบสมการมีสมการเดียว แต่มีตัวแปรสองตัว เช่น
X+Y=10
แบบนี้ก็หาค่าทั้ง X และ Y  ออกมาไม่ได้  เรียกว่า Under-indentification 
แปลว่าเราให้ไปน้อยกว่าที่สมการต้องการ  สมการก็เลยทำอะไรให้เราไม่ได้
เริ่มต้นที่ Math ลงท้ายที่ปรัชญา



 
 
Link สำคัญ
 
 
 
 
 
 
 

เกี่ยวกับลิขสิทธิ์เนื้อหาในเว็บไซต์ิ์

ผู้เขียนไม่หวงห้ามที่ท่านจะคัดลอกบทความ บนเว็บไซต์นี้ไปใช้ในรายงานของท่าน  

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

การไม่เขียนอ้างอิงดังกล่าวถือว่าละเมิดลิขสิทธิ์
และมีความผิดตามกฎหมาย  
 
 ขอขอบคุณทุกท่านมากครับ