GEKKO 对 csv 中每个数据点进行优化

问题描述 投票:0回答:1

所以我有一个以下格式的目标函数

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 

我需要一个可以读取变量的表达式解析器

python-3.x optimization pyomo gekko
1个回答
0
投票

这个问题需要一些额外的说明,但这里有一个可能满足问题目标的示例脚本。如果需要,请澄清。

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
切换到参数回归模式。

© www.soinside.com 2019 - 2024. All rights reserved.