misfit[i] = f(data[i, :]) title('neighbourhood algoritthm with ns=' + str(ns) + ' nr=' + str(nr)) # scatter(data[:,x_idx],data[:,y_idx]) # show() # exit() #选择nr个样本点,生成ns个样本 datasum = data.copy() for itr in xrange(1, n_itr + 1): print('iteration number is ' + str(itr)) if itr != 1: data = oridata.copy() for i in xrange(size(data, 0)): misfit[i] = f(data[i, :]) #在前一次迭代生成的ns个样本中选择misfit最小的nr个 bdcdatasum = sc.broadcast(datasum) chdata = sort(misfit) chindex = argsort(misfit) oridata = [] print('data: ', str(data[chindex[0], :])) print('misfit is ', str(chdata[0])) par_data = data[chindex[:nr, :]].copy() #test par_value = sc.parallelise( par_data, par_num).flatmap(lambda input_data: findData( input_data, bdcdatasum, ns, nr, n_par, lowb, upperb)) oridata = asarry(par_value.collect()) #must test datasum = asarray(list(datasum) + list(oridata)) #生成的总样本数 scatter(datasum[:, x_idx], datasum[:, y_idx]) show()