((GeomHalmaz)Kt.get(work.getPlace())).gmBeszur(work);
ktr.setElementAddByIndex(work.getPlace().getId(), work.getType(), work.getVegrehajtasiIdo());
}
}
for(int i=1; i<=Evesszo.gmMeret(); i++){
GeomTeam team = (GeomTeam)Evesszo.gmIedikElem(i);
if(team.getIdoablak().getX() <= gamma*(lepesszam+1)){
((GeomHalmaz)Lt.get(team.getBasicPlace())).gmBeszur(team);
ltr.setElementAddByIndex(team.getBasicPlace().getId(), team.getType(), (min(gamma*(lepesszam+1), team.getIdoablak().getY())-team.getIdoablak().getX()));
}
}
Iterator iter = resources.getPlaces().iterator();
while(iter.hasNext()){
int placeId = ((GeomPlace)iter.next()).getId();
int delta = ltr.getSorVektorByIndex(placeId).elemekOsszege() - ktr.getSorVektorByIndex(placeId).elemekOsszege();
if(delta > 0){ /// 8/a
GeomIntMatrix tiltas = new GeomIntMatrix(eroforrasTipusokSzama, munkaTipusokSzama+1);
for(int i=1; i<=eroforrasTipusokSzama; i++){
for(int j=1; j<=munkaTipusokSzama; j++)
tiltas.setElement(i, j, 1-resources.matrixTypePair.getElement(i,j));
tiltas.setElement(i, munkaTipusokSzama+1, 0);
}
GeomSzallitasiFeladat sz = new GeomSzallitasiFeladat();
GeomIntVektor a = ltr.getSorVektorByIndex(placeId);
GeomIntVektor b = ktr.getSorVektorByIndex(placeId);
b.addElement(delta);
GeomIntMatrix szallitas = sz.solve(tiltas, a, b);
if(szallitas.elemekSzorzatOsszege(tiltas)!=0){
for(int j=1; j<=tiltas.getMeret().getY(); j++){
int nemTiltottElemSora = 0;
for(int i=1; i<=tiltas.getMeret().getX(); i++){
if(tiltas.getElement(i,j)==0 && nemTiltottElemSora==0){
nemTiltottElemSora = i;
}
if(tiltas.getElement(i,j)*szallitas.getElement(i,j)>0){
if(nemTiltottElemSora==0){
for(int l=i+1; l<=tiltas.getMeret().getX(); l++){
if(tiltas.getElement(l,j)==0 && nemTiltottElemSora==0){
nemTiltottElemSora = l;
break;
}
}
if(nemTiltottElemSora==0) throw new GeomKAPMatrixFillException();
}
int diff = szallitas.getElement(i,j);
szallitas.setElementAdd(nemTiltottElemSora, szallitas.getMeret().getY(), -diff);
szallitas.setElementAdd(i, szallitas.getMeret().getY(), diff);
}
}
}
}
KAPij.setSorVektorByIndex(placeId, szallitas.getOszlopVektor(szallitas.getMeret().getY()));
}else{ /// 8/b
delta = 0-delta;
GeomTeam team = new GeomTeam(); //fiktiv
GeomIntMatrix tiltas = new GeomIntMatrix(eroforrasTipusokSzama+1, munkaTipusokSzama);
for(int i=1; i<=eroforrasTipusokSzama; i++){
for(int j=1; j<=munkaTipusokSzama; j++)
tiltas.setElement(i, j, 1-resources.matrixTypePair.getElement(i,j));
}