首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >层次分析法中多个决策者的子准则代码

层次分析法中多个决策者的子准则代码
EN

Stack Overflow用户
提问于 2017-01-11 03:05:18
回答 2查看 301关注 0票数 0

我想创建一个crieria (乐趣)与两个子标准(货物容量,乘客容量)的3个多重决策(爸爸,妈妈和孩子)在yaml文件,我的AHP层次树使用ahp软件包,但不工作。在ahp文件格式元素(https://cran.r-project.org/web/packages/ahp/vignettes/file-format.html)中,元素是:

代码语言:javascript
复制
criteria 1
  preferences
  childrend
    sub-criteria 1.1
    sub-criteria 1.2
      children: *alternatives

但是,当我尝试:

代码语言:javascript
复制
Fun:
  preferences:
    Dad:
      pairwise
      - [Cargo Capacity, Passenger Capacity, 1/5]
    Mom:
      pairwise
      - [Cargo Capacity, Passenger Capacity, 1/5]  
    Kid:
      pairwise
      - [Cargo Capacity, Passenger Capacity, 1/5]  
  childrend:
    Cargo Capacity: 
      preferences:
        Dad:
          pairwise:
          - [Fipronil, Imidaclopride, 3]
          - [Fipronil, Sulfluramida, 9]
          - [Imidaclopride, Sulfluramida, 5]
        Mom:
          pairwise:
          - [Fipronil, Imidaclopride, 7]
          - [Fipronil, Sulfluramida, 9]
          - [Imidaclopride, Sulfluramida, 5]
        Kid:
          pairwise:
            - [Fipronil, Imidaclopride, 7]
            - [Fipronil, Sulfluramida, 1]
            - [Imidaclopride, Sulfluramida, 5]  
    Passenger Capacity: 
      preferences:
        Dad:
          pairwise:
          - [Fipronil, Imidaclopride, 7]
          - [Fipronil, Sulfluramida, 9]
          - [Imidaclopride, Sulfluramida, 5]
        Mom:
          pairwise:
          - [Fipronil, Imidaclopride, 5]
          - [Fipronil, Sulfluramida, 9]
          - [Imidaclopride, Sulfluramida, 9]
        Kid:
          pairwise:
          - [Fipronil, Imidaclopride, 7]
          - [Fipronil, Sulfluramida, 5]
          - [Imidaclopride, Sulfluramida, 5]
      children: *alternatives

错误是一个重复的映射键:

代码语言:javascript
复制
Error in value[[3L]](cond) : 
  Could not load ahp model. File must be a valid YAML file. Exception caught when parsing YAML file: Error in yaml::yaml.load(ahpString): Duplicate map key: 'Kid' 

如果我去掉“孩子”,那么“妈妈”就会被复制。

我怎么才能解决这个问题?因为我期望每个子标准有一个值,每个子标准内有三个值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-12 21:04:54

您的文件有很多问题:

  1. 你的空格/缩进在许多地方不对齐。如果您在http://ipub.com/apps/ahp/使用编辑器,它将帮助您对齐,还允许您使用选项卡键进行缩进,而无需考虑。
  2. 开始时需要一个版本元素。
  3. 接下来,您需要一个替代部分,其中包含可选对象。
  4. 您的目标部分需要称为目标。
  5. 在YAML中,您需要非常小心地使用冒号:每当您有一个对象时,请确保使用:(例如,在成对后)
  6. 对于决策树中的每个节点,需要添加一个子部分。
  7. 对于决策树中的每一页,需要将备选方案添加到子部分。

一个工作文件(非常类似于https://cran.r-project.org/web/packages/ahp/vignettes/file-format.html末尾的文件)是:

Version: 2.0 Alternatives: &alternatives Fipronil: description: alternative 1 Imidaclopride: description: alternative 2 Sulfluramida: description: alternative 3 Goal: name: Fun decision-makers: - Dad: 1/3 - Mom: 1/3 - Kid: 1/3 preferences: Dad: pairwise: - [Cargo Capacity, Passenger Capacity, 1/5] Mom: pairwise: - [Cargo Capacity, Passenger Capacity, 1/5]

代码语言:javascript
复制
     `Kid:             pairwise:                 - [Cargo Capacity, Passenger Capacity, 1/5]`
代码语言:javascript
复制
 `children:         Cargo Capacity:              preferences:                 Dad:                   pairwise:                   - [Fipronil, Imidaclopride, 3]                   - [Fipronil, Sulfluramida, 9]                   - [Imidaclopride, Sulfluramida, 5]                 Mom:                   pairwise:                   - [Fipronil, Imidaclopride, 7]                   - [Fipronil, Sulfluramida, 9]                   - [Imidaclopride, Sulfluramida, 5]                 Kid:                   pairwise:                     - [Fipronil, Imidaclopride, 7]                     - [Fipronil, Sulfluramida, 1]                     - [Imidaclopride, Sulfluramida, 5]             children: *alternatives         Passenger Capacity:              preferences:                 Dad:                     pairwise:                         - [Fipronil, Imidaclopride, 7]                         - [Fipronil, Sulfluramida, 9]                         - [Imidaclopride, Sulfluramida, 5]                 Mom:                     pairwise:                         - [Fipronil, Imidaclopride, 5]                         - [Fipronil, Sulfluramida, 9]                         - [Imidaclopride, Sulfluramida, 9]                 Kid:                     pairwise:                         - [Fipronil, Imidaclopride, 7]                         - [Fipronil, Sulfluramida, 5]                         - [Imidaclopride, Sulfluramida, 5]             children: *alternatives` 

再一次,最简单的方法是在这个闪亮的应用程序中使用编辑器(参见上面的链接)。把它粘贴起来,你就走.

票数 0
EN

Stack Overflow用户

发布于 2017-01-11 12:09:56

我不确定您的缩进是否忠实于原版,或者您是否在YAML文件中使用TAB字符(您不应该这样做)。

您的preferences:键没有值,如果它应该使用Dad作为键之一进行映射,请确保它比preferences缩进得更深,目前没有。

问题是键childrend的值是映射,映射有键:Cargo CapacityDadMomKidPassenger CapacityDadMomKid。双键是不允许的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41582030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档