yes the living grimoire already had learnability, mainly
the morphing of algorithmic parts.
but now the whole initial summoned algorithm can change after triggering a skill !
so for this experiment we take a look into the ABDL sitter skill in which, when the user
cusses, the AGI admonishes him.
but it doesn't feel much human, because it always
responds and always responds the same.
BUT ! with the new module the waifubot learns she is doing something wrong and if so the algorithm morphs. the algorithm can also morph into nothing.
it's very simple, the morph trigger is when the algorithm is triggered too many times in a set amount of time or think cycles, meaning she must have acted less than good enough
so she has to learn to act different.
there is no +- complex advocation to morph the alg in a certain direction.
moreover, the learnability module, has a bias parameter, the higher it is, the more
stubborn the waifubot is to change her behavior.
#################################################
as for the code :
CountDownGate (java class boolean gate)
the learnability module :
Last edited by Moti Barski on Sat May 01, 2021 1:40 am; edited 1 time in total
the morphing of algorithmic parts.
but now the whole initial summoned algorithm can change after triggering a skill !
so for this experiment we take a look into the ABDL sitter skill in which, when the user
cusses, the AGI admonishes him.
but it doesn't feel much human, because it always
responds and always responds the same.
BUT ! with the new module the waifubot learns she is doing something wrong and if so the algorithm morphs. the algorithm can also morph into nothing.
it's very simple, the morph trigger is when the algorithm is triggered too many times in a set amount of time or think cycles, meaning she must have acted less than good enough
so she has to learn to act different.
there is no +- complex advocation to morph the alg in a certain direction.
moreover, the learnability module, has a bias parameter, the higher it is, the more
stubborn the waifubot is to change her behavior.
#################################################
as for the code :
CountDownGate (java class boolean gate)
Code:
public class CountDownGate {
private int cycler = 0;
private int limit;
public CountDownGate(int limit) {
super();
this.limit = limit;
cycler = limit;
}
public int getLimit() {
return limit;
}
public void setLimit(int limit) {
this.limit = limit;
}
public Boolean countingDown() {
cycler--;
if (cycler < 1) {
cycler = -1;
return false;
}
return true;
}
public void reset() {
cycler = limit;
}
public void setToOff() {
cycler = 0;
}
}
the learnability module :
Code:
import java.util.ArrayList;
import java.util.Random;
public class AlgDispenser {
private CountDownGate cdg;
private CountDownGate cdg2;// bias or stubborness
private Random rand = new Random();
private ArrayList<Algorithm> algorithms = new ArrayList<Algorithm>();// algs that are called by input triggers
private Algorithm activeAlg = null;
public AlgDispenser(int countDown, Algorithm...alg) {
cdg = new CountDownGate(countDown);
cdg2 = new CountDownGate(0);
for (int i = 0; i < alg.length; i++) {
algorithms.add(alg[i]);
}
}
public AlgDispenser(Integer bias, int countDown, Algorithm... alg) {
// c'tor with bias to slow down alg morph
cdg = new CountDownGate(countDown);
cdg2 = new CountDownGate(bias);
for (int i = 0; i < alg.length; i++) {
algorithms.add(alg[i]);
}
}
public Algorithm dispenseAlg() {
if (cdg.countingDown()) {
if (!cdg2.countingDown()) {
morphAlg();
cdg2.reset();
}
}
cdg.reset();
return activeAlg;
}
public Algorithm dispenseAlg(Boolean b1) {
// b1 : alg summon trigger detected ?
if (!b1) {
idler();
return null;
}
if (cdg.countingDown()) {
if (!cdg2.countingDown()) {
morphAlg();
cdg2.reset();
}
}
cdg.reset();
return activeAlg;
}
public void morphAlg() {
int x = rand.nextInt(algorithms.size());
activeAlg = algorithms.get(x);
}
public void idler() {
cdg.countingDown();
}
}
Last edited by Moti Barski on Sat May 01, 2021 1:40 am; edited 1 time in total