数学建模社区-数学中国
标题:
两层群决策的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