zoukankan      html  css  js  c++  java
  • 一个数据结构设计实例(下)

    把自己的需求又重新看了一下,首先 感谢下那位默默按顶的园友,不管怎样是他给了我 把(下)

    写了的决心。因为由于以下原因,我没有完全实现(上)中的需求。

    1.本人 较笨 短时间内 没想出 方法

    2.这个模块的 效果重点是规则 参数的动态设定,因为不同的case 同一个规则的标准可能不一样

    3.出于综合 考虑,只能妥协了一部分需求,你可以理解为我的借口,也可以理解为身不由己。

    正文:

    order_set 里 存了所有的order种类

    opposite_dict里存储了所有互相矛盾的 order关系对

    扫描了每条规则都会生成一个order_dict,例如:

    order_dict={'rise_percent':0.1,'drop_percent':0.1,'level':2,'reason':'low power'}

    所有的order_dict都存到 rule_result这个list里。

    将rule_result里的规则 按照 level从低到高 排序 这么做的好处是,可以让低可信度的冲突,先抵消掉,然后在考虑高可信度的冲突

    原本的需求是,高可信度的order有冲突,那么就由低可信度的决定。

    现在是高可信度order冲突,这一对冲突order就无效

    同时 同类型的order,高可信度的 要替代低可信度的

    不同规则 产生的order reason不一样,通过这个 区分 是否是同一个规则 产生的order

    好了 大致思想就是这样了

    部分代码(python):

     1   def __summary(self):
     2         """
     3         总结规则 
     4         """
     5         self.order_dict = {}
     6         order_set = set(['rise_percent', 'drop_percent', 'grad_percent', 'delete_percent'])
     7         opposite_dict = {'rise_percent':'drop_percent', 'drop_percent':'rise_percent', \
     8                 'grad_percent':'delete_percent', 'delete_percent':'grad_percent'}
     9         #按level从小到大排序
    10         self.rule_result.sort(key = lambda x:x['level'])
    11         for rule in self.rule_result:
    12             keys = order_set.intersection(set(rule.keys()))
    13             for key in keys:
    14                 level = key + '_level'
    15                 reason = key + '_reason'
    16                 opp_key = opposite_dict[key]
    17                 opp_level = opp_key + '_level'
    18                 opp_reason = opp_key + '_reason'
    19                 
    20                 if self.order_dict.has_key(key):
    21                     if rule['level'] > self.order_dict[level]:
    22                         if self.order_dict.has_key(opp_key) and self.order_dict[reason] != self.order_dict[opp_reason]:
    23                             if rule['level'] == self.order_dict[opp_level]:
    24                                 del self.order_dict[opp_key]
    25                                 del self.order_dict[opp_level]
    26                                 del self.order_dict[opp_reason]
    27                                 continue
    28                         self.order_dict[key] = rule[key]
    29                         self.order_dict[level] = rule['level']
    30                         self.order_dict[reason] = rule['reason']
    31                 else:
    32                     self.order_dict[key] = rule[key]
    33                     self.order_dict[level] = rule['level']
    34                     self.order_dict[reason] = rule['reason']

    如果你有更好的想法,

    也欢迎你与我讨论,有讨论 才有进步

    好,先这样了

  • 相关阅读:
    锻造软件需求人员的六大要素
    一名IT从业者的英语口语能力成长路径
    软键盘android:windowSoftInputMode属性详解
    Linux CentOS下shell显示-bash-4.1$ 不显示用户名和主机名的解决方法
    Cent OS 常用 命令
    安装服务器pve虚拟系统(可以通过web管理物理机集群资源与虚拟机)
    win10系统绑定本地IP和mac地址
    苹果MAC OS查看MAC地址及修改ip
    CentOS7 配置阿里云yum源,vim编辑器,tab自动补全
    element的el-tabs控制,以及el-select 多选默认值
  • 原文地址:https://www.cnblogs.com/2010Freeze/p/2878265.html
Copyright © 2011-2022 走看看