1 回答

TA貢獻1788條經驗 獲得超4個贊
這是使用字典值構建問題的一種方法:
from gekko import GEKKO
# stored as list
my_vars = ['x1','x2']
# stored as dictionaries
Cost = {'x1':100,'x2':125}
Min = {'x1':0,'x2':0}
Max = {'x1':70,'x2':40}
LP = GEKKO(remote=False)
va = LP.Array(LP.Var, (len(my_vars)))? # array
vd = {}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # dictionary
for i,xi in enumerate(my_vars):
? ? vd[xi] = va[i]
? ? vd[xi].lower = Min[xi]
? ? vd[xi].upper = Max[xi]
# Cost function
LP.Minimize(LP.sum([Cost[xi]*vd[xi] for xi in my_vars]))?
# Summation as an array
LP.Equation(LP.sum(va)==100)
# This also works as a dictionary
LP.Equation(LP.sum([vd[xi] for xi in my_vars])==100)
LP.solve(disp=True)
for xi in my_vars:
? ? print(xi,vd[xi].value[0])
print ('Cost: ' + str(LP.options.OBJFCNVAL))
這產生了一個解決方案:
EXIT: Optimal Solution Found.
?The solution was found.
?The final value of the objective function is? 10750.00174236579
?
?---------------------------------------------------
?Solver? ? ? ? ?:? IPOPT (v3.12)
?Solution time? :? 0.012199999999999996 sec
?Objective? ? ? :? 10750.00174236579
?Successful solution
?---------------------------------------------------
?
x1 69.999932174
x2 30.0000682
Cost: 10750.001742
添加回答
舉報