{int}Experts={1,2,3};
{int}Alternatives={1,2,3,4};
{int}Attribute={1,2,3,4};
{int}Attribute2={1,2,3};
float opinion[Experts][Alternatives][Attribute]=...;
float lamda[Experts]=...;
dvar float+ u;
dvar float+ adjusted_opinions[Experts][Alternatives][Attribute];
dvar float+ w[Alternatives][Attribute];
dvar boolean e[Experts][Alternatives];
dvar int+ o[Experts][Alternatives];
dvar int+ oc[Alternatives];
dvar boolean y[Experts][Alternatives][Attribute2];
dvar boolean yc[Alternatives][Attribute2];
dvar float+ pv[Experts][Alternatives];
dvar float+ pvc[Alternatives];
dvar float+ theta[Attribute2];
maximize u;
subject to {
c1:
sum(K in Experts,I in Alternatives)
lamda[K]*e[K][I]==4*u;
c2:
forall(K in Experts,I in Alternatives)
100*abs(o[K][I]-oc[I])>=1-e[K][I];
c3:
forall(K in Experts,I in Alternatives)
abs(o[K][I]-oc[I])<=100*(1-e[K][I]);
c4:
forall(K in Experts,I in Alternatives)
sum(P in Attribute2)
y[K][I][P]==o[K][I];
c5:
forall(I in Alternatives)
sum(P in Attribute2)
yc[I][P]==oc[I];
c6:
forall(K in Experts,I in Alternatives,P in Attribute2)
pv[K][I]-theta[P]<=y[K][I][P];
c7:
forall(K in Experts,I in Alternatives,P in Attribute2)
y[K][I][P]-1<=pv[K][I]-theta[P];
c8:
forall(I in Alternatives,P in Attribute2)
pvc[I]-theta[P]<=yc[I][P];
c9:
forall(I in Alternatives,P in Attribute2)
yc[I][P]-1<=pvc[I]-theta[P];
c10:
forall(K in Experts,I in Alternatives)
sum(J in Attribute)
w[I][J]*adjusted_opinions[K][I][J]==pv[K][I];
c11:
forall(I in Alternatives)
sum(K in Experts)
lamda[K]*pv[K][I]==pvc[I];
c12:
forall(K in Experts,P in Attribute2){
if(P == 1){
sum(I in Alternatives)
y[K][I][P]==4;
}}
c13:
forall(K in Experts,P in Attribute2){
if(P == 2){
sum(I in Alternatives)
y[K][I][P]==3;
}}
c14:
forall(K in Experts,P in Attribute2){
if(P == 3){
sum(I in Alternatives)
y[K][I][P]==1;
}}
c15:
forall(P in Attribute2){
if(P == 1){
sum(I in Alternatives)
yc[I][P]==4;
}}
c16:
forall(P in Attribute2){
if(P == 2){
sum(I in Alternatives)
yc[I][P]==3;
}}
c17:
forall(P in Attribute2){
if(P == 3){
sum(I in Alternatives)
yc[I][P]==1;
}}
c18:
forall(I in Alternatives)
sum(J in Attribute)
w[I][J]==1;
}
厉害啊,需要什么学什么【doge】
比较懒 所以需要点啥 就想花点钱解决算了 太懒了