aboutsummaryrefslogtreecommitdiffstats
path: root/apps/pci/optimizers/solver/min_confusion_inl.mzn
diff options
context:
space:
mode:
Diffstat (limited to 'apps/pci/optimizers/solver/min_confusion_inl.mzn')
-rw-r--r--apps/pci/optimizers/solver/min_confusion_inl.mzn16
1 files changed, 16 insertions, 0 deletions
diff --git a/apps/pci/optimizers/solver/min_confusion_inl.mzn b/apps/pci/optimizers/solver/min_confusion_inl.mzn
index 0f0fc91..e677e27 100644
--- a/apps/pci/optimizers/solver/min_confusion_inl.mzn
+++ b/apps/pci/optimizers/solver/min_confusion_inl.mzn
@@ -52,6 +52,14 @@ int: NUM_IGNORABLE_NEIGHBOR_LINKS;
% of the links, like the previous structures.
array[1..NUM_IGNORABLE_NEIGHBOR_LINKS, 1..2] of int: IGNORABLE_NEIGHBOR_LINKS;
+% ids of cells for which the pci should remain unchanged
+set of int: PCI_UNCHANGEABLE_CELLS;
+
+% This array has the original pcis of all the cells. array is indexed by the ids
+% of the cell. eg. ORIGINAL_PCIS[3] returns the pci of cell whose id is 3.
+% ids start from 0
+array[1..NUM_NODES] of 0..NUM_PCIS-1: ORIGINAL_PCIS;
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Decision variables
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -65,6 +73,14 @@ array[1..NUM_IGNORABLE_NEIGHBOR_LINKS] of var 0..1: used_ignorables;
% Constraints
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% fixed pci cells
+constraint
+if(length(PCI_UNCHANGEABLE_CELLS) !=0) then
+forall(i in PCI_UNCHANGEABLE_CELLS)(
+ pci[i] == ORIGINAL_PCIS[i+1]
+)
+endif;
+
% Direct neighbors must have different PCIs for avoid **COLLISION**.
% Forced links.
constraint