Facebook
From Gray Terrapin, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 336
  1. MODEL:
  2. SETS:
  3.         PERSON /P1..P4/ : SEX, ORIENTATION, EDUCATION, AGE;
  4.         RELATION(PERSON, PERSON) : X, AD, ED, MATCH, Q;
  5. ENDSETS
  6.  
  7. [OBJ] MIN = @MAX(RELATION(I, J): Q(I, J) * X(I, J)) + @SUM(RELATION(I, J): Q(I, J) * X(I, J));
  8.  
  9. @FOR(RELATION: @BIN(X));
  10.  
  11. @FOR(PERSON(I):
  12.         @SUM(PERSON(J): X(I, J)) = 1);
  13.  
  14. @FOR(PERSON(I):
  15.         X(I, I) = 0);
  16.  
  17.  
  18. DATA:
  19.         SEX = 0, 1, 0, 1; !0 - WOMAN, 1 - MAN;
  20.         ORIENTATION = 1, 1, 0, 0; !0 - HETERO, 1 - HOMO;
  21.         EDUCATION = 2, 3, 3, 1;
  22.         AGE = 18, 21, 24, 27;
  23. ENDDATA
  24.  
  25. CALC:
  26.         @FOR(RELATION(I, J):
  27.                 AD(I, J) = @ABS(AGE(I) - AGE(J)));
  28.  
  29.         @FOR(RELATION(I, J):
  30.                 ED(I, J) = @ABS(EDUCATION(I) - EDUCATION(J)));
  31.  
  32.         @FOR(RELATION(I, J) | (SEX(I) #NE# SEX(J)) #AND# (ORIENTATION(I) #EQ# 0 #OR# ORIENTATION(J) #EQ# 0):
  33.                 MATCH(I, J) = 0);
  34.  
  35.         @FOR(RELATION(I, J) | (SEX(I) #EQ# SEX(J)) #AND# (ORIENTATION(I) #EQ# 1 #OR# ORIENTATION(J) #EQ# 1):
  36.                 MATCH(I, J) = 0);
  37.  
  38.         @FOR(RELATION(I, J) | #NOT#((SEX(I) #NE# SEX(J)) #AND# (ORIENTATION(I) #EQ# 0 #OR# ORIENTATION(J) #EQ# 0)):
  39.                 MATCH(I, J) = 5);
  40.  
  41.         @FOR(RELATION(I, J) | #NOT#((SEX(I) #EQ# SEX(J)) #AND# (ORIENTATION(I) #EQ# 1 #OR# ORIENTATION(J) #EQ# 1)):
  42.                 MATCH(I, J) = 5);
  43.  
  44.         @FOR(RELATION(I, J):
  45.                 Q(I, J) = MATCH(I, J) + AD(I, J) + ED(I, J));
  46. ENDCALC
  47.  
  48. @FOR(PERSON(I):
  49.         @FOR(PERSON(J):
  50.                 X(I,J) = X(J,I)));
  51.  
  52. END

Replies to Untitled rss

Title Name Language When
Re: Untitled Colossal Mousedeer text 4 Years ago.