这4台机器是同时运行的吧,你用两个queue,1个给A处理,1个给B处理,每次放入队列的时候需要判断一下
if(faceI == false)   //检查当前面是否已被处理
  product.Face = "I";
else if(faceC == false)
  product.Face = "C";
else
  //处理下一个
 if(product.Name == "A")         //如果是A就放入A队列
       queueA.Enqueue(product);
 else
      queueB.Enqueue(product);

解决方案 »

  1.   

    if( I )
    {
       check A1,A2 那个空闲或排队短,排队;
    }
    else if( C )
    {
       if(! I )
       {
          I;
       } 
       else if( I 后不到2小时)
       {
          Wait 直到2小时;
       }
       else
       {
         check B1,B2 哪个对短就排队
       }
    }
      

  2.   

    要让生产率最高,最好的办法就是让这四台机子都不空着,不停的工作达到效率最大化。
    那么产生空闲的原因就是有的机子负担太重,有的机子就空着了。
    A1和A2没有差别,B1和B2没有差别。
    那么我设计的思路就是,如果有好多产品需要处理,遵循以下原则:
    1,优先加工那些需要双面加工的。
    2,先加工A和B中比较紧张的那面。因为B的时间比较长,所以一般情况下B比较紧张。
    3,A1和A2的工作量要尽量相同。B1和B2亦如此。