The following constraints are used in this example:
bounds on variables
for
,
![\[ \Variable{AssignAGate[gate]} \le \Variable{UseGate[gate]} \]](images/ormpex_ex120006.png)
for
,
![\[ \Variable{AssignBGate[gate]} \le \Variable{UseGate[gate]} \]](images/ormpex_ex120007.png)
for
,
![\[ \sum _{(\text {pred},\text {gate}) \in \text {ARCS}} \Variable{UseGate[pred]} + \Variable{AssignAGate[gate]} + \Variable{AssignBGate[gate]} \le 2 \]](images/ormpex_ex120008.png)
for
,
![\[ \Variable{Output[1,row]} = \Argument{target\_ output[row]} \]](images/ormpex_ex120009.png)
for
and
,
![\[ \Variable{Output[gate,row]} \le \Variable{UseGate[gate]} \]](images/ormpex_ex120010.png)
for
and
,
![\[ \Argument{inputA[row]} \cdot \Variable{AssignAGate[gate]} \le 1 - \Variable{Output[gate,row]} \]](images/ormpex_ex120011.png)
for
and
,
![\[ \Argument{inputB[row]} \cdot \Variable{AssignBGate[gate]} \le 1 - \Variable{Output[gate,row]} \]](images/ormpex_ex120012.png)
for
and
,
![\[ \Variable{Output[pred,row]} \le 1 - \Variable{Output[gate,row]} \]](images/ormpex_ex120014.png)
for
and
,
![\begin{align*} & \quad \Argument{inputA[row]} \cdot \Variable{AssignAGate[gate]} + \Argument{inputB[row]} \cdot \Variable{AssignBGate[gate]} \\ & + \sum _{(\text {pred},\text {gate}) \in \text {ARCS}} \Variable{Output[pred,row]} \\ & \ge \Variable{UseGate[gate]} - \Variable{Output[gate,row]} \end{align*}](images/ormpex_ex120015.png)