Fud inducers
Haskell commentary on the implementation of Tractable and Practicable Inducers/Haskell Implementation/Fud inducers
Sections
Practicable shuffle content alignment valency-density fud inducer
Practicable highest-layer shuffle content alignment valency-density fud inducer
Practicable level shuffle content alignment valency-density fud inducer
Practicable shuffle content alignment valency-density fud inducer
Given the limited-layer limited-underlying limited-breadth fud tree searcher (Text)
\[
Z_{P,A,A_R,\mathrm{L}} = \mathrm{searchTreer}(\mathcal{F}_{\infty,U_A,V_A} \cap \mathcal{F}_{\mathrm{u}} \cap \mathcal{F}_{\mathrm{b}} \cap \mathcal{F}_{\mathrm{h}},P_{P,A,A_R,\mathrm{L}},\{\emptyset\})
\]
and the limited-derived derived variables set list maximiser (Text)
\[
Z_{P,A,A_R,F,\mathrm{D}} = \mathrm{maximiseLister}(X_{P,A,A_R,F,\mathrm{D}},P_{P,A,A_R,F,\mathrm{D}},\mathrm{top}(\mathrm{omax}),R_{P,A,A_R,F,\mathrm{D}})
\]
the practicable shuffle content alignment valency-density fud inducer, $I_{z,\mathrm{csd,F,\infty,q},P}^{‘}$, may then be implemented (Text)
\[
\begin{eqnarray}
&&I_{z,\mathrm{csd,F,\infty,q},P}^{‘ * }(A) = \\
&&\hspace{2em}\{(G,I_{\mathrm{csd}}^{ * }((A,A_R,G))) : \\
&&\hspace{5em}|V_A|>1,~\{F_{\mathrm{L}}\} = \mathrm{leaves}(\mathrm{tree}(Z_{P,A,A_R,\mathrm{L}})),\\
&&\hspace{5em}K \in \mathrm{maxd}(\mathrm{elements}(Z_{P,A,A_R,F_{\mathrm{L}},\mathrm{D}})),~G = \mathrm{depends}(F_{\mathrm{L}},K)\} \cup \\
&&\hspace{2em}\{(\emptyset,0) : |V_A| \leq 1\}
\end{eqnarray}
\]
where the shuffle content alignment valency-density computer $I_{\mathrm{csd}} \in \mathrm{computers}$ is defined as
\[
\begin{eqnarray}
I_{\mathrm{csd}}^{ * }((A,A_R,F)) = (I_{\mathrm{a}}^{ * }(A * F^{\mathrm{T}})-I_{\mathrm{a}}^{ * }(A_R * F^{\mathrm{T}}))/I_{\mathrm{cvl}}^{ * }(F)
\end{eqnarray}
\]
The fud inducer is defined in module AlignmentPracticable
,
parametersSystemsSamplesShufflesListVariablesInducerFud ::
Integer -> Integer -> Integer -> Integer -> Integer -> Integer -> Integer -> Integer ->
System -> Histogram -> Histogram -> [Variable] ->
Maybe ((Fud,Fud),(System,[Variable]))
as
parametersSystemsSamplesShufflesListVariablesInducerFud wmax lmax xmax omax bmax mmax umax pmax uu aa aarr ll
...
| ... = Just $ ((depends ff kk, ff),(uu',ll'))
| otherwise = Nothing
where
(nn,(uu',ll')) = zzllfuds lmax xmax omax bmax mmax umax pmax uu aa aarr ll
ff = if nn /= [] then last nn else fudEmpty
kk = maxdff ff $ zzffcsdderopt wmax omax uu' aa aarr ff
zzllfuds lmax xmax omax bmax mmax umax pmax uu aa aarr ll = fromJust $
parametersSystemsSamplesShufflesListVariablesSearcherFud lmax xmax omax bmax mmax umax pmax uu aa aarr ll
zzffcsdderopt wmax omax uu aa rr ff = fst $ unzip $ fromJust $
parametersSystemsSamplesShufflesFudsFunctionOptimiserDerived wmax omax uu aa rr ff
...
Note that, again, the partition variables are replaced by cardinal variables, so the fud inducer has an additional argument of a list of variables, [Variable]
.
For example,
let zzllfuds aa aarr lmax xmax omax bmax mmax umax pmax = fst $ fromJust $ parametersSystemsSamplesShufflesListVariablesSearcherFud lmax xmax omax bmax mmax umax pmax (sys aa) aa aarr [VarInt i | i <-[10..]]
let iillfuds aa aarr wmax lmax xmax omax bmax mmax umax pmax = fst $ fromJust $ parametersSystemsSamplesShufflesListVariablesInducerFud wmax lmax xmax omax bmax mmax umax pmax (sys aa) aa aarr [VarInt i | i <-[10..]]
let aa = resize 100 $ regpivot 3 3
algnden aa
17.240346078711394
let ff = last $ zzllfuds aa (ind aa) 1 (3^3) 3 3 3 (3^3) 1
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ ff
"({(1,1),(64,1)},1 % 1)"
"({(1,2),(64,2)},1 % 1)"
"({(1,3),(64,2)},1 % 1)"
"({(2,1),(65,1)},1 % 1)"
"({(2,2),(65,2)},1 % 1)"
"({(2,3),(65,2)},1 % 1)"
"({(3,1),(66,1)},1 % 1)"
"({(3,2),(66,2)},1 % 1)"
"({(3,3),(66,2)},1 % 1)"
rpln $ zip [0.. ] $ fst $ unzip $ zzffcsdderopt aa (ind aa) ff (3^3) 3
"(0,{({64,65},15.918481590327701),({64,66},15.918481590327701),({65,66},15.918481590327701)})"
"(1,{({64,65,66},31.253377751394225)})"
"(2,{})"
let (gg,_) = iillfuds aa (ind aa) (3^3) 1 (3^3) 3 3 3 (3^3) 1
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ gg
"({(1,1),(64,1)},1 % 1)"
"({(1,2),(64,2)},1 % 1)"
"({(1,3),(64,2)},1 % 1)"
"({(2,1),(65,1)},1 % 1)"
"({(2,2),(65,2)},1 % 1)"
"({(2,3),(65,2)},1 % 1)"
"({(3,1),(66,1)},1 % 1)"
"({(3,2),(66,2)},1 % 1)"
"({(3,3),(66,2)},1 % 1)"
algnden (aa `fapply` ff) - algnden (ind aa `fapply` ff)
31.253377751394225
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
31.253377751394225
let aa = resize 1000 $ regpivot 3 4
algnden aa
197.70429785167653
let (gg,_) = iillfuds aa (ind aa) (3^3) 1 (3^3) 3 3 3 (3^2) 1
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ gg
"({(2,1),(64,1)},1 % 1)"
"({(2,2),(64,2)},1 % 1)"
"({(2,3),(64,2)},1 % 1)"
"({(3,1),(65,1)},1 % 1)"
"({(3,2),(65,2)},1 % 1)"
"({(3,3),(65,2)},1 % 1)"
"({(4,1),(66,1)},1 % 1)"
"({(4,2),(66,2)},1 % 1)"
"({(4,3),(66,2)},1 % 1)"
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
218.3586352266184
let (gg,_) = iillfuds aa (ind aa) (3^4) 1 (3^4) 4 4 4 (3^2) 1
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ gg
"({(1,1),(146,1)},1 % 1)"
"({(1,2),(146,2)},1 % 1)"
"({(1,3),(146,2)},1 % 1)"
"({(2,1),(147,1)},1 % 1)"
"({(2,2),(147,2)},1 % 1)"
"({(2,3),(147,2)},1 % 1)"
"({(3,1),(148,1)},1 % 1)"
"({(3,2),(148,2)},1 % 1)"
"({(3,3),(148,2)},1 % 1)"
"({(4,1),(149,1)},1 % 1)"
"({(4,2),(149,2)},1 % 1)"
"({(4,3),(149,2)},1 % 1)"
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
325.96965461170066
Now consider predicting the rain in the weather forecast example (summarised in Functional definition sets),
let aa = hhaa hh
algnden $ aa `red` [pressure,cloud,wind]
2.15004722009382
let ff = last $ zzllfuds (aa `red` [pressure,cloud,wind]) (ind (aa `red` [pressure,cloud,wind])) 1 (3^3) 3 3 2 (3^3) 1
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ ff
"({(cloud,heavy),(296,1)},1 % 1)"
"({(cloud,light),(296,2)},1 % 1)"
"({(cloud,none),(296,2)},1 % 1)"
"({(pressure,high),(wind,light),(297,1)},1 % 1)"
"({(pressure,high),(wind,none),(297,1)},1 % 1)"
"({(pressure,high),(wind,strong),(297,1)},1 % 1)"
"({(pressure,low),(wind,light),(297,2)},1 % 1)"
"({(pressure,low),(wind,none),(297,1)},1 % 1)"
"({(pressure,low),(wind,strong),(297,2)},1 % 1)"
"({(pressure,medium),(wind,light),(297,1)},1 % 1)"
"({(pressure,medium),(wind,none),(297,1)},1 % 1)"
"({(pressure,medium),(wind,strong),(297,1)},1 % 1)"
rpln $ zip [0.. ] $ fst $ unzip $ zzffcsdderopt aa (ind aa) ff (3^3) 3
"(0,{({296,297},3.0601487103147385)})"
"(1,{})"
let (gg,_) = iillfuds (aa `red` [pressure,cloud,wind]) (ind (aa `red` [pressure,cloud,wind])) (3^3) 1 (3^3) 3 3 2 (3^3) 1
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ gg
"({(cloud,heavy),(296,1)},1 % 1)"
"({(cloud,light),(296,2)},1 % 1)"
"({(cloud,none),(296,2)},1 % 1)"
"({(pressure,high),(wind,light),(297,1)},1 % 1)"
"({(pressure,high),(wind,none),(297,1)},1 % 1)"
"({(pressure,high),(wind,strong),(297,1)},1 % 1)"
"({(pressure,low),(wind,light),(297,2)},1 % 1)"
"({(pressure,low),(wind,none),(297,1)},1 % 1)"
"({(pressure,low),(wind,strong),(297,2)},1 % 1)"
"({(pressure,medium),(wind,light),(297,1)},1 % 1)"
"({(pressure,medium),(wind,none),(297,1)},1 % 1)"
"({(pressure,medium),(wind,strong),(297,1)},1 % 1)"
algnden (aa `fapply` ff) - algnden (ind aa `fapply` ff)
3.0601487103147385
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
3.0601487103147385
let ff = last $ zzllfuds (aa `red` [pressure,cloud,wind]) (ind (aa `red` [pressure,cloud,wind])) 1 (3^3) 3 (3*2) 3 (3^3) 2
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ ff
"({(cloud,heavy),(197,1)},1 % 1)"
"({(cloud,light),(197,2)},1 % 1)"
"({(cloud,none),(197,2)},1 % 1)"
"({(pressure,high),(196,1)},1 % 1)"
"({(pressure,low),(196,2)},1 % 1)"
"({(pressure,medium),(196,1)},1 % 1)"
"({(wind,light),(161,1)},1 % 1)"
"({(wind,none),(161,1)},1 % 1)"
"({(wind,strong),(161,2)},1 % 1)"
"({(wind,light),(171,1)},1 % 1)"
"({(wind,none),(171,2)},1 % 1)"
"({(wind,strong),(171,1)},1 % 1)"
rpln $ zip [0.. ] $ fst $ unzip $ zzffcsdderopt aa (ind aa) ff (3^3) 3
"(0,{({161,197},0.6057834603672152),({171,197},0.5399739167361197),({196,197},2.4883225433699216)})"
"(1,{({161,171,197},0.8225606143847344),({161,196,197},2.751189151274419),({171,196,197},2.7587225646757725)})"
"(2,{({161,171,196,197},2.7398023210803686)})"
"(3,{})"
let (gg,_) = iillfuds (aa `red` [pressure,cloud,wind]) (ind (aa `red` [pressure,cloud,wind])) (3^3) 1 (3^3) 3 (3*2) 3 (3^3) 2
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ gg
"({(cloud,heavy),(197,1)},1 % 1)"
"({(cloud,light),(197,2)},1 % 1)"
"({(cloud,none),(197,2)},1 % 1)"
"({(pressure,high),(196,1)},1 % 1)"
"({(pressure,low),(196,2)},1 % 1)"
"({(pressure,medium),(196,1)},1 % 1)"
"({(wind,light),(171,1)},1 % 1)"
"({(wind,none),(171,2)},1 % 1)"
"({(wind,strong),(171,1)},1 % 1)"
algnden (aa `fapply` ff) - algnden (ind aa `fapply` ff)
2.7398023210803686
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
2.7587225646757725
let ff = last $ zzllfuds (aa `red` [pressure,cloud,wind]) (ind (aa `red` [pressure,cloud,wind])) 1 (3^3) 3 (3*2) 2 (3^3) 2
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ ff
"({(cloud,heavy),(607,1)},1 % 1)"
"({(cloud,light),(607,2)},1 % 1)"
"({(cloud,none),(607,2)},1 % 1)"
"({(cloud,heavy),(614,1)},1 % 1)"
"({(cloud,light),(614,2)},1 % 1)"
"({(cloud,none),(614,3)},1 % 1)"
"({(cloud,heavy),(631,1)},1 % 1)"
"({(cloud,light),(631,1)},1 % 1)"
"({(cloud,none),(631,2)},1 % 1)"
"({(pressure,high),(wind,light),(577,1)},1 % 1)"
"({(pressure,high),(wind,none),(577,1)},1 % 1)"
"({(pressure,high),(wind,strong),(577,1)},1 % 1)"
"({(pressure,low),(wind,light),(577,2)},1 % 1)"
"({(pressure,low),(wind,none),(577,1)},1 % 1)"
"({(pressure,low),(wind,strong),(577,2)},1 % 1)"
"({(pressure,medium),(wind,light),(577,1)},1 % 1)"
"({(pressure,medium),(wind,none),(577,1)},1 % 1)"
"({(pressure,medium),(wind,strong),(577,1)},1 % 1)"
"({(pressure,high),(606,1)},1 % 1)"
"({(pressure,low),(606,2)},1 % 1)"
"({(pressure,medium),(606,1)},1 % 1)"
"({(wind,light),(615,1)},1 % 1)"
"({(wind,none),(615,2)},1 % 1)"
"({(wind,strong),(615,3)},1 % 1)"
"({(wind,light),(630,1)},1 % 1)"
"({(wind,none),(630,1)},1 % 1)"
"({(wind,strong),(630,2)},1 % 1)"
rpln $ zip [0.. ] $ fst $ unzip $ zzffcsdderopt aa (ind aa) ff (3^3) 3
"(0,{({577,607},3.0601487103147385),({577,614},2.3923266698540573),({606,607},2.4883225433699216)})"
"(1,{({577,606,607},3.891346416043536),({577,606,614},3.358279087934026),({577,607,630},3.1643965626442903)})"
"(2,{({577,606,607,630},3.8511125582823595),({577,606,607,631},3.8213440591293804),({577,606,614,630},3.8286774042639347)})"
"(3,{})"
rpln $ zip [0.. ] $ fst $ unzip $ zzffcsdderopt aa (ind aa) ff (3^7) 3
"(0,{({577,607},3.0601487103147385),({577,614},2.3923266698540573),({606,607},2.4883225433699216)})"
"(1,{({577,606,607},3.891346416043536),({577,606,614},3.358279087934026),({577,607,630},3.1643965626442903)})"
"(2,{({577,606,607,630},3.8511125582823595),({577,606,607,631},3.8213440591293804),({577,606,614,630},3.8286774042639347)})"
"(3,{({577,606,607,614,630},3.8388619125562538),({577,606,607,630,631},4.215798138230515),({577,606,614,630,631},3.8107275511105954)})"
"(4,{({577,606,607,614,615,630},3.01163366978457),({577,606,607,614,630,631},3.7980303142856844),({577,606,607,615,630,631},3.265837542015048)})"
"(5,{({577,606,607,614,615,630,631},3.001766092132741)})"
"(6,{})"
let (gg,_) = iillfuds (aa `red` [pressure,cloud,wind]) (ind (aa `red` [pressure,cloud,wind])) (3^7) 1 (3^3) 3 (3*2) 2 (3^3) 2
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ gg
"({(cloud,heavy),(607,1)},1 % 1)"
"({(cloud,light),(607,2)},1 % 1)"
"({(cloud,none),(607,2)},1 % 1)"
"({(cloud,heavy),(631,1)},1 % 1)"
"({(cloud,light),(631,1)},1 % 1)"
"({(cloud,none),(631,2)},1 % 1)"
"({(pressure,high),(wind,light),(577,1)},1 % 1)"
"({(pressure,high),(wind,none),(577,1)},1 % 1)"
"({(pressure,high),(wind,strong),(577,1)},1 % 1)"
"({(pressure,low),(wind,light),(577,2)},1 % 1)"
"({(pressure,low),(wind,none),(577,1)},1 % 1)"
"({(pressure,low),(wind,strong),(577,2)},1 % 1)"
"({(pressure,medium),(wind,light),(577,1)},1 % 1)"
"({(pressure,medium),(wind,none),(577,1)},1 % 1)"
"({(pressure,medium),(wind,strong),(577,1)},1 % 1)"
"({(pressure,high),(606,1)},1 % 1)"
"({(pressure,low),(606,2)},1 % 1)"
"({(pressure,medium),(606,1)},1 % 1)"
"({(wind,light),(630,1)},1 % 1)"
"({(wind,none),(630,1)},1 % 1)"
"({(wind,strong),(630,2)},1 % 1)"
algnden (aa `fapply` ff) - algnden (ind aa `fapply` ff)
3.001766092132741
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
4.215798138230515
rpln $ aarr $ (norm (aa `fapply` gg)) `divide` (norm (vvc `fapply` gg))
"({(577,1),(606,1),(607,2),(630,1),(631,1)},1.35)"
"({(577,1),(606,1),(607,2),(630,1),(631,2)},2.7)"
"({(577,1),(606,1),(607,2),(630,2),(631,1)},1.35)"
"({(577,1),(606,2),(607,2),(630,1),(631,1)},1.35)"
"({(577,2),(606,2),(607,1),(630,1),(631,1)},2.7)"
"({(577,2),(606,2),(607,1),(630,2),(631,1)},2.7)"
"({(577,2),(606,2),(607,2),(630,1),(631,2)},1.35)"
algn (aa `fapply` gg) - algn (ind aa `fapply` gg)
8.43159627646103
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
4.215798138230515
ent (aa `fapply` gg)
1.6787526304900946
cent (fftt gg) (aa `red` [cloud,pressure,wind])
0.805614209483707
rent (aa `fapply` gg) (vvc `fapply` gg)
12.077070563340271
tlalgn (fftt gg) aa [rain]
14.034757670921657
tlent (fftt gg) aa [rain]
10.043858601430028
size $ eff (aa `fapply` gg) `mul` (vvc `fapply` gg)
42 % 1
The weather forecast example continues in Practicable highest-layer shuffle content alignment valency-density fud inducer.
Practicable highest-layer shuffle content alignment valency-density fud inducer
Given the highest-layer limited-layer limited-underlying limited-breadth fud tree searcher (Text)
\[
Z_{P,A,A_R,\mathrm{L,d}} = \mathrm{searchTreer}(\mathcal{F}_{\infty,U_A,V_A} \cap \mathcal{F}_{\mathrm{u}} \cap \mathcal{F}_{\mathrm{b}} \cap \mathcal{F}_{\mathrm{h}},P_{P,A,A_R,\mathrm{L,d}},\{\emptyset\})
\]
and the highest-layer limited-derived derived variables set list maximiser (Text)
\[
Z_{P,A,A_R,F,\mathrm{D,d}} = \mathrm{maximiseLister}(X_{P,A,A_R,F,\mathrm{D}},P_{P,A,A_R,F,\mathrm{D}},\mathrm{top}(\mathrm{omax}),R_{P,A,A_R,F,\mathrm{D,d}})
\]
the practicable highest-layer shuffle content alignment valency-density fud inducer, $I_{z,\mathrm{csd,F,\infty,q},P,\mathrm{d}}^{‘}$, may then be implemented (Text)
\[
\begin{eqnarray}
&&I_{z,\mathrm{csd,F,\infty,q},P,\mathrm{d}}^{‘ * }(A) = \\
&&\hspace{2em}\{(G,I_{\mathrm{csd}}^{ * }((A,A_R,G))) : \\
&&\hspace{5em}|V_A|>1,~\{F_{\mathrm{L}}\} = \mathrm{leaves}(\mathrm{tree}(Z_{P,A,A_R,\mathrm{L,d}})),\\
&&\hspace{5em}K \in \mathrm{maxd}(\mathrm{elements}(Z_{P,A,A_R,F_{\mathrm{L}},\mathrm{D,d}})),~G = \mathrm{depends}(F_{\mathrm{L}},K)\} \cup \\
&&\hspace{2em}\{(\emptyset,0) : |V_A| \leq 1\}
\end{eqnarray}
\]
The fud inducer is defined in module AlignmentPracticable
,
parametersSystemsSamplesShufflesListVariablesInducerFudHighest ::
Integer -> Integer -> Integer -> Integer -> Integer -> Integer -> Integer -> Integer ->
System -> Histogram -> Histogram -> [Variable] ->
Maybe ((Fud,Fud),(System,[Variable]))
as
parametersSystemsSamplesShufflesListVariablesInducerFudHighest wmax lmax xmax omax bmax mmax umax pmax uu aa aarr ll
...
| ... = Just $ ((depends ff kk, ff),(uu',ll'))
| otherwise = Nothing
where
(nn,(uu',ll')) = zzllfudshigh wmax lmax xmax omax bmax mmax umax pmax uu aa aarr ll
ff = if nn /= [] then last nn else fudEmpty
kk = maxdff ff $ zzffcsdderhighopt wmax omax uu' aa aarr ff
zzllfudshigh wmax lmax xmax omax bmax mmax umax pmax uu aa aarr ll = fromJust $
parametersSystemsSamplesShufflesListVariablesSearcherFudHighest
wmax lmax xmax omax bmax mmax umax pmax uu aa aarr ll
zzffcsdderhighopt wmax omax uu aa rr ff = fst $ unzip $ fromJust $
parametersSystemsSamplesShufflesFudsFunctionOptimiserDerivedHighest wmax omax uu aa rr ff
...
Note that, again, the partition variables are replaced by cardinal variables, so the fud inducer has an additional argument of a list of variables, [Variable]
.
For example,
let iillfuds aa aarr wmax lmax xmax omax bmax mmax umax pmax = fst $ fst $ fromJust $ parametersSystemsSamplesShufflesListVariablesInducerFud wmax lmax xmax omax bmax mmax umax pmax (sys aa) aa aarr [VarInt i | i <-[101..]]
let iillfudshigh aa aarr wmax lmax xmax omax bmax mmax umax pmax = fst $ fst $ fromJust $ parametersSystemsSamplesShufflesListVariablesInducerFudHighest wmax lmax xmax omax bmax mmax umax pmax (sys aa) aa aarr [VarInt i | i <-[101..]]
let aa = resize 100 $ regpivot 3 3
let gg = iillfuds aa (ind aa) (3^3) 1 (3^3) 3 3 3 (3^3) 1
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ gg
"({(1,1),(155,1)},1 % 1)"
"({(1,2),(155,2)},1 % 1)"
"({(1,3),(155,2)},1 % 1)"
"({(2,1),(156,1)},1 % 1)"
"({(2,2),(156,2)},1 % 1)"
"({(2,3),(156,2)},1 % 1)"
"({(3,1),(157,1)},1 % 1)"
"({(3,2),(157,2)},1 % 1)"
"({(3,3),(157,2)},1 % 1)"
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
31.253377751394225
let gg = iillfudshigh aa (ind aa) (3^3) 1 (3^3) 3 3 3 (3^3) 1
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ gg
"({(1,1),(155,1)},1 % 1)"
"({(1,2),(155,2)},1 % 1)"
"({(1,3),(155,2)},1 % 1)"
"({(2,1),(156,1)},1 % 1)"
"({(2,2),(156,2)},1 % 1)"
"({(2,3),(156,2)},1 % 1)"
"({(3,1),(157,1)},1 % 1)"
"({(3,2),(157,2)},1 % 1)"
"({(3,3),(157,2)},1 % 1)"
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
31.253377751394225
let aa = resize 1000 $ regpivot 3 4
algnden aa
197.70429785167653
let gg = iillfuds aa (ind aa) (3^3) 1 (3^3) 3 3 3 (3^2) 1
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ gg
"({(2,1),(155,1)},1 % 1)"
"({(2,2),(155,2)},1 % 1)"
"({(2,3),(155,2)},1 % 1)"
"({(3,1),(156,1)},1 % 1)"
"({(3,2),(156,2)},1 % 1)"
"({(3,3),(156,2)},1 % 1)"
"({(4,1),(157,1)},1 % 1)"
"({(4,2),(157,2)},1 % 1)"
"({(4,3),(157,2)},1 % 1)"
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
218.3586352266184
let gg = iillfudshigh aa (ind aa) (3^3) 1 (3^3) 3 3 3 (3^2) 1
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ gg
"({(2,1),(155,1)},1 % 1)"
"({(2,2),(155,2)},1 % 1)"
"({(2,3),(155,2)},1 % 1)"
"({(3,1),(156,1)},1 % 1)"
"({(3,2),(156,2)},1 % 1)"
"({(3,3),(156,2)},1 % 1)"
"({(4,1),(157,1)},1 % 1)"
"({(4,2),(157,2)},1 % 1)"
"({(4,3),(157,2)},1 % 1)"
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
218.3586352266184
let gg = iillfuds aa (ind aa) (3^3) 2 (3^3) 3 3 3 (3^2) 1
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ gg
"({(1,1),(239,1)},1 % 1)"
"({(1,2),(239,2)},1 % 1)"
"({(1,3),(239,2)},1 % 1)"
"({(2,1),(155,1)},1 % 1)"
"({(2,2),(155,2)},1 % 1)"
"({(2,3),(155,2)},1 % 1)"
"({(3,1),(156,1)},1 % 1)"
"({(3,2),(156,2)},1 % 1)"
"({(3,3),(156,2)},1 % 1)"
"({(4,1),(157,1)},1 % 1)"
"({(4,2),(157,2)},1 % 1)"
"({(4,3),(157,2)},1 % 1)"
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
325.96965461170066
let gg = iillfudshigh aa (ind aa) (3^3) 2 (3^3) 3 3 3 (3^2) 1
rpln $ (concat . map (aall . ttaa) . Set.toList . ffqq) $ gg
"({(1,1),(239,1)},1 % 1)"
"({(1,2),(239,2)},1 % 1)"
"({(1,3),(239,2)},1 % 1)"
"({(2,1),(155,1)},1 % 1)"
"({(2,2),(155,2)},1 % 1)"
"({(2,3),(155,2)},1 % 1)"
"({(3,1),(156,1)},1 % 1)"
"({(3,2),(156,2)},1 % 1)"
"({(3,3),(156,2)},1 % 1)"
"({(4,1),(157,1)},1 % 1)"
"({(4,2),(157,2)},1 % 1)"
"({(4,3),(157,2)},1 % 1)"
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
325.96965461170066
:set +s
let gg = iillfuds aa (ind aa) (3^3) 5 (3^3) 3 3 3 (3^2) 1
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
325.96965461170066
(45.91 secs, 8,409,009,448 bytes)
let gg = iillfudshigh aa (ind aa) (3^3) 3 (3^3) 3 3 3 (3^2) 1
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
325.96965461170066
(9.22 secs, 1,531,523,080 bytes)
Now consider predicting the rain in the weather forecast example (summarised in Functional definition sets),
let aa = hhaa hh
algnden $ aa `red` [pressure,cloud,wind]
2.15004722009382
:set +s
let gg = iillfuds (aa `red` [pressure,cloud,wind]) (ind (aa `red` [pressure,cloud,wind])) (3^7) 5 (3^3) 3 (3*2) 2 (3^3) 2
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
4.215798138230515
(275.79 secs, 46,371,780,760 bytes)
let gg = iillfudshigh (aa `red` [pressure,cloud,wind]) (ind (aa `red` [pressure,cloud,wind])) (3^7) 5 (3^3) 3 (3*2) 2 (3^3) 2
algnden (aa `fapply` gg) - algnden (ind aa `fapply` gg)
4.215798138230515
(29.98 secs, 5,128,323,320 bytes)
The weather forecast example continues in Practicable highest-layer summed shuffle content alignment valency-density fud decomposition inducer.
Practicable level shuffle content alignment valency-density fud inducer
The practicable level shuffle content alignment valency-density fud inducer, $I_{z,\mathrm{csd,F,\infty,q},P,V_{\mathrm{g}},F_{\mathrm{g}}}^{‘}$, may then be implemented (Text)
\[
\begin{eqnarray}
&&I_{z,\mathrm{csd,F,\infty,q},P,V_{\mathrm{g}},F_{\mathrm{g}}}^{‘ * }(A) = \\
&&\hspace{2em}\{(G,I_{\mathrm{csd}}^{ * }((A,A_R,G))) : \\
&&\hspace{5em}|V_A|>1,~\{F_{\mathrm{L}}\} = \mathrm{leaves}(\mathrm{tree}(Z_{P,A,A_R,V_{\mathrm{g}},F_{\mathrm{g}},\mathrm{L}})),\\
&&\hspace{5em}K \in \mathrm{maxd}(\mathrm{elements}(Z_{P,A,A_R,F_{\mathrm{g}},F_{\mathrm{L}},\mathrm{D}})),~G = \mathrm{depends}(F_{\mathrm{L}},K)\} \cup \\
&&\hspace{2em}\{(\emptyset,0) : |V_A| \leq 1\}
\end{eqnarray}
\]
The fud inducer is defined in module AlignmentPracticable
. This implementation is derived from the practicable highest-layer shuffle content alignment valency-density fud inducer,
parametersSystemsSamplesShufflesLevelsListVariablesInducerFudHighest ::
Integer -> Integer -> Integer -> Integer -> Integer -> Integer -> Integer -> Integer ->
System -> Histogram -> Histogram -> Set.Set Variable -> Fud -> [Variable] ->
Maybe ((Fud,Fud),(System,[Variable]))
as
parametersSystemsSamplesShufflesLevelsListVariablesInducerFudHighest
wmax lmax xmax omax bmax mmax umax pmax uu aa aarr vvg ffg ll
...
| ... = Just $ ((depends ff kk, ff),(uu',ll'))
| otherwise = Nothing
where
(nn,(uu',ll')) = zzllfudshigh wmax lmax xmax omax bmax mmax umax pmax uu aa aarr vvg ffg ll
ff = if nn /= [] then last nn else fudEmpty
kk = maxdff ff $ zzffcsdderhighopt wmax omax uu' aa aarr ffg ff
zzllfudshigh wmax lmax xmax omax bmax mmax umax pmax uu aa aarr vvg ffg ll = fromJust $
parametersSystemsSamplesShufflesLevelsListVariablesSearcherFudHighest
wmax lmax xmax omax bmax mmax umax pmax uu aa aarr vvg ffg ll
zzffcsdderhighopt wmax omax uu aa rr ffg ff = fst $ unzip $ fromJust $
parametersSystemsSamplesShufflesLevelsFudsFunctionOptimiserDerivedHighest wmax omax uu aa rr ffg ff
...
Note that, again, the partition variables are replaced by cardinal variables, so the fud inducer has an additional argument of a list of variables, [Variable]
.