【发布时间】:2019-01-23 21:42:02
【问题描述】:
import pandas as pd
import numpy as np
import re
import cvxpy as cvx
data = pd.read_excel('Optimality_V3.xlsx', encoding='latin-1')
如您所见,我刚刚导入了一个 csv 文件作为数据框。现在我想使用 CVXPY 库解决一个最大化函数,以识别行数据['D'] 的最佳值,以使数据['B'] 的值之和最大。
我的目标函数是二次的,因为我的决策变量 data['D'] 函数是这样的:
数据['B'] = 数据['C'] * 数据['D']**2 / 数据['E'].
我要分配给每一行数据的约束['D']:
数据['D'] * 0.8
decision_variables = []
variable_constraints = []
for rownum, row in data.iterrows():
var_ind = str('x' + str(rownum))
var_ind = cvx.Variable()
con_ind = var_ind * 0.8 <= var_ind <= var_ind * 1.2
decision_variables.append(str(var_ind))
variable_constraints.append(str(con_ind))
上面的代码是我的尝试。我是 CVXPY 的新手,并试图弄清楚如何使用约束 con_ind 创建名为 var_ind 的变量。
【问题讨论】:
-
data['D'] * 0.8 <= data['D'] <= data['D'] * 1.2真的很奇怪。你可能想检查你的数学。 -
data['D'] 是一个变量,其范围在自身的 0.8 倍和自身的 1.2 倍之间。我应该更好地提出这个问题,你可以在下面看到一个更新的版本!
标签: pandas mathematical-optimization pulp cvxopt cvxpy