def renew_centroid_for_four(self, theta): central = [] weight = [] for j in range(6): if (theta >= 0): so = centroid_t_to_f(self.oildrums[j].length, self.oildrums[j].width, self.oildrums[j].height, self.oildrums[j].volume, theta) p = so.solve() weight.append(self.oildrums[j].weight) t = ut.threeDim2threeDim(p, self.oildrums[j].get_xyz(), self.oildrums[j].get_lwh()) central.append(ut.point(t[0], t[1], t[2])) else: weight.append(self.oildrums[j].weight) so = centroid_t_to_f(self.oildrums[j].length, self.oildrums[j].width, self.oildrums[j].height, self.oildrums[j].volume, math.fabs(theta)) p = so.solve() tmp = point(self.oildrums[j].length - p.getX(), p.getY(), p.getZ()) t = ut.threeDim2threeDim(tmp, self.oildrums[j].get_xyz(), self.oildrums[j].get_lwh()) central.append(point(t[0], t[1], t[2])) central.append(ut.point(0, 0, 0)) # 加上飞行器的质心 weight.append(3000) # 加上飞行器的质量 cur_weight_point = ut.centroid_of_centorids( central, weight) #求多个质心坐标的到一个质心坐标 v point 质心坐标list t 质量 return cur_weight_point, central, weight
def truncate( self, y ): # trunca el trapecio con la recta que se le pasa como parametro que es paralela a x if y >= self.points[1].y: # significa que la recta esta por encima del trapecio return trapezoidal(self.points) mr1 = slope( self.points[0], self.points[1]) # pendiente de los dos primero puntos del trapecio mr2 = slope( self.points[2], self.points[3]) # pendiente de los dos ultimos puntos del trapecio nr1 = trace( mr1, self.points[0] ) # traza de la recta formada por los 2 primeros del trapecio nr2 = trace( mr2, self.points[2] ) # traza de la recta formada por los 2 ultimos del trapecio x1 = (y - nr1) / mr1 # x del punto de interseccion con la primera recta x2 = (y - nr2) / mr2 # x del punto de interseccion con la segunda recta return trapezoidal( [self.points[0], point(x1, y), point(x2, y), self.points[3]])
def truncate( self, y ): # trunca el triangulo con una recta parametro que es paralela a x if y >= self.points[ 1].y: # significa que la recta esta por encima del triangulo y no lo trunca return triangle(self.points) mr1 = slope(self.points[0], self.points[1] ) # pendiente de los dos primero puntos del triangulo mr2 = slope(self.points[1], self.points[2] ) # pendiente de los dos segundos puntos del triangulo nr1 = trace( mr1, self.points[0] ) # traza de la recta fromada por los 2 primeros puntos del triangulo nr2 = trace( mr2, self.points[1] ) # traza de la recta fromada por los 2 segundos puntos del triangulo x1 = (y - nr1) / mr1 # x del punto de interseccion con la primera recta x2 = (y - nr2) / mr1 # x del punto de interseccion con la segunda recta return trapezoidal( [self.points[0], point(x1, y), point(x2, y), self.points[2]])
def compute_vals(in_mat, out_mat): import numpy as np from utils import point a, b = np.loadtxt(in_mat), np.loadtxt(out_mat) rmse_val = str(np.sqrt(((np.matmul(a,b)-np.identity(4))**2).mean())) return point(a), point(b), rmse_val
def cal_one_kg_pw(self): # 计算减少单位质量造成的飞行器质心偏移 v = [] v.append(point(self.ari_x, self.air_y, self.air_z)) v.append(point(0, 0, 0)) w = [] w.append(100) # 表示这个点增加100的向量的反方向 w.append(3000) p = centroid_of_centorids(v, w) p = point(-p.getX(), -p.getY(), -p.getZ()) # p.norm() self.power_weight = p
def truncate(self, y): # si la recta esta por encima de la funcion m = slope(self.points[0], self.points[1]) if (m > 0 and y >= self.points[1].y) or (m < 0 and y >= self.points[0].y): return regular(self.points) m = slope(self.points[0], self.points[1]) n = trace(m, self.points[0]) x = (y - n) / m if m > 0: return regular([self.points[0], point(x, y)]) return regular([point(x, y), self.points[1]])
def to(obj_self, end1, end2, end3, steps=100): ctp = lambda pt: point(*pt) if type( pt) == tuple else pt # convert tuple to point s1, s2, s3, e1, e2, e3 = ctp(start1), ctp(start2), ctp( start3), ctp(end1), ctp(end2), ctp(end3) return self.jsonrpc.gesture(self.selector, s1, s2, s3, e1, e2, e3, steps)
def main(): logreg = learner(dimensions=1, data=data, w_initial=[0, 0], rate=.07,\ varrate=False, epsilon=1e-15, maxIter=1e4) logreg.solveLog() print("Predict Pr(y^=0) for x=3, x=5:") logreg.predict(utils.point(3, 0), y_hat=0) logreg.predict(utils.point(5, 0), y_hat=0) print("\nClassify the following points:") logreg.classify(utils.point(1.5, 0)) logreg.classify(utils.point(2.5, 0)) logreg.classify(utils.point(3.5, 0)) logreg.classify(utils.point(4.5, 0)) logreg.classify(utils.point(5.5, 0)) logreg.classify(utils.point(6.5, 0)) logreg.classify(utils.point(7.5, 0))
result = [] for data_pre in test_data: test_batch,condicate_id,keya = data_pre test_data_final = prepare_data(test_batch) # prob2 = mol.predict_with_dict(sess, test_data_final) #prob2,loss2, accuracy2= mol.calculate_with_dict(sess, test_data_final) rank_ = [[i, j] for i, j in zip(prob2[0], condicate_id)] #是x[0][0] x[0][1] 第二维度排序 tgt [0,1] 为正样本 rank = sorted(rank_, key=lambda x: x[0][1], reverse=True) topk = utils.point(rank, keya) result.append(topk) cnt += 1 re = pd.DataFrame(result) print("test:rst len ", len(re)) re.to_csv(os.path.join(RST_PATH,"result-%s.csv" % (testday)), index=False) except Exception as e: print(e,) logging.debug("test cnt {}\n,error {}".format(cnt,e)) logging.debug("execept e :{}".format(traceback.format_exc()))
from Rule import rule from utils import point from Fuzzy_system import fuzzy_system # Las funciones de pertenencia estan graficadas en el informe # Ejemplo 1 # R1 aire = frio => velocidad = parada # R2 aire = fresco => velocidad = lenta # R3 aire = correcto => velocidad = media # R4 aire = calido => velocidad = rapida # R5 aire = caliente => velocidad = maxima # Funciones de Pertenencia aire = caracteristic("aire") aire_frio = aire.add_regular("frio", [point(12, 1), point(15, 0)]) aire_fresco = aire.add_trapezoidal( "fresco", [point(12, 0), point(15, 1), point(18, 1), point(22, 0)]) aire_correcto = aire.add_trapezoidal( "correcto", [point(18, 0), point(22, 1), point(25, 1), point(27, 0)]) aire_calido = aire.add_trapezoidal( "calido", [point(25, 0), point(27, 1), point(30, 1), point(32, 0)]) aire_caliente = aire.add_regular("caliente", [point(30, 0), point(32, 1)]) velocidad = caracteristic("velocidad")
# Keep asking until you get a non-empty file if (len(classified) != 0): getting = False; getting = True; while (getting): data = input("input x y to be classified: "); data = data.split(); # check if input is invalid if (len(data) < 2): print("invalid input. Please input an x, y pair in the format: 'x y'"); else: # parse point into a point object with empty category me = point(float(data[0]), float(data[1])); # stop taking input if you get '1 1' if (me.x == 1 and me.y == 1): getting = False; break; # now do some calculus shit # Calculate distance to each classified point for item in classified: item.distance = utils.distanceBetween(me, item); # Sort classified by distance classified.sort(key=lambda x: x.distance);
def solve(self): if (self.theta == 0): height_left = self.area / self.length v = [] v.append(utils.point(0, 0, 0)) v.append(utils.point(self.length, 0, 0)) v.append(utils.point(self.length, 0, height_left)) v.append(utils.point(0, 0, height_left)) return utils.centroid_of_convex_polygon(v) if (self.theta < self.a0): # 此时分3中情况讨论 if (self.area <= self.extreme_small_volume_small_angle_area): # 此时三角形的两个点落在直角的两条边上 x * x * tan(theta) = 2 * s bottom = math.sqrt(2 * self.area / math.tan(math.radians(self.theta))) left = bottom * math.tan(math.radians(self.theta)) v = [] v.append(utils.point(0, 0, 0)) v.append(utils.point(0, 0, left)) v.append(utils.point(bottom, 0, 0)) return utils.centroid_of_convex_polygon(v) elif self.area > self.extreme_small_volume_small_angle_area and self.area <= self.extreme_big_volume_small_angle_area: # 此时两个点落在两条高线上 一共四个点 area_s1 = self.area - self.extreme_small_volume_small_angle_area delta_left = area_s1 / self.length v = [] v.append( utils.point( 0, 0, self.extreme_small_volume_small_angle_left_height + delta_left)) v.append(utils.point(self.length, 0, delta_left)) v.append(utils.point(self.length, 0, 0)) v.append(utils.point(0, 0, 0)) return utils.centroid_of_convex_polygon(v) elif self.area > self.extreme_big_volume_small_angle_area: rect_area = self.length * self.height delta_s = rect_area - self.area # x * x * tan(theta) = 2 * delta_s upper = math.sqrt(2 * delta_s / math.tan(math.radians(self.theta))) right = upper * math.tan(math.radians(self.theta)) v = [] v.append(utils.point(self.length - upper, 0, self.height)) v.append(utils.point(0, 0, self.height)) v.append(utils.point(0, 0, 0)) v.append(utils.point(self.length, 0, 0)) v.append(utils.point(self.length, 0, self.height - right)) return utils.centroid_of_convex_polygon(v) else: print('ERROR') else: # 角度 >= a0 # 此时分3种情况讨论 if self.area < self.extreme_small_volume_big_angle_area: # 此时三角形的两个点落在直角的两条边上 bottom = math.sqrt(2 * self.area / math.tan(math.radians(self.theta))) left = bottom * math.tan(math.radians(self.theta)) v = [] v.append(utils.point(0, 0, 0)) v.append(utils.point(0, 0, left)) v.append(utils.point(bottom, 0, 0)) return utils.centroid_of_convex_polygon(v) elif self.area >= self.extreme_small_volume_big_angle_area and self.area < self.extreme_big_volume_big_angle_area: # 此时两个点落在两条高线上 一共四个点 area_s1 = self.area - self.extreme_small_volume_small_angle_area delta_bottom = area_s1 / self.height v = [] v.append( utils.point( self.extreme_small_volume_big_angle_bottom_point + delta_bottom, 0, 0)) v.append(utils.point(delta_bottom, 0, self.height)) v.append(utils.point(0, 0, self.height)) v.append(utils.point(0, 0, 0)) return utils.centroid_of_convex_polygon(v) elif self.area > self.extreme_big_volume_big_angle_area: rect_area = self.length * self.height delta_s = rect_area - self.area # x * x * tan(theta) = 2 * delta_s upper = math.sqrt(2 * delta_s / math.tan(math.radians(self.theta))) right = upper * math.tan(math.radians(self.theta)) v = [] v.append(utils.point(self.length - upper, 0, self.height)) v.append(utils.point(0, 0, self.height)) v.append(utils.point(0, 0, 0)) v.append(utils.point(self.length, 0, 0)) v.append(utils.point(self.length, 0, self.height - right)) return utils.centroid_of_convex_polygon(v) else: print('ERROR', self.area)
def main(): data = \ [utils.point(0,0,0,True), utils.point(0,0,1,True), utils.point(0,1,0,True), utils.point(0,1,1,False), utils.point(1,0,0,True), utils.point(1,0,0,True), utils.point(1,1,0,False), utils.point(1,0,1,True), utils.point(1,1,0,False), utils.point(1,1,0,False)] validation = \ [utils.point(0,0,0,True), utils.point(0,1,1,True), utils.point(1,1,0,True), utils.point(1,0,1,False), utils.point(1,0,0,True)] forest = utils.forest(data) forest.genMTreesNPoints(10, 10) for v in validation: forest.validate(v)
''' Created on December 1, 2019 @author: Zoya Samsonov ''' import utils from learn_method import learner # x was pre-selected iid train_data = utils.pointdata([ utils.point([-1.18971], 11.41540), utils.point([2.70383], 17.31071), utils.point([3.21282], 20.32224), utils.point([0.21780], 10.04744), utils.point([7.38929], 64.60164), utils.point([-0.10828], 10.01173), utils.point([-0.65363], 10.42724), utils.point([0.91987], 10.84616), utils.point([4.15727], 27.28287), utils.point([6.81239], 56.40865), utils.point([9.24428], 95.45665), utils.point([-1.31987], 11.74204) ]) # x was pre-selected iid test_data = utils.pointdata([ utils.point([7.11829], 60.67008), utils.point([2.91025], 18.46957), utils.point([1.35384], 11.83289), utils.point([3.24483], 20.52890),
''' Created on October 5, 2019 @author: Zoya Samsonov ''' from learn_method import learner import utils data = utils.pointdata([ utils.point(1, -1), utils.point(2, 1), utils.point(3, -1), utils.point(4, 1), utils.point(5, -1), utils.point(6, 1), utils.point(7, 1), utils.point(8, 1) ]) def main(): logreg = learner(dimensions=1, data=data, w_initial=[0, 0], rate=.07,\ varrate=False, epsilon=1e-15, maxIter=1e4) logreg.solveLog() print("Predict Pr(y^=0) for x=3, x=5:") logreg.predict(utils.point(3, 0), y_hat=0) logreg.predict(utils.point(5, 0), y_hat=0) print("\nClassify the following points:") logreg.classify(utils.point(1.5, 0)) logreg.classify(utils.point(2.5, 0))