아래 Python 코드를 실행하고 numpy에서 오류가 발생합니다.
파일 "C : \ Users \ Krzysztof \ PycharmProjects \ PSO \ AssetSimulator.py", 줄 20, wiener_process return nrand.normal (loc = 0, scale = sqrt_delta_sigma, size = self.time) 파일 "mtrand.pyx", 줄 1557, mtrand.RandomState.normal (numpy \ random \ mtrand \ mtrand.c : 13649) ValueError : scale <= 0
어떤 생각? numpy 1.9.2가 있습니다.
크리스토퍼
import math
import numpy
import pandas
import numpy.random as nrand
class AssetSimulator:
def __init__(self, delta, sigma, mu, time):
self.delta = delta
self.sigma = sigma
self.time = time
self.mu = mu
def wiener_process(self):
sqrt_delta_sigma = math.sqrt(self.delta) * self.sigma
return nrand.normal(loc=0, scale=sqrt_delta_sigma, size=self.time)
그리고 여기 러너 함수, 시그마가 음수라고 생각하지 않습니다.
def runner_all(n, sigma, delta, mu, time, iterations, simulations, path, ce, cb, le, lb):
print("Experiment", path, "starting")
asset_simulator = AssetSimulator(delta, sigma, mu, time)
Portfolio.memoizer = {}
none, penalty, lagrange, repair, preserve, ss = [], [], [], [], [], 30
none_ve, penalty_ve, lagrange_ve, repair_ve, preserve_ve = [], [], [], [], []
none_vb, penalty_vb, lagrange_vb, repair_vb, preserve_vb = [], [], [], [], []
for i in range(simulations):
print("Simulation", i, "starting")
asset_returns = asset_simulator.assets_returns(n)
corr = pandas.DataFrame(asset_returns).transpose().corr()
# three_dimensional_landscape(asset_returns, corr, 100)
none_opt = BarebonesOptimizer(ss, asset_returns, corr)
result, violation_e, violation_b = none_opt.optimize_none(iterations + 1, ce, cb, le, lb)
none_ve.append(violation_e)
none_vb.append(violation_b)
none.append(result)
print("\tAlgorithm 1 Done")
lagrange_opt = BarebonesOptimizer(ss, asset_returns, corr)
result, violation_e, violation_b = lagrange_opt.optimize_penalty(iterations + 1, ce, cb, le, lb)
penalty_ve.append(violation_e)
penalty_vb.append(violation_b)
penalty.append(result)
print("\tAlgorithm 2 Done")
lagrange_opt = BarebonesOptimizer(ss, asset_returns, corr)
result, violation_e, violation_b = lagrange_opt.optimize_lagrange(iterations + 1, ce, cb, le, lb)
lagrange_ve.append(violation_e)
lagrange_vb.append(violation_b)
lagrange.append(result)
print("\tAlgorithm 3 Done")
repair_opt = BarebonesOptimizer(ss, asset_returns, corr)
result, violation_e, violation_b = repair_opt.optimize_repair(iterations + 1, ce, cb, le, lb)
repair_ve.append(violation_e)
repair_vb.append(violation_b)
repair.append(result)
print("\tAlgorithm 4 Done")
preserve_opt = BarebonesOptimizer(ss, asset_returns, corr)
result, violation_e, violation_b = preserve_opt.optimize_preserving(iterations + 1, ce, cb, le, lb)
preserve_ve.append(violation_e)
preserve_vb.append(violation_b)
preserve.append(result)
print("\tAlgorithm 5 Done")
n_r, n_ve, n_vb = pandas.DataFrame(none), pandas.DataFrame(none_ve), pandas.DataFrame(none_vb)
r_r, r_ve, r_vb = pandas.DataFrame(repair), pandas.DataFrame(repair_ve), pandas.DataFrame(repair_vb)
p_r, p_ve, p_vb = pandas.DataFrame(preserve), pandas.DataFrame(preserve_ve), pandas.DataFrame(preserve_vb)
pr_r, pr_ve, pr_vb = pandas.DataFrame(penalty), pandas.DataFrame(penalty_ve), pandas.DataFrame(penalty_vb)
l_r, l_ve, l_vb = pandas.DataFrame(lagrange), pandas.DataFrame(lagrange_ve), pandas.DataFrame(lagrange_vb)
n_r.to_csv(path + "/None Fitness.csv")
n_ve.to_csv(path + "/None Equality.csv")
n_vb.to_csv(path + "/None Boundary.csv")
r_r.to_csv(path + "/Repair Fitness.csv")
r_ve.to_csv(path + "/Repair Equality.csv")
r_vb.to_csv(path + "/Repair Boundary.csv")
p_r.to_csv(path + "/Preserve Fitness.csv")
p_ve.to_csv(path + "/Preserve Equality.csv")
p_vb.to_csv(path + "/Preserve Boundary.csv")
pr_r.to_csv(path + "/Penalty Fitness.csv")
pr_ve.to_csv(path + "/Penalty Equality.csv")
pr_vb.to_csv(path + "/Penalty Boundary.csv")
l_r.to_csv(path + "/Lagrangian Fitness.csv")
l_ve.to_csv(path + "/Lagrangian Equality.csv")
l_vb.to_csv(path + "/Lagrangian Boundary.csv")
plot_results([n_r.mean(), r_r.mean(), pr_r.mean(), l_r.mean(), p_r.mean()],
["A1 (No Method)", "A2 (Particle Repair Method)", "A3 (Penalty Function Method)",
"A4 (Augmented Lagrangian Method)", "A5 (Preserving Feasibility Method)"],
"Average Global Best Fitness f()", path + "/1 Fitness")
plot_results([r_r.mean(), pr_r.mean(), l_r.mean(), p_r.mean()],
["A2 (Particle Repair Method)", "A3 (Penalty Function Method)",
"A4 (Augmented Lagrangian Method)", "A5 (Preserving Feasibility Method)"],
"Average Global Best Fitness f()", path + "/1 Fitness Ex None")
plot_results([n_ve.mean(), r_ve.mean(), pr_ve.mean(), l_ve.mean(), p_ve.mean()],
["A1 (No Method)", "A2 (Particle Repair Method)", "A3 (Penalty Function Method)",
"A4 (Augmented Lagrangian Method)", "A5 (Preserving Feasibility Method)"],
"Average Global Best Equality Constraint Violation, C_E()", path + "/2 Equality Violations")
plot_results([r_ve.mean(), pr_ve.mean(), l_ve.mean(), p_ve.mean()],
["A2 (Particle Repair Method)", "A3 (Penalty Function Method)",
"A4 (Augmented Lagrangian Method)", "A5 (Preserving Feasibility Method)"],
"Average Global Best Equality Constraint Violation, C_E()", path + "/2 Equality Violations Ex None")
plot_results([n_vb.mean(), r_vb.mean(), pr_vb.mean(), l_vb.mean(), p_vb.mean()],
["A1 (No Method)", "A2 (Particle Repair Method)", "A3 (Penalty Function Method)",
"A4 (Augmented Lagrangian Method)", "A5 (Preserving Feasibility Method)"],
"Average Global Best Boundary Constraint Violation, C_B()", path + "/3 Boundary Violations")
plot_results([r_vb.mean(), pr_vb.mean(), l_vb.mean(), p_vb.mean()],
["A2 (Particle Repair Method)", "A3 (Penalty Function Method)",
"A4 (Augmented Lagrangian Method)", "A5 (Preserving Feasibility Method)"],
"Average Global Best Boundary Constraint Violation, C_B()", path + "/3 Boundary Violations Ex None")
plot_results([n_r.std(), r_r.std(), pr_r.std(), l_r.std(), p_r.std()],
["A1 (No Method)", "A2 (Particle Repair Method)", "A3 (Penalty Function Method)",
"A4 (Augmented Lagrangian Method)", "A5 (Preserving Feasibility Method)"],
"Average Global Best Fitness Standard Deviation f()", path + "/4 Fitness Stdev")
plot_results([r_r.std(), pr_r.std(), l_r.std(), p_r.std()],
["A2 (Particle Repair Method)", "A3 (Penalty Function Method)",
"A4 (Augmented Lagrangian Method)", "A5 (Preserving Feasibility Method)"],
"Average Global Best Fitness Standard Deviation f()", path + "/4 Fitness Stdev Ex None")
def surface_plotter(n, sigma, delta, mu, time, c_e, c_b, m_e, m_b):
asset_simulator = AssetSimulator(delta, sigma, mu, time)
asset_returns = asset_simulator.assets_returns(n)
corr = pandas.DataFrame(asset_returns).transpose().corr()
three_dimensional_landscape(asset_returns, corr, 200, c_e, c_b, m_e, m_b)
def run():
matplotlib.rc('font', family='Arial')
coeff_e, coeff_b, lagrange_e, lagrange_b = 2.0, 2.0, 0.5, 0.5
runner_all(4, 0.125, float(1 / 252), 0.08, 500, 80, 60, "Results (A)", coeff_e, coeff_b, lagrange_e, lagrange_b)
runner_all(8, 0.125, float(1 / 252), 0.08, 500, 80, 60, "Results (B)", coeff_e, coeff_b, lagrange_e, lagrange_b)
runner_all(16, 0.125, float(1 / 252), 0.08, 500, 80, 60, "Results (C)", coeff_e, coeff_b, lagrange_e, lagrange_b)
if __name__ == '__main__':
run()
from __future__ import division
모듈에 없는 한 1/252가 0으로 평가되는 Python 2를 사용하고 있다고 가정합니다 . 대신 1/252가있는 곳에 1. / 252를 사용할 수 있습니다. 최소 오류 예 :
import math
import numpy.random as nrand
class AssetSimulator:
def __init__(self, delta, sigma, mu, time):
self.delta = delta
self.sigma = sigma
self.time = time
self.mu = mu
def wiener_process(self):
sqrt_delta_sigma = math.sqrt(self.delta) * self.sigma
print sqrt_delta_sigma
return nrand.normal(loc=0, scale=sqrt_delta_sigma, size=self.time)
def runner_all(n, sigma, delta, mu, time, iterations, simulations, path, ce, cb, le, lb):
print("Experiment", path, "starting")
asset_simulator = AssetSimulator(delta, sigma, mu, time)
asset_simulator.wiener_process()
def run():
coeff_e, coeff_b, lagrange_e, lagrange_b = 2.0, 2.0, 0.5, 0.5
runner_all(4, 0.125, float(1 / 252), 0.08, 500, 80, 60, "Results (A)", coeff_e, coeff_b, lagrange_e, lagrange_b)
if __name__ == '__main__':
run()
준다
('Experiment', 'Results (A)', 'starting')
0.0
Traceback (most recent call last):
File "problem2.py", line 26, in <module>
run()
File "problem2.py", line 23, in run
runner_all(4, 0.125, float(1 / 252), 0.08, 500, 80, 60, "Results (A)", coeff_e, coeff_b, lagrange_e, lagrange_b)
File "problem2.py", line 19, in runner_all
asset_simulator.wiener_process()
File "problem2.py", line 14, in wiener_process
return nrand.normal(loc=0, scale=sqrt_delta_sigma, size=self.time)
File "mtrand.pyx", line 1487, in mtrand.RandomState.normal (numpy/random/mtrand/mtrand.c:9958)
ValueError: scale <= 0
동안
import math
import numpy.random as nrand
class AssetSimulator:
def __init__(self, delta, sigma, mu, time):
self.delta = delta
self.sigma = sigma
self.time = time
self.mu = mu
def wiener_process(self):
sqrt_delta_sigma = math.sqrt(self.delta) * self.sigma
print sqrt_delta_sigma
return nrand.normal(loc=0, scale=sqrt_delta_sigma, size=self.time)
def runner_all(n, sigma, delta, mu, time, iterations, simulations, path, ce, cb, le, lb):
print("Experiment", path, "starting")
asset_simulator = AssetSimulator(delta, sigma, mu, time)
asset_simulator.wiener_process()
def run():
coeff_e, coeff_b, lagrange_e, lagrange_b = 2.0, 2.0, 0.5, 0.5
runner_all(4, 0.125, float(1. / 252), 0.08, 500, 80, 60, "Results (A)", coeff_e, coeff_b, lagrange_e, lagrange_b)
if __name__ == '__main__':
run()
준다
('Experiment', 'Results (A)', 'starting')
0.00787425985436
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다