설명
골프클럽에는 32명의 소셜 골퍼가 있는데, 그들은 각각 일주일에 한 번씩 골프를 칩니다. 항상 4명이서 그룹을 이룬다. 문제는 10명이 플레이할 수 있는 일정을 짜는 것이다. '최대한의 사회화''를 갖춘 몇 주; 즉, 반복되는 회의가 거의 없습니다. 가능합니다. 보다 일반적으로 문제는 n명의 골퍼로 구성된 m개의 그룹을 계획하는 것입니다. p 주, 최대의 사회화와 함께.
대형 모델 유형 :MINLP
카테고리 : 무료 슬롯 게임 모델 라이브러리
메인 파일 : sgolfer.gms
$title 사회적 골퍼 문제(SGOLFER,SEQ=409)
$onText
한 골프클럽에는 일주일에 한 번씩 골프를 치는 소셜골퍼 32명이 있는데,
항상 4명이서 그룹을 이룬다. 문제는 10명이 플레이할 수 있는 일정을 짜는 것이다.
'최대한의 사회화''를 갖춘 몇 주; 즉, 반복되는 회의가 거의 없습니다.
가능합니다. 보다 일반적으로 문제는 n명의 골퍼로 구성된 m개의 그룹을 계획하는 것입니다.
p 주, 최대의 사회화와 함께.
Warwick, H, 완전한 사회적 골퍼 문제. Smith, B 및 Warwick, H, Eds,
제약조건 만족의 대칭에 관한 제3차 국제 워크숍 진행
문제(SymCon 2003). 2003, pp. 75-85.
키워드: 혼합 정수 선형 계획법, 혼합 정수 비선형 계획법,
소셜 골퍼 문제, 조합 최적화
$offText
* 그룹 수, 그룹 내 골퍼, 주 수
$설정되지 않은 경우 gr $set gr 8
$설정되지 않은 경우 gg $set gg 4
$설정되지 않은 경우 nw $set nw 10
$eval gf %gr%*%gg%
세트
gf '골퍼' / 1*%gf% /
gr '그룹' / 1*%gr% /
w '주' / 1*%nw% /;
별칭(gf,gf1,gf2);
mgf(gf1,gf2) '가능한 회의' 설정;
mgf(gf1,gf2) = ord(gf2) > ord(gf1);
변수
x(w,gr,gf) '골퍼 여자 친구는 w주에 gr 그룹에 속해 있습니다.'
m(w,gr,gf,gf) '골퍼들은 주중에 어떤 그룹에서 만납니다.'
numm(gf,gf) '회의 횟수'
redm(gf,gf) '중복 회의 수'
obj '객관적';
이진변수 x;
방정식
defx(w,gf) '각 골퍼는 정확히 하나의 그룹에 할당됩니다'
defgr(w,gr) '각 그룹에는 정확히 |gg| 골퍼'
defm(w,gr,gf,gf) 'w주에 gr 그룹에서 만나요'
defnumm(gf,gf) '회의 수'
defredm(gf,gf) '중복 회의 수'
defobj '중복 회의 최소화';
$ifThen MIP 설정
이진변수 m;
양수 변수 redm;
방정식
defm2(w,gr,gf,gf) 'w주에 gr 그룹에서 만나요'
defm3(w,gr,gf,gf) 'w주에 gr 그룹에서 만나요';
defm (w,gr,mgf(gf1,gf2))..m(w,gr,mgf) =l= x(w,gr,gf1);
defm2(w,gr,mgf(gf1,gf2))..m(w,gr,mgf) =l= x(w,gr,gf2);
defm3(w,gr,mgf(gf1,gf2))..m(w,gr,mgf) =g= x(w,gr,gf1) + x(w,gr,gf2) - 1;
defredm(mgf).. redm(mgf) =g= numm(mgf) - 1;
$else
defm(w,gr,mgf(gf1,gf2))..m(w,gr,mgf) =e= x(w,gr,gf1) 및 x(w,gr,gf2);
defredm(mgf).. redm(mgf) =e= max(0,numm(mgf) - 1);
$endIf
defx(w,gf)..sum(gr, x(w,gr,gf)) =e= 1;
defgr(w,gr).. sum(gf, x(w,gr,gf)) =e= %gg%;
defnumm(mgf)..numm(mgf) =e= sum((w,gr), m(w,gr,mgf));
defobj..obj =e= sum(mgf, redm(mgf));
x.l(w,gr,gf)$((ord(gr) - 1)*%gg% + 1 <= ord(gf) 및 ord(gf) <= (ord(gr))*%gg%) = 1;
디스플레이 x.l;
모델 social_golfer / all /;
$ifThen MIP 설정
mip를 사용하여 social_golfer min obj를 해결합니다.
$else
minlp를 사용하여 social_golfer min obj를 해결합니다.
$endIf