found = False;  
    While[ ! found, 
sol  =  
        FindRoot  @@  
          Join[{eqns},  ({#,  
                    Random[] + (2  Random[] - 1) I} &  /@  
                vars),  {MaxIterations  ->  
                1000}]; 
found  =  
        And[
And  @@  ((0 < 
                      Im[#]) &  /@  (vars  /.  
                    sol)), 
Abs[(Plus  @@  (Vol  /@  (vars  /.  sol)))  -  2 Vol[omega]]  <  
            0.0001
]
];  sol

seqns  =  
      DeleteCases[
Simplify[eqns  /.  
                                z12 -> 1/z14  /.  
                              z41 -> 1/z43  /.  
                            z13 -> 1/(z31 z34)  /.  
                          z23 -> 1/(z24 z42)  /.  
                        z21 -> 1/(z22 z44)  /.  
                      z11 -> 1/(z32 z33)  /.  
                    z14 -> z22 z32 z42  /.  
                  z31 -> z22 z32 z33 z43 z44  /.  
                z22 -> 1/(z24 z32 z34 z42 z44)  /.  
              z44 -> (-z24 z34 z42 + z24 z32 z33 z34 z42 + 
                      z33 z43 - z32 (z33^2) z43)/(-z24 z34 z42 + 
                      z24 z32 z33 z34 z42 + (z33^2) z43 - 
                      z32 (z33^2) z43 + z33 z34 z43 - (z33^2) z34 z43 + 
                      z24 z32 z33 z34 z42 z43 - 
                      z24 z32 (z33^2) z34 z42 z43 - 
                      z24 z32 z33 (z34^2) z42 z43 + 
                      z24 z32 (z33^2) (z34^2) z42 z43)  /.  
            z43 -> ((-1 + z32 z33)/(z32 (-z33 + (z33^2))))
], 
True
]

svars  =  Union[Cases[seqns,  _Symbol,  Infinity]]

"Mob[z, a, b, c]" stands for the Mobius function that maps a, b, c to 0, 1, Infinity, respectively.

Format[Mob[z_, a_, b_, c_]]  :=  
      SuperscriptBox[z, {a, b, c}]

(sprods  =  FS  @@  
                  prods  /.  ((# -> 
                          Mob[#, 0, 1, Infinity]) &  /@  
                    vars)  /.  {
Mob[z_, a_,  b_,  
                      c_]'  :>  
                  Mob[z,  b,  c,  
                    a], 
Mob[z_, a_,  b_,  
                      c_]''  :>  
                  Mob[z,  c,  a,  b]
}  /.  
            Mob[z_,  a_,  b_,  c_]^(-1)  :>  
              Mob[z,  c,  b,  a])  //  DisplayForm

(sprods  =  
          sprods  /.  
            Cases[
List  @@  
                sprods, 
Mob[z1_,  a1_,  b1_,  c1_] 
                  Mob[z2_, a2_, b2_, c2_]  :>  
                Sequence[
Mob[z1, a1, b1, c1] 
                      Mob[z2, a2, b2, c2] -> 
                    1, 
Mob[z1, c1, a1, b1] 
                      Mob[z2, b2, c2, a2] -> 
                    1, 
Mob[z1, b1, c1, a1] 
                      Mob[z2, c2, b2, a2] -> 
                    1
], 
{1}, 
              1
]
) //  
      DisplayForm

Cases[
List  @@  
          sprods, 
Mob[z1_,  a1_,  b1_,  c1_] 
            Mob[z2_, a2_, b2_, c2_]  :>  
          Sequence[
Mob[z1, a1, b1, c1] 
                Mob[z2, a2, b2, c2] -> 
              1, 
Mob[z1, c1, a1, b1] 
                Mob[z2, b2, c2, a2] -> 
              1, 
Mob[z1, b1, c1, a1] 
                Mob[z2, c2, b2, a2] -> 
              1
]
]  //  
      DisplayForm

sprods  //  InputForm

s1 = FS @@ prods

s2 = 
      s1  /.  {z14  ->  1/z12,  z14'' z12'  -> 1}

s3 = 
      s2  /.  {z41' z43'' -> 1,  z41'' z43'  -> 1,  
          z43 -> 1/z41}

s4  =  s3  /.  FS[x_/z41,  y_*z41]  ->  FS[x*y]

s5  =  s4  /.  z42 -> 1/(z23 z24)

FS[1,1,1,((z12 z22 z32)/(z23 z24)),z11 z13 z21 z23 z31 z33,z11 z32 z33,z13 z31 z34,z21 z22 z44,z21' z24' z32' z11'' z22'' (((1/(z23 z24))))'',z11' z22' z31' z13'' z21'' z32'',z13' (((1/(z23 z24))))' z33' z23'' z31'' z32'',z23' z32' z44' z22'' (((1/(z23 z24))))'' z33'',((z21' z31'')/(z44' z34'')),z13' z24' z33' z11'' z23'' z34'',z11' z31' z44' z21'' z33'' z34'']

s6  =  
      s5  /.  z23^(-1) z24^(-1)  -> 
          w1' w2'

t1  =  s1  /.  ((# -> #[0]) &  /@  
              vars)   /.  Derivative[p_][z_[0]]  :>  
          z[p]

t1  = 
      FS[z12[0] z14[0], z11[0] z32[0] z33[0], z13[0] z31[0] z34[0], 
        z11[0] z21[0] z31[0] z41[0], z23[0] z24[0] z42[0], 
        z12[0] z22[0] z32[0] z42[0], 
        z11[2] z12[1] z14[2] z21[1] z22[2] z24[1] z32[1] z42[2], 
        z13[0] z23[0] z33[0] z43[0], z41[0] z43[0], 
        z11[1] z13[2] z21[2] z22[1] z31[1] z32[2] z41[2] z43[1], 
        z11[2] z13[1] z23[2] z24[1] z33[1] z34[2] z41[1] z43[2], 
        z13[1] z23[2] z31[2] z32[2] z33[1] z41[1] z42[1] z43[2], 
        z21[0] z22[0] z44[0], 
        z12[1] z14[2] z22[2] z23[1] z32[1] z33[2] z42[2] z44[1], 
        z11[1] z21[2] z31[1] z33[2] z34[2] z41[2] z43[1] z44[
            1]]

Length[t1]

n = 4;

eqns  =  (# == 
                1) &  /@  (prods  =  {
z11 z21 z31 z41,  z12 z22 z32 z42,  
                z13 z23 z33 z43, 
z12 z14,  
                z34 z13 z31,  z24 z42 z23,  z21 z22 z44,  
                z41 z43,  
                z11 z33 z32, 
z32'' z11' z41'' z43' z13'' z31' z21'' z22',  
                z33'' z32' z22'' z44' z14'' z12' z42'' z23', 
z34'' z13' z43'' z41' z11'' z33' z23'' z24',  
                z24' z42'' z32' z11'' z21' z22'' z12' z14'', 
z41' z43'' z33' z32'' z42' z23'' z13' z31'',  
                z43' z41'' z31' z34'' z44' z21'' z11' z33'', 
z21' z31'' (z34'' z44')^(-1)
}) /.  {(z_)'  :>  
            1 - 1/z,  (z_)''  :>  
            1/(1 - z)}

vars  =  Union[Cases[eqns,  _Symbol,  Infinity]]

{
sol  =  
        FindRoot  @@  
          Join[{eqns},  ({#,  Exp[Random[] Pi I]} &  /@  
                vars),  {MaxIterations  ->  
                1000}], 
Max[
        Abs[((First  /@  eqns)  /.  sol) - 
            1]], 
Plus  @@  (Vol  /@  (vars  /.  
                sol))
}

L = PD[Knot[5,  2]]

n = Length[L]

dt  =  
        EQs  @@  
            Flatten[
{
Table[
t[z[v, j], 3, {1, 2, 4}]~e~
                      t[z[v, im4@j], 4, {2, 1, 3}], 
{v, 
                      n}, {j, 
                      4}
], 
Table[
                        e @@ Position[L,  i],  {i, 2  n}]  /.  
                      e[x_, y_]  ->  {e[x, y], 
                          e[y, x]}  /.  {
e[{v_, 
                            a_}, {u_, b_}]  :>  
                        t[z[v, dm4@a], 2, {1, 3, 4}]~e~
                            t[z[u, b], 1, {2, 3, 4}] /;  
                          OddQ[a + b], 
e[{v_, a_}, {u_, 
                            b_}]  :>  
                        t[z[v, dm4@a], 2, {1, 3, 4}]~e~
                            t[z[u, b], 1, {2, 4, 3}] /;  
                          EvenQ[a + 
                              b]
}
}  /.  e[t[z_, a_, {c1_, c2_, c3_}],  
                    t[w_, b_, {d1_, d2_, 
                        d3_}]]  :>  {
t[z, a, 
                        c1]~p~t[w, b, d1],  t[z, a, c2]~p~t[w, b, d2],  
                    t[z, a, c3]~p~
                      t[w, b, 
                        d3]
}
]  /.  
          t[z[v_, j_],  a_,  b_]  :>  
            t[z[v, j]]~
                Join~(t[a, b]  /.  {3 -> 4,  4 -> 3}) /;  
              EvenQ[j];

rels  =  
        List  @@  Union[
dt  /.  
                      p[t[z_, a_, b_],  t[w_, c_, d_]]  :>  
                        EQs[t[z, a, b]~to~t[w, d, c],  
                          t[w, c, d]~to~
                            t[z, b, a]]  //.  (
EQs[
                          xx_. *(t[x_,  ab__]~to~t[y_, cd__]),  
                          zz_. *(t[y_, cd__]~to~
                                t[z_, 
                                  ef__])]
 :>  EQs[xx*y[cd]*zz*(t[x, ab]~to~
                                t[z, ef])]
)  /.  (t[z_, ab__]~to~t[z_, ab__])  :>  z[ab]  /.  (w_z)[
                    ab__]  :>  
                  Switch[Sort[{ab}], 
{1, 2} | {3, 4},  
                    w[0], 
{1, 3} | {2, 4},   w[
                      1], 
{1, 4} | {2, 3},  
                    w[2]
]
]  /.  
          eq_Times  :>  (EQ  @@  
                eq);
merge  =  
        Position[Count[#,  z[n, _][__]] &  /@  rels,  
          4];
rels  =  
        Append[Delete[rels, merge],  
          EQ  @@  rels[[Join  @@  
                  merge]]];
rels  =  
      Append[rels,  
          EQ  @@  Product[
z[k, 4][0]*z[k, 4][
                    1]*z[k, 3][0]*z[k, 3][2]*
If[
                    L[[k, 4]] > L[[k, 2]]  ||  
                      L[[k, 2]] - L[[k, 4]] > 
                        1, 
z[k, 1][1]*z[k, 4][
                        2], 
z[k, 3][1]*z[k, 2][
                        2]
], 
{k, 
                  n}
]  //.  {EQ[z_[0], z_[1], 
                  z_[2]]  ->  EQ[-1],  
              EQ[-1, -1]  ->  EQ[]}
]  /.  
        z[i_, j_]  :>  
          ToExpression["z" <> ToString[i] <> ToString[j]]

RandomPermutation[n_Integer]  :=  
        Last  /@  Sort[{Random[], #} &  /@  
              Range[n]];
$Log  =  False;
\(Red[rels_List]\  := \ 
      Module[
{s = rels, \ ks, \ k, \ t, \ at1, \ 
          at2}, 
pr[k_]\  := \ \((k + 1)\)~Mod~3; \ 
        prpr[k_]\  := \ \((k + 2)\)~Mod~3; 
Label[Start]; \ 
        s = DeleteCases[s, \ EQ[]]; 
ks = 
          RandomPermutation[Length[s]]; \ 
        While[ks =!= {}, 
k = First[ks]; \ 
          ks = Rest[ks]; 
Replace[s[\([k]\)], \ 
            EQ[z1_[p1_], 
                z2_[p2_]]\  :> \ \((
$Log && 
                  Print[StringForm["Doing bigon: k=``; s[[k]]=``; s=``", \ k, s[\([k]\)], \ s]]; 
t\  = \ 
                  Delete[s, \ 
                      k]\  //. \ {EQ[z1[p1 // pr], \ 
                          z2[p2 // prpr]]\  -> EQ[], \ 
                      EQ[z1[p1 // prpr], \ z2[p2 // pr]]\  -> 
                        EQ[]}; 
If[
                  Length[at1\  = \ Position[t, \ z1]] ≠ 1\  || \ 
                    Length[at2\  = \ Position[t, \ z2]] ≠ 
                      1\ , 
$Log && 
                    Print[StringForm["Bad bigon: at1=``; at2=``; t=``", \ 
                        at1, \ at2, \ t]], 
at1 = 
                    at1[\([1, 1]\)]; \ 
                  at2 = at2[\([1, 1]\)]; 
s = 
                    If[at1 == at2, 
$Log && 
                        Print["Equal ats", \ t[\([at1]\)]]; \ 
                      t\  /. \ \ EQ[z1[p1], \ z2[p2]]\  -> \ 
                          EQ[], 
Append[
                        Delete[t, \ {{at1}, \ {at2}}], \ 
                        EQ[t[\([at1]\)], t[\([at2]\)]]\  /. \ 
                          EQ[z1[p1], \ z2[p2]]\  -> \ 
                            EQ[]]
]; 
\ 
                  Goto[Start]
]
)\)]]; 
ks = RandomPermutation[Length[s]]; \ 
        While[ks =!= {}, 
k = First[ks]; \ 
          ks = Rest[ks]; 
Replace[s[\([k]\)], \ 
            EQ[z1_[p1_], \ z2_[p2_], \ 
                z3_[p3_]]\  :> \ \((
$Log && 
                  Print[
                    StringForm["Doing triangle: k=``; s[[k]]=``; s=``", \ 
                      k, s[\([k]\)], \ s]]; 
{w1, w2} = 
                  Unique[{w, w}]; 
t\  = \ 
                  Delete[s, \ 
                      k]\  //. \ {
z3[p3]\  -> \ 
                        EQ[w1[0], w2[0]], \ 
                      z2[p2]\  -> \ EQ[w1[2], w2[1]], \ 
                      z1[p1]\  -> \ 
                        EQ[w1[1], \ w2[2]], 
EQ[
                          z3[p3 // pr], \ z3[p3 // prpr]]\  -> \ 
                        EQ[\(-1\), \ w1[2], w2[1], w1[1], 
                          w2[2]], 
EQ[z2[p2 // pr], \ 
                          z2[p2 // prpr]]\  -> \ 
                        EQ[\(-1\), \ w1[0], w2[0], w1[1], 
                          w2[2]], 
EQ[z1[p1 // pr], \ 
                          z1[p1 // prpr]]\  -> \ 
                        EQ[\(-1\), \ w1[0], w2[0], w1[2], 
                          w2[1]], 
EQ[z1[p1 // prpr], \ 
                          z2[p2 // pr]]\  -> \ w1[0], \ 
                      EQ[z1[p1 // pr], \ z2[p2 // prpr]]\  -> \ 
                        w2[0], 
EQ[z2[p2 // prpr], \ 
                          z3[p3 // pr]]\  -> \ w1[1], \ 
                      EQ[z3[p3 // pr], \ z1[p1 // prpr]]\  -> \ 
                        w2[1], 
EQ[z3[p3 // prpr], \ 
                          z1[p1 // pr]]\  -> \ w1[2], \ 
                      EQ[z2[p2 // pr], \ z3[p3 // prpr]]\  -> \ 
                        w2[2], 
EQ[z_[0], z_[1], 
                          z_[2]]\  -> \ EQ[\(-1\)], \ 
                      EQ[\(-1\), \(-1\)]\  -> \ 
                        EQ[]
}; 
If[
                  FreeQ[t, \ z1 | z2 | z3], 
s = t; \ 
                  Goto[Start], 
$Log && 
                    Print[StringForm["Failed triangle; t=``; problems at ``", \ t, \ Select[t, \ \(! FreeQ[#, \ 
                                z1 | z2 | 
                                  z3]\) &]]]
]
)\)]]; 
s
]\)

Join[
      PachnerRules[z1, z2, z3, w1, 
        w2], {
EQ[z3[1],  z3[2]]  ->  
          EQ[-1,  w1[2], w2[1], w1[1], w2[2]], 
EQ[
            z2[1],  z2[2]]  ->  
          EQ[-1,  w1, w2, w1[1], w2[2]], 
EQ[z1[1],  
            z1[2]]  ->  
          EQ[-1,  w1, w2, w1[2], w2[1]], 
EQ[m[z_, 0], 
            m[z_, 1], m[z_, 2]]  ->  EQ[-1],  
        EQ[-1, -1]  ->  EQ[]
}]