Page 1 of 1

การ Solver ด้วยการเขียนโค้ด

Posted: Thu Mar 21, 2019 11:06 am
by blinkty
สวัสดีค่ะ

เขียนโค้ด VBA เพื่อใช้สำหรับการรันหาค่า optimize แต่โค้ดที่เขียนไม่สามารถทำงานได้ค่ะ และแจ้ง "user-defined type not defined" ค่ะ
ด้านล่างคือโค้ดที่ให้ในการรันค่ะ และแนบไฟล์ที่ลองทำมาด้วยค่ะ

Code: Select all


Sub RunSovel()

Dim prob As New RSM.Problem
Dim obj As New RSM.Function
Dim var As New RSM.Variable
Dim constr As New RSM.Function

With prob

.Variables.Clear
.Function.Clear
.Engine.ParamReset

'Objective
.obj.Init Range("TotalCost")
.obj.FunctionType = Function_Type_Objective
.Function.Add obj

'Min Value
.Solver.SolveType = Solver_Type_Minimize

'Variable cells
.var.Init Range("NumberWorking")
.var.IntegerType.Array = Integer_Type_Binary
.Variables.Add var

'Constraint
constr.Init Range("TotalWorking")
constr.FunctionType = Function_Type_Constraint
constr.LowerBound.Array = "MinimumNeeded"
.Function.Add constr

.Solver.Optimize
.Engine = .Engines(prob.Engine.Simplex)

End Sub


Re: การ Solver ด้วยการเขียนโค้ด

Posted: Thu Mar 21, 2019 8:46 pm
by snasui
:D Code ที่นำมาถามไปนำมาจากไหนครับ

หากเขียนขึ้นเองย่อมต้องทราบว่าเกิดจากปัญหาใด ช่วยกลับไปที่ต้นแหล่งแล้วตรวจสอบดูว่าได้นำ Code มาครบทุกส่วนหรือไม่ครับ

Re: การ Solver ด้วยการเขียนโค้ด

Posted: Fri Mar 22, 2019 7:46 am
by blinkty
โค้ดหาจากหนังสือ อินเตอร์เน็ตแล้วลองเอามาปรับเขียนกับโจทย์นี้ตามค่ะ เพิ่งลองทำครั้งแรกเลยยังไม่เข้าใจโค้ด คำสั่งเท่าไหร่ค่ะ ลองแก้ปรับเองหลายครั้งแล้วแต่ยังแก้ได้ค่ะ

ขออภัยด้วยค่ะ

Re: การ Solver ด้วยการเขียนโค้ด

Posted: Fri Mar 22, 2019 9:33 pm
by snasui
:D ถ้าเช่นนั้นก็กลับไปดูจากหนังสือหรือ Internet ต้นแหล่งครับ

Code นั้นไม่ใช่เขียนเดี่ยว ๆ แล้วจะใช้ได้ จะต้องมี Class หรือ Add-Ins หรือ Reference ที่มี Class RSM.Problem ให้เรียกใช้ครับ