Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
    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]])
Ejemplo n.º 3
0
    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]])
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
    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)
Ejemplo n.º 8
0
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))
Ejemplo n.º 9
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()))
Ejemplo n.º 10
0
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")
Ejemplo n.º 11
0
	# 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);
Ejemplo n.º 12
0
 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)
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
0
'''
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),
Ejemplo n.º 15
0
'''
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))