<div>&nbsp;</div>
<div>I have written the following small prograg to solve GAP on size (3, 10)</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 // $Id$<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 #include &quot;flopc.hpp&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 using namespace flopc;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 #include &quot;OsiCbcSolverInterface.hpp&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6 /* Generalized Assignment Problem */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 class Gap : public MP_model {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9 public:<br>&nbsp;&nbsp;&nbsp;&nbsp; 10&nbsp;&nbsp; MP_set M,N;<br>&nbsp;&nbsp;&nbsp;&nbsp; 11&nbsp;&nbsp; MP_data c;<br>&nbsp;&nbsp;&nbsp;&nbsp; 12&nbsp;&nbsp; MP_data a;<br>&nbsp;&nbsp;&nbsp;&nbsp; 13&nbsp;&nbsp; MP_data b;<br>&nbsp;&nbsp;&nbsp;&nbsp; 14&nbsp;&nbsp; MP_variable x;<br>&nbsp;&nbsp;&nbsp;&nbsp; 15&nbsp;&nbsp; MP_constraint cap, feas;
<br>&nbsp;&nbsp;&nbsp;&nbsp; 16<br>&nbsp;&nbsp;&nbsp;&nbsp; 17&nbsp;&nbsp; Gap(int numM, int numN) : MP_model(new OsiCbcSolverInterface),<br>&nbsp;&nbsp;&nbsp;&nbsp; 18&nbsp;&nbsp; M(numM), N(numN),<br>&nbsp;&nbsp;&nbsp;&nbsp; 19&nbsp;&nbsp; c(M,N), a(M,N), b(M),<br>&nbsp;&nbsp;&nbsp;&nbsp; 20&nbsp;&nbsp; x(M,N),<br>&nbsp;&nbsp;&nbsp;&nbsp; 21&nbsp;&nbsp; cap(M), feas(N)<br>&nbsp;&nbsp;&nbsp;&nbsp; 22&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; 23&nbsp;&nbsp;&nbsp;&nbsp; x.binary();<br>&nbsp;&nbsp;&nbsp;&nbsp; 24&nbsp;&nbsp;&nbsp;&nbsp; cap(M) = sum(N, a(M,N)*x(M,N)) &lt;= b(M);<br>&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp; feas(N).<strong>such_that(N &lt; N.size())</strong> = sum(M, x(M,N)) == 1;<br>&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp; add(cap); add(feas);<br>&nbsp;&nbsp;&nbsp;&nbsp; 27&nbsp;&nbsp;&nbsp;&nbsp; setObjective( sum(M*N, c(M,N)*x(M,N)));
<br>&nbsp;&nbsp;&nbsp;&nbsp; 28&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; 29 };<br>&nbsp;&nbsp;&nbsp;&nbsp; 30<br>&nbsp;&nbsp;&nbsp;&nbsp; 31 int main() {<br>&nbsp;&nbsp;&nbsp;&nbsp; 32&nbsp;&nbsp;&nbsp;&nbsp; double cost[3][11]&nbsp; = {{47,16,27,21,25,12,55,31,40,40,1000},<br>&nbsp;&nbsp;&nbsp;&nbsp; 33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {45,18,56,33,36,46,11,17,31,50,1000},<br>&nbsp;&nbsp;&nbsp;&nbsp; 34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {50,23,22,59,31,35,40,41,40,11,1000}};
<br>&nbsp;&nbsp;&nbsp;&nbsp; 35<br>&nbsp;&nbsp;&nbsp;&nbsp; 36&nbsp;&nbsp;&nbsp;&nbsp; double req[3][11] = {{24,12,8,12,16,14,13,15,23,5,100},<br>&nbsp;&nbsp;&nbsp;&nbsp; 37&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {7,17,8,5,6,19,20,7,22,9,100},<br>&nbsp;&nbsp;&nbsp;&nbsp; 38&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {23,18,14,8,18,23,19,11,15,11,100}};
<br>&nbsp;&nbsp;&nbsp;&nbsp; 39<br>&nbsp;&nbsp;&nbsp;&nbsp; 40&nbsp;&nbsp;&nbsp;&nbsp; double capc[3] =&nbsp; {37,32,42};<br>&nbsp;&nbsp;&nbsp;&nbsp; 41<br>&nbsp;&nbsp;&nbsp;&nbsp; 42&nbsp;&nbsp;&nbsp;&nbsp; Gap instance(3,11);<br>&nbsp;&nbsp;&nbsp;&nbsp; 43<br>&nbsp;&nbsp;&nbsp;&nbsp; 44&nbsp;&nbsp;&nbsp;&nbsp; instance.c.value(&amp;cost[0][0]);<br>&nbsp;&nbsp;&nbsp;&nbsp; 45&nbsp;&nbsp;&nbsp;&nbsp; instance.a.value(&amp;req[0][0]);<br>&nbsp;&nbsp;&nbsp;&nbsp; 46&nbsp;&nbsp;&nbsp;&nbsp; 
instance.b.value(&amp;capc[0]);<br>&nbsp;&nbsp;&nbsp;&nbsp; 47<br>&nbsp;&nbsp;&nbsp;&nbsp; 48&nbsp;&nbsp;&nbsp;&nbsp; instance.minimize();<br>&nbsp;&nbsp;&nbsp;&nbsp; 49<br>&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;&quot;numRow:=&quot;&lt;&lt;instance-&gt;getNumRows()&lt;&lt;&quot;\n&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;&quot;numCols:=&quot;&lt;&lt;instance-&gt;getNumCols()&lt;&lt;&quot;\n&quot;;
<br>&nbsp;&nbsp;&nbsp;&nbsp; 52&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;&quot;numEle:=&quot;&lt;&lt;instance-&gt;getNumElements()&lt;&lt;&quot;\n&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp; 53&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;&quot;obj:=&quot;&lt;&lt;instance-&gt;getObjValue()&lt;&lt;&quot;\n&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp; 54&nbsp;&nbsp;&nbsp;&nbsp; 
instance.x.display(&quot;Solution of first instance (x)&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp; 55 }<br>&nbsp;</div>
<div>&nbsp;To learn how the such_that statement works, I introduced the 11th job with very high cost of assignment and infeasible</div>
<div>requirement on any of the machines...to prevent infeasibility I write the &quot;feas&quot; constraints using such_that statement so </div>
<div>that 11th job doesn&#39;t have to be assigned....but I am not able to see whats wrong with the code that it doesn&#39;t work.</div>
<div>Any help on this is much appreciated..</div>
<div>&nbsp;</div>
<div>regards,</div>
<div>vishy</div>
<div>&nbsp;</div>