- 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