2014-11-04 4 views
1

일부 공급 노드와 수요 노드 사이에 최소 경로를 찾는 최적화를 수행하려고합니다. 이를 위해 회사 C가 있습니다. 여기에는 재고 위치 및 공장과 같이 공급 노드와 수요 노드가 "제어"됩니다. 그러나 다른 회사는 다른 회사 주식의 제품을 공제하고이를 자신의 수요 노드로 반환 할 수 있습니다.AMPL의 소지품을 설정하십시오

이 점에 대해 저는 회사 C (C)가 제어하는 ​​공급 노드 세트와 동일한 유형의 수요 노드를 정의하고자합니다. C와 노드 모두에 요소를 포함해야하기 때문에 하위 집합 등이 유효하지 않아야한다고 생각합니다 (잘못 생각하지 않는 한). 예를 들어, C에서 C 회사는 공급 노드 I을 제어하고 C 회사는 C에서 공급 노드 G를 제어하기를 원합니다. 이것이 AMPL에서 달성 될 수 있습니까?

감사합니다, Cenderze

답변

1

당신은 이것에 대한 다차원 설정을 사용할 수 있습니다 CompanySupplies의 두 번째 지수는 기업 c in C에 의해 제어 공급을 나타냅니다

set C; 
set SupplyNodes; 
set CompanySupplies within {C, SupplyNodes}; 

, setof{(c, n) in CompanySupplies: c == c2} == G, 즉. CompanySupplies[c]는 기업 c in C에 의해 제어 공급을 나타냅니다

set CompanySupplies{C} within SupplyNodes; 

:

다른 방법으로는 인덱스 세트를 사용할 수 있습니다.

+0

어떻게 이러한 세트를 "결합"할 수 있습니까? 예를 들어 회사 C는 몇 가지 공급 지점을 소유하고 있지만 회사 C가 시스템 내에서 공급 지점으로부터 공급을 차감하도록 허용하면서 더 최적의 솔루션인지는 알지만, 여전히 "공급 소속 유지 라고 말했다. 후자는 예를 들어 각 회사의 공급 노드 세트에서 얼마나 많은 공급이 공제 될 수 있는지에 대한 제약을 설정하는 데 필요합니다. – Cenderze

+0

당신이 찾고있는 경우'setof' 식'setSupplies ((n) in CompanySupplies} n '을 사용하여 모든 회사에 대한 공급 노드 집합을 얻을 수 있습니다. – vitaut

+0

마찬가지로 색인 집합'union {c in C}의 경우 CompanySupplies [c]'는 모든 회사에 대한 공급 노드 집합을 제공합니다. – vitaut