작은 코드를 파이썬으로 작성했으며 올바르게 작동합니다.데이터 프레임 반복 및 최적화를위한 함수 작성
import numpy as np
import pandas as pd
from scipy.optimize import minimize
"""define power and coefficients"""
power = 0.6
coefficient = 5.6
"""define objective function"""
def func(x,sign=1.0):
return sign*sum(coefficient*(x[0:]**power))
""" define constraints"""
cons = ({'type': 'ineq', 'fun': lambda x: x[1] - 2 * x[1] + 2},
{'type': 'ineq', 'fun': lambda x: -x[2] - 2 * x[1] + 6},
{'type': 'ineq', 'fun': lambda x: -x[0] + 2 * x[1] + 2})
""" define bounds"""
bnds = ((0.7, 1.3), (0.7, 1.3), (0.7,1.3))
"""initial values of the variables"""
x0 = np.array([1.1, 3.9,5.6])
"""run the optimization algorithm"""
res = minimize(func, x0, method='SLSQP',bounds = bnds,constraints=cons,
options={'disp': True})
"""print the results"""
print(res.x)
이 코드는 목적 함수
def func(x,sign=1.0):
return sign*sum(coefficient*(x[0:]**power))
및
x0 = np.array([1.1, 3.9,5.6])
로서 초기 값을 포함하지만 모든 하드 코딩된다. 런타임에 양식을 만들고 싶습니다.
즉 I는 CSV 파일을, I는 CSV 파일의 dataframe 구조로 그것을 읽어는
DV_Name Investment
DV1 1.2
DV2 1.2
DV3 1.3
DV4 1.2
DV5 1.2
DV6 4.5
DV7 1.2
DV8 2.7
DV9 1.2
DV10 1.2
내가
pd.DataFrame.from_csv
사용된다.
내 목표 값을 coeff*(DV1^power + DV2^power + DV3^power ......DV10^power)
형태로 사용하려면 무엇을해야합니까? 그리고 초기 값 배열 x0은 투자 (예 : 투자 (0), 투자 (1) ...)의 값으로 배열됩니다.