所以我有一个以下格式的目标函数
3*[var_1] + [ROW_MEAN_hpbh]*[var_2] + [MAX_feia] * [var_3]
哪里
[ROW_MEAN_hbph] is the row mean of 2 columns
[MAX_feia] is the max value of another column of the dataset
[var_1] [var_2] [var_3] are varibales with upper bound and lower bound defined
我需要一个可以读取变量的表达式解析器
这个问题需要一些额外的说明,但这里有一个可能满足问题目标的示例脚本。如果需要,请澄清。
import numpy as np
import pandas as pd
from gekko import GEKKO
# Example dataset
data = {
'col1': [1, 2, 3],
'col2': [4, 5, 6],
'col_feia': [7, 8, 9]
}
df = pd.DataFrame(data)
# Calculate ROW_MEAN_hbph and MAX_feia
ROW_MEAN_hbph = df[['col1', 'col2']].mean(axis=1).mean()
MAX_feia = df['col_feia'].max()
# Gekko model
m = GEKKO()
var_1,var_2,var_3 = m.Array(m.Var,3,lb=1,ub=5)
m.Minimize(3*var_1 + ROW_MEAN_hbph*var_2 + MAX_feia*var_3)
m.options.SOLVER = 1
m.solve(disp=True)
print('var_1:', var_1.value[0])
print('var_2:', var_2.value[0])
print('var_3:', var_3.value[0])
解决方案是所有变量的下限,但如果您使用自己的数据进行更新,这可能会改变。
----------------------------------------------
Steady State Optimization with APOPT Solver
----------------------------------------------
1 1.55000E+01 0.00000E+00
Successful solution
---------------------------------------------------
Solver : APOPT (v1.0)
Solution time : 0.018999999999999996 sec
Objective : 15.5
Successful solution
---------------------------------------------------
var_1: 1.0
var_2: 1.0
var_3: 1.0
如果您需要将方程应用于数据的每一行,请使用
m.options.IMODE=2
切换到参数回归模式。