| vahy

    function [htc1,v1,V1,V2,V3]=MPC(A,B,C,D,E,beta,delta,w1,w2,w3, Tw,Tt,Td,TS,TTS,OPv,OPm, u,v,vv,vzp,htc,minHtc,maxHtc,zpozdeni)

    p=max(size(htc)); %pocet chladicich okruhu
    N=max(size(u)); M=min(size(u));

    a=zeros(p,150);b=a; %150 - aby se vesly vsechny rezy z okruhu(120=max n(i))
    jStart=zeros(p,1); jStop=jStart;n=zeros(p,1);
    Tc=Tt;

    va=ones(p,1).*v;S=zeros(p,1);

    jj=1;
    for i=1:p
        k=0; jstart=999;jstop=0;
        for j=jj:N
            if OPv(j,3)==i
                k=k+1;
                a(i,k)=OPv(j,1); %vzdalenost rezu
                b(i,k)=j; %poradi rezu
                if j<jstart
                    jStart(i)=j; %poradi prvniho rezu v okruhu
                    jstart=jStart(i);
                end
                if j>jstop
                    jStop(i)=j; %poradi posledniho rezu v okruhu
                end
            end
            n(i)=k;
                if OPv(j,3)>i %neprochazim nasledujici okruhy
                    break;
                end
        end %j - vsechny rezy
        jj=max(jStop); %neprochazim predesle okruhy
        if n(i)~=0
            S(i)=1/2*(a(i,1)+a(i,n(i)))/1000; %stred okruhu v m
        if i<6 %okruhy 1-5 jsou VR i MR
            Tc1=sum(u(1,b(i,1:n(i))))/n(i); %prumerna teplota v okruhu
            Tc2=sum(u(M,b(i,1:n(i))))/n(i); %prumerna teplota v okruhu
            Tc(i)=(Tc1+Tc2)/2; %prumerna teplota v okruhu
        else
            Tc(i)=sum(u(M,b(i,1:n(i))))/n(i); %prumerna teplota v okruhu
        end
        end
    end %i chladici okruhy
    jj=1;
    for i=6:p
        k=0; jstart=999;jstop=0;
        for j=jj:N
            if OPm(j,3)==i
                k=k+1;
                a(i,k)=OPm(j,1); %vzdalenost rezu
                b(i,k)=j; %poradi rezu
                if j<jstart
                    jStart(i)=j; %poradi prvniho rezu v okruhu
                    jstart=jStart(i);
                end
                if j>jstop
                    jStop(i)=j; %poradi posledniho rezu v okruhu
                end
            end
                if OPm(j,3)>i %neprochazim nasledujici okruhy
                    break;
                end
        end %j - vsechny rezy
        jj=max(jStop(1:i)); %neprochazim predesle okruhy
        if k~=0
            n(i)=k;
            S(i)=1/2*(a(i,1)+a(i,n(i)))/1000; %stred okruhu v m
            Tc(i)=sum(u(1,b(i,1:n(i))))/n(i); %prumerna teplota v okruhu
        end
    end %i chladici okruhy

    ve=beta.*va+(1-beta).*vv;
    V1=((A.*ve.^2./(vzp.^2)+B.*ve./vzp+C)./(A+B+C)).^(1./zpozdeni);

    TSa=TS;
    TSe=delta.*TSa+(1-delta)*TTS;
    V2=D.*(TSe-Td)./(TS-Td);

    V3=E.*(Tc-Tw)./(Tt-Tw);

    %V=(V1+V2+V3)/3; %stejne vahy
    V=V1.*w1+V2.*w2+V3.*w3;
    %V=V3; %bez MPC
    htc1=htc.*V;
    for i=1:p
        if htc1(i)<minHtc
            htc1(i)=minHtc;
        else if htc1(i)>maxHtc
                htc1(i)=maxHtc;
            end
        end
    end
    v1=vv;

    htc1(2)=0; %2okruh neni