MODEL:
SETS:
PERSON /P1..P4/ : SEX, ORIENTATION, EDUCATION, AGE;
RELATION(PERSON, PERSON) : X, AD, ED, MATCH, Q;
ENDSETS
[OBJ] MIN = @MAX(RELATION(I, J): Q(I, J) * X(I, J)) + @SUM(RELATION(I, J): Q(I, J) * X(I, J));
@FOR(RELATION: @BIN(X));
@FOR(PERSON(I):
@SUM(PERSON(J): X(I, J)) = 1);
@FOR(PERSON(I):
X(I, I) = 0);
DATA:
SEX = 0, 1, 0, 1; !0 - WOMAN, 1 - MAN;
ORIENTATION = 1, 1, 0, 0; !0 - HETERO, 1 - HOMO;
EDUCATION = 2, 3, 3, 1;
AGE = 18, 21, 24, 27;
ENDDATA
CALC:
@FOR(RELATION(I, J):
AD(I, J) = @ABS(AGE(I) - AGE(J)));
@FOR(RELATION(I, J):
ED(I, J) = @ABS(EDUCATION(I) - EDUCATION(J)));
@FOR(RELATION(I, J) | (SEX(I) #NE# SEX(J)) #AND# (ORIENTATION(I) #EQ# 0 #OR# ORIENTATION(J) #EQ# 0):
MATCH(I, J) = 0);
@FOR(RELATION(I, J) | (SEX(I) #EQ# SEX(J)) #AND# (ORIENTATION(I) #EQ# 1 #OR# ORIENTATION(J) #EQ# 1):
MATCH(I, J) = 0);
@FOR(RELATION(I, J) | #NOT#((SEX(I) #NE# SEX(J)) #AND# (ORIENTATION(I) #EQ# 0 #OR# ORIENTATION(J) #EQ# 0)):
MATCH(I, J) = 5);
@FOR(RELATION(I, J) | #NOT#((SEX(I) #EQ# SEX(J)) #AND# (ORIENTATION(I) #EQ# 1 #OR# ORIENTATION(J) #EQ# 1)):
MATCH(I, J) = 5);
@FOR(RELATION(I, J):
Q(I, J) = MATCH(I, J) + AD(I, J) + ED(I, J));
ENDCALC
@FOR(PERSON(I):
@FOR(PERSON(J):
X(I,J) = X(J,I)));
END