rs.lib rs.dll rs.h 的使用实例

提示:我的rs.lib rs.dll rs.h 是在 VS2005 专业版中创建的,下面是实例也是在VS2005 MFC 中做的,其它环境可能会有问题,由于时间有限,我还没有在其它环境中测试,所以建议用 VS2005 来做。

Step1:建一个MFC基于对话框的工程rsTest,并在rsTestDlg.cpp中包含rs.h和lunwen.h,把 rs.lib 和 rs.dll 和 rs.h 拷贝到工程中;

Step2:添加 lunwen.h 头文件,内容如下:

#ifndef lunwen_H
#define lunwen_H

//#include"Set.h"
//#include"Element.h"
//#include"DecisionTable.h"
//#include"File.h"
//#include<time.h>
//#include<windows.h>
#include "../rs/rs.h"

//论文算法3.1 属性约简的数据分析方法(求出一个约简)
DecisionTable A_3_1(DecisionTable DT);

//论文算法3.5基于特征选择的属性约简方法(求出一个约简)
DecisionTable A_3_5(DecisionTable DT);

//论文算法4.1基于松散依赖度的属性约简方法(求出一个约简)
DecisionTable A_4_1(DecisionTable DT);

//输出约简的兼容决策集
DecisionTable  BuildCDS(DecisionTable DT);

#endif

 

Step3:添加 lunwen.cpp 源文件:

#include "stdafx.h"
#include"lunwen.h"

//论文算法3.1 属性约简的数据分析方法
DecisionTable A_3_1(DecisionTable DT)
{
 DecisionTable RED = DT;
 vector<char> C = DT.GetConditionSet();
 vector<char>::iterator it = C.begin();
 Set pos = DT.POS(); //计算决策表D的C正区域

 for( ; it < C.end(); it++)
 {
  if(DT.RemoveConditionAttribute(*it).POS() == pos)
  {
   RED = DT;
  }
  else
  {
   DT = RED;
  }
 }
 return RED;
}

//论文算法3.5基于特征选择的属性约简方法
DecisionTable A_3_5(DecisionTable DT)
{
 DecisionTable RED = DT;
 DecisionTable temp;
 double r = DT.RelyDegreeOfDToC();

 while(RED.RelyDegreeOfDToC() == r)
 {
  double Sig = 1.0;
  int index = 0;
  temp = RED;
  vector<char> condition = RED.GetConditionSet();
  vector<double>  SigOfAllAttribute;  
  for(unsigned int i = 0; i < condition.size(); i++)
  {
   if(RED.SigOfAttribute(condition[i]) < Sig)
   {
    Sig = RED.SigOfAttribute(condition[i]);
    index = i;
   }
  }
  if(RED.RemoveConditionAttribute(condition[index]).RelyDegreeOfDToC() == r)
  {
   continue;
  }
  else
  {
   RED = temp;
   break;
  }
 }
 return RED;
}

//论文算法4.1基于松散依赖度的属性约简方法(求出一个约简)
DecisionTable A_4_1(DecisionTable DT)
{
 DecisionTable RED = DT;
 DecisionTable temp;
 double lr = DT.LooseRelyDegreeOfDToC();

 while(RED.LooseRelyDegreeOfDToC() == lr)
 {
  double lr1 = 1.0;
  int index = 0;
  temp = RED;
  vector<char> condition = RED.GetConditionSet();

  for(unsigned int i = 0; i < condition.size(); i++)
  {
   if(RED.LooseRelyDegreeOfDToAttribute(condition[i]) < lr1)
   {
    lr1 = RED.LooseRelyDegreeOfDToAttribute(condition[i]);
    index = i;
   }
  }
  if(RED.RemoveConditionAttribute(condition[index]).LooseRelyDegreeOfDToC() == lr)
  {
   continue;
  }
  else
  {
   RED = temp;
   break;
  }
 }
 return RED;
}

//输出约简的兼容决策集
DecisionTable  BuildCDS(DecisionTable DT)
{
 DecisionTable CDS = DT ;
 CDS = CDS.Unique();
 vector<Element> eVec = CDS.GetDT();
 vector<Element>::iterator it1 = eVec.begin();

 for( ; it1 < eVec.end(); it1++)
 {
  vector<Element>::iterator it2 = eVec.begin();
  for( ; it2 < eVec.end(); it2++)
  {
   if((*it1).ConditionEqual(*it2))
   {
    if(DT.CountOfDecisionValue((*it1).GetDecision()) <
     DT.CountOfDecisionValue((*it2).GetDecision()))
    {
     CDS.RemoveElement((*it1).GetU());
    }
   }
  }
 }

 return CDS;
}

 

Step4:在rsTestDlg.cpp 的 OnInitDialog() 中添加如下代码(你也可以找个合适的地方添加):

// TODO: 在此添加额外的初始化代码
 DecisionTable DT("..//T4-6.txt");
 //DT.Print();
 //cout<<endl;
 SaveDTToFile(DT, "..//DT.txt");

 DecisionTable RED = A_4_1 ( DT );
 //RED.Print();
 //cout<<endl;
 SaveDTToFile(RED, "..//RED.txt");

 DecisionTable Rule = BuildCDS ( RED );
 //Rule.Print();
 SaveDTToFile(Rule, "..//CDS.txt");

 

Step5: 在 rsTest 的项目属性中的链接、输入中添加 rs.lib

Step6:编译链接工程,运行,产生 RED.txt 和 CDS.txt 文件就是结果。

 

祝你好运!就写到这吧!有问题可与我联系!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值