1 回答

TA贡献1810条经验 获得超4个赞
由于您没有将其包含在您的帖子中,因此我制作了一个模型find_error功能
find_error = lambda i, j: random.random()
除了创建随机值之外,它并没有真正做任何事情。当然,您需要使用自己的函数。
另外,我不知道你试图做什么
for j in range(1, n):
for i in range(1, j):
optimal[j] = val + c + min(optimal[i - 1])
这将导致错误,因为min需要一个序列但optimal[i - 1]总是一个整数。
我添加了两个列表val_list和idx_list
val_list = []
idx_list = []
它将存储您的值并最终打印它们。
import itertools
import numpy as np
import random
find_error = lambda i, j: random.random()
def optimisation(c, n):
val_list = []
idx_list = []
optimal = n * [0] # create empty set for optimal values for each segment
optimal[0] = 0 # set error value for first partition equal to zero
for j in range(2, n): # finds the minimum error for each partition
samples = []
for i in range(1, j): # finds the minimal error for each line segment
samples.append(find_error(i, j))
samples = np.trim_zeros(samples)
#print(samples)
val = n * [0]
idx = n * [0]
(val, idx) = min((val, idx) for (idx, val) in enumerate(samples))
#print(val, idx)
val_list.append(val)
idx_list.append(idx)
print(val_list)
print(idx_list)
#for j in range(1, n):
# for i in range(1, j):
# optimal[j] = val + c + min(optimal[i - 1])
optimisation(5, 100)
哪个打印:
[0.6748920956425049, 0.20157630160777396, 0.541618597753885, 0.2768964675507879, 0.2976946308913999, 0.3766115048894233, 0.13759194561337484, 0.14987103061621476, 0.014534443068388692, 0.0031480380328120505, 0.034201372897887716, 0.062040806572080553, 0.12730306740011677, 0.24416492868734152, 0.16290838010569786, 0.0018081174520545584, 0.08755932761277996, 0.019842603354791377, 0.020590886194172042, 0.0036695714888764774, 0.12112028957966736, 0.011358619347358823, 0.0066146447764062755, 0.001394609349268272, 0.029586896510528815, 0.002756814742788438, 0.0583562604851291, 0.04284009994467686, 0.016023085954640637, 0.022566876451069584, 0.033772524651475844, 0.005337819133243049, 0.008672534870379667, 0.07821234490854523, 0.039383235142540496, 0.06648877424948574, 0.02217050629348072, 0.0011878402013764111, 0.0076300194701606205, 0.05055673273571437, 0.005344908265560777, 0.007028301085901245, 0.04165421018218529, 0.049295508008472266, 0.05093904397035376, 0.0034540854779047114, 0.02459850682010234, 0.0025335204612035866, 0.05614152881910395, 0.006084903262635, 0.0009059035342229294, 0.01200570503260534, 0.02220929842526087, 0.015366700312140713, 0.00958513758114643, 0.07156333927540381, 0.04216894275052541, 0.008754644639532905, 0.0002495576990957371, 0.008797367341674467, 7.564443573293556e-05, 0.024383979420044333, 0.02788410790756546, 0.021374008158427937, 0.0036953803742704183, 0.013104935266165296, 0.002671114966841137, 0.009159016248525886, 0.005064956945909693, 0.003681503103729278, 0.0009758561877718508, 0.04040161906291373, 0.0004948154900136226, 0.04624146511169147, 0.006594572334752913, 0.003143832522642165, 0.007757875588931151, 0.0030850898821545014, 0.027203566823009617, 0.01721978081614073, 0.0029359570317655237, 0.01059502437128057, 0.006236364658167459, 0.004946834269317746, 0.0032451574275564887, 0.016990675372012154, 0.004935140406089111, 0.0006326108410349418, 0.0036785177995684037, 0.0017698129491926506, 7.475397610190448e-05, 0.0032981939769008983, 0.014765189588278771, 0.012874838822510615, 0.0024783407934703128, 0.006636389782331609, 0.003974376946173419, 0.025291230241184626]
[0, 1, 2, 3, 2, 3, 4, 5, 6, 6, 0, 9, 10, 1, 11, 4, 11, 10, 8, 15, 10, 5, 9, 22, 10, 20, 20, 22, 5, 14, 24, 15, 5, 20, 3, 17, 29, 15, 24, 0, 13, 27, 40, 37, 37, 34, 21, 15, 6, 19, 8, 1, 32, 6, 43, 52, 56, 45, 49, 57, 13, 3, 22, 24, 54, 24, 34, 35, 5, 62, 41, 31, 59, 34, 71, 49, 47, 7, 42, 61, 16, 20, 58, 60, 40, 85, 57, 40, 19, 71, 31, 83, 73, 35, 5, 91, 42, 29]
添加回答
举报