数学建模社区-数学中国

标题: 两层群决策的lingo实现,提示数据无效,改也改不对,好无助,谁有这方面问题的经验... [打印本页]

作者: 刘静8701    时间: 2013-5-17 20:33
标题: 两层群决策的lingo实现,提示数据无效,改也改不对,好无助,谁有这方面问题的经验...
决策问题,以区间互补判断矩阵提取决策信息,然后模型是按照两层决策主体决策信息偏差最小化为目标函数的,u表示区间数互补矩阵的归一化的权重向量(上下两层是统一的u),前两个约束条件即是决策判断矩阵不完全一致时的限制条件。鉴于是比较复杂的决策问题,不知道我做描述的清晰不?

model:
title  fuzzy decision of two layers;

sets:deviation/1..5/:m,n;
     weight/1..5/:u;
     pairs/1..5/:a,b;

endsets

data:

           a=
               0.5 0.2 0.3 0.4 0.3
               0.6 0.5 0.4 0.6 0.5
               0.5 0.4 0.5 0.5 0.5
               0.4 0.2 0.3 0.5 0.3
               0.5 0.3 0.3 0.5 0.5;

           b =
               0.5 0.4 0.5 0.6 0.5
               0.8 0.5 0.6 0.8 0.7
               0.7 0.6 0.5 0.7 0.7
               0.6 0.4 0.5 0.5 0.5
               0.7 0.5 0.5 0.7 0.5;
enddata

init:    m=0.05,0.05,0.05,0.05,0.05;
         n=0.1,0.1,0.1,0.1,0.1;
endinit
!a(i,j)和b(i,j)矩阵构成区间互补判断矩阵;

!权重u代表区间互补判断A的归一化权重;

!objective function(目标);
obj1 min=@sum(deviation(i):@sum(deviation(j):0.6*m(i,j)+0.4n(i,j)););

!constraints(约束条件);
con1 @for(weight(i):a(i,j)*(u(i)+u(j))<=u(i)+m(i,j););
     @for(weight(i):b(i,j)*(u(i)+u(j))+n(i,j)>=u(i););
     @sum(weight(i):u(i)=1;);
     @for(deviation:m(i,j)<=0.15;);
     @for(deviation:m(i,j)<=0.2;);
end



                                                                                                         
作者: 刘静8701    时间: 2013-5-17 20:38
补充一句,提示矩阵a第二行数据无效,“设定的数据和检验到所设定数组的长度不一致”,不太明白这句话的内涵
作者: madio    时间: 2013-5-18 21:30
你的定义和使用问题很大,m定义成了变量,赋值的时候也是按照一行变量赋的值,使用的时候却按照矩阵使用,a,b明明定义成了向量,赋值和使用又都按照矩阵去使用,比较乱
作者: 刘静8701    时间: 2013-5-19 12:39
madio 发表于 2013-5-18 21:30
你的定义和使用问题很大,m定义成了变量,赋值的时候也是按照一行变量赋的值,使用的时候却按照矩阵使用,a ...

你这么说,我才恍然大悟,初学者一枚,这方面基础薄弱,还要好好积累和学习!谢谢指导!




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5