2012-01-10 9 views
0

내가 여러 서비스를받을 수신 서비스를 계층화 할 필요가 사람들의 임의의 그룹이의 할당량에 도달의 기회를 극대화 할 수 있습니다. 총 7 개의 서비스가 있으며, 각 서비스에는 전체를 대표 할 수있는 할당량이 있습니다.그룹 사람들이 각 그룹 (MS 액세스)

는 MS Access 데이터베이스에있는 세 개의 테이블이 있습니다.

tblQuota (ServiceType, NumberReq) - 각각에 대한 서비스 이름 및 할당량 목록입니다.

ServiceType NumbersReq 
Service1  446 
Service2  426 
Service3  458 
Service4  446 

tblUserService (사용자 ID, ServiceType 자리) - 그들이받는 사용자와 서비스의 목록. 많은 사람들에게, 각 서비스에는 많은 사람들이있을 수 있고 각 사람은 많은 서비스를받을 수 있습니다. tblUser (사용자 ID, 주소, 등.) - 사용자 연락처. 그룹 명을 배치 대해 가고, 그렇지 않으면 VBA 또는과 프로그래밍 방식으로, 가장 좋은 방법은 무엇

. 누군가가 "드문"서비스와 "공통"서비스를 모두받는다면, 선택할 수있는 소수의 서비스가있는 드문 서비스에 서비스를 추가하려고합니다. 하나의 서비스 만받는 사람은 쉽습니다. 나머지는 정렬 알고리즘에 대한 문제가 있습니다.

는 내가 감각을 만들고있어 희망; 매년마다 다른 할당량과 사람으로이 작업을 수행하게 될 것이므로이 방법을 사용하면 미래에 많은 시간을 절약 할 수 있습니다. 감사.

편집 : 이것은 내가 작업중인 DB입니다. http://db.tt/SwrOHOrd 한 번 할당 된 사용자는 다른 곳에서 사용할 수 없습니다.

+0

내가 거기에없는 귀하의 설명에 물건을 읽을 수도 있지만, 당신은 두 가지 방법으로 '서비스 유형'을 사용하는 것 같습니다. 내가 너에게 나의 해석을 시키자. John은 서비스가 필요한 다양한 건강 문제 (당뇨병, 간질, 고혈압 및 드문 유전병)를 가지고 있습니다. 지역 서비스 팀은 각각 전문 분야가 있지만 모든 조건을 처리 할 수 ​​있습니다. 선호도에 따라 존은 "희소 한 조건"팀에 배정 될 것이지만 어떤 팀도 그렇게 할 것입니다.제가 맞나요? 아니면 설명을 수정해야합니까? 어쨌든, 당신이 수동으로 어떻게하는지에 대한 아이디어는 도움이 될 것입니다. –

+0

본 적이 있습니까? [관련 질문과 대답] (0120-336-331) –

+0

서비스는 것들입니다 숙박 시설, 장비 및 보조기구 등등. 사람들은 그들 중 하나 또는 다수에 접근 할 수 있습니다. 무작위로 전체 인구의 표본을 선택했고 그 표본에서 전체 인구를 기준으로 할당량을 조정해야합니다. – vbevan

답변

0

나는 마침내 당신의 요구 사항을 이해한다고 생각합니다. 나는 당신이 만족도 설문 조사를 위해 많은 고객을 찾고 있다는 원래 질문에서 감사하지 않았다. 다음은 당신이 필요로하는 선택을 만드는 알고리즘에 대한 나의 칼입니다.

SQL이 녹슬어서 Access 테이블 tbtUserService가 Excel로 복사되었습니다. 나는 제공하기 위해 클라이언트와 서비스 유형으로 분류 :

CustomerID ServiceType 25000005 Service 1 - Hostel and Community Residential 25000005 Service 2 - Therapy 25000010 Service 1 - Hostel and Community Residential 25000010 Service 2 - Day options 25000010 Service 2 - Therapy 25000011 Service 3 - LAC : : 

1

나는 클라이언트 당 하나 개의 행을 만들려면 다음 기록을 합병에게와 G에 A가주는대로 서비스 유형 이름 :

CustomerID Services 
25000005 AD 
25000010 ACD 
25000011 E 
25000012 DE 
25000022 AD 
25000031 A 
    :  : 

이 나는 ​​다음 서비스 및 counte하여 그 목록을 분류 D 각 조합의 수를 제공합니다 :

표 3

Services Number Services Number Services Number Services Number 
A   182 AB   24 ABC   9 ABCD  34 
ABCDE  8 ABCDEF  7 ABCDEFG  1 ABCDEG  6 
ABCDF  2 ABCDG  1 ABCE  5 ABCEF  4 
ABCEFG  2 ABCEG  5 ABCF  1 ABCG  2 
ABD  17 ABDE  7 ABDEF  3 ABE   9 
ABEF  3 ABEFG  4 ABF   2 AC  185 
ACD  217 ACDE  18 ACDEF  8 ACDEFG  6 
ACDEG  2 ACDF  44 ACDFG  1 ACDG  6 
ACE  92 ACEF  12 ACEFG  6 ACEG  5 
ACF   2 ACFG  2 ACG   3 AD  254 
ADE  12 ADEF  4 ADF   4 AE   43 
AEF   8 AEFG  3 AEG   4 AFG   6 
B   143 BC   71 BCD  11 BCDE  18 
BCDEF  13 BCDEFG  19 BCDEG  11 BCDF  1 
BCDG  5 BCE  163 BCEF  47 BCEFG  16 
BCEG  18 BCF   1 BCFG  2 BCG   1 
BD   8 BDE  60 BDEF  20 BDEFG  1 
BDEG  2 BDF   1 BE  260 BEF  34 
BEFG  16 BEG  13 BF   4 BFG   1 
BG   2 C   43 CD   3 CDE  143 
CDEF  69 CDEFG  44 CDEG  26 CDF   3 
CE  489 CEF  177 CEFG  55 CEG  82 
CF   8 CG   1 D   111 DE  1726 
DEF  130 DEFG  28 DEG  13 DF   1 
E  5840 EF  312 EFG  40 EG   38 
F   17 FG   2 

다음 목표는 할당량을 충족하기 위해 선택해야하는 방법이 각 조합의 수를 결정하는 것입니다.

필요한 할당량은 액세스 테이블 tblProportions에서로드 된 :

초기 표 4

Service Type Numbers Req 
A    446 
B    426 
C    458 
D    446 
E    1290 
F    452 
G    452 

이전 테이블 중 하나를 구축하는 동안, 나는 각 서비스의 사용의 총 수를 계산했다 결과를 표 4에 추가하면 다음과 같이 나타납니다.

Service Type Numbers Req Total uses 
A    446   1285 
B    426   1118 
C    458   2236 
D    446   3129 
E    1290   10210 
F    452   1197 
G    452   501 

4 번째 열 Ratio를 추가하고 t 모자 열.

최종 표 4

에서 볼 수있는 바와 같이

Service Type Numbers Req Total uses Ratio 
G    452   501  0.902195609 
B    426   1118  0.381037567 
F    452   1197  0.377610693 
A    446   1285  0.347081712 
C    458   2236  0.204830054 
D    446   3129  0.142537552 
E    1290   10210  0.126346719 
, 서비스 G의 고객의 90 %가 G의 할당량을 충족하기 위해 선택해야합니다. 따라서 G의 할당량은 B, F 등의 할당량보다 먼저 고려해야합니다.

표 3 (위아래로 읽기)에서 서비스 G를 포함하는 첫 번째 항목은 G의 할당량에 대한 기여로 선택된 1 번 발생하는 ABCDEFG입니다. 그러나 이것은 또한 A, B, C, D, E 및 F의 할당에 대한 기여이기도합니다.

선택 프로세스의 전체 복잡성은 서비스 B를 고려하면 더 잘 나타납니다. B를 포함하는 첫 번째 항목은 24 번 발생합니다. 서비스 B의 비율은 38 %이므로이 중 8 가지를 B의 할당량에 대한 기여로 선택합니다. 이것은 A의 할당량에 대한 8의 기여도이지만 다른 16 개의 발생은 B의 할당량을 초과 할 수 있기 때문에 선택에 사용할 수 없습니다. 즉, A의 할당량 446에 대해 8 명의 고객을 선택했지만 1285에서 24로 A 할당량에 기여할 수있는 고객 수를 줄였습니다. 따라서 모든 선택에서 선택의 총합을 유지해야하며 선택 가능한 총계를 유지해야합니다. 각 서비스에 대한

할당량은 다음 선택에 의해 충족 될 수 :

표 5

Services Slct'd Services Slct'd Services Slct'd Services Slct'd 
A   58 AB   8 ABC   3 ABCD  11 
ABCDE  2 ABCDEF  2 ABCDEFG  1 ABCDEG  5 
ABCDF  1 ABCDG  1 ABCE  2 ABCEF  1 
ABCEFG  2 ABCEG  5 ABCF  1 ABCG  2 
ABD   5 ABDE  2 ABDEF  1 ABE   3 
ABEF  1 ABEFG  4 ABF   1 AC   0 
ACD   0 ACDE  0 ACDEF  2 ACDEFG  5 
ACDEG  2 ACDF  10 ACDFG  1 ACDG  5 
ACE   0 ACEF  3 ACEFG  5 ACEG  5 
ACF   1 ACFG  2 ACG   3 AD  157 
ADE   0 ADEF  1 ADF   1 AE  107 
AEF   2 AEFG  3 AEG   4 AFG   5 
B   44 BC   22 BCD   3 BCDE  6 
BCDEF  4 BCDEFG  17 BCDEG  10 BCDF  1 
BCDG  4 BCE  51 BCEF  15 BCEFG  14 
BCEG  16 BCF   1 BCFG  2 BCG   1 
BD   2 BDE  19 BDEF  6 BDEFG  1 
BDEG  2 BDF   1 BE   79 BEF  11 
BEFG  14 BEG  12 BF   1 BFG   1 
BG   2 C   0 CD   0 CDE   0 
CDEF  15 CDEFG  40 CDEG  23 CDF   1 
CE   0 CEF   5 CEFG  49 CEG  74 
CF   0 CG   1 D   0 DE   0 
DEF  38 DEFG  25 DEG  12 DF   1 
E   402 EF   90 EFG  36 EG   34 
F   5 FG   2 

이 테이블의 제로에는 여러 가지가 있습니다. 예를 들어 서비스 C의 할당량이 G, B 및 F의 할당량을 충족하여 충족 되었기 때문에 AC, ACD 또는 ACDE가 선택되지 않았습니다. 모든 조합 중 하나를 선택한 첫 번째 통과가 있었어야합니다.

마지막 단계

알고리즘에 사용되는 표준 명 및 이들 사이의 관계를 모든 제 A. 약 선택함으로써 달성 될 표 2이 상기 (182)에서 표 5에서 58로를 선택하는 것 아마도 이전에 나열되어 있어야하지만, 표 6

A Service 1 - Hostel and Community Residential 
B Service 1 - Supported Community Living 
C Service 2 - Day options 
D Service 2 - Therapy 
E Service 3 - LAC 
F Service 4 - Family support 
G Service 4 - Respite 

조금 청소 장치가 필요합니다 이러한 결과를 만드는 데 사용되는 코드에 표시되지만이 유용 할 경우, 나는이 답변에 추가 할 수 있습니다.