Joseph H. Krall

Hello, I'm Joe. I received a PhD in Computer Science in 2014. My dissertation was on search of best solutions to complex problems, i.e. multi-objective optimization (MOO), via genetic algorithms. I've a bit of experience in many domains: software engineering, AI, machine learning, data science, aircraft safety, energy analytics, machinery diagnostics and game psychology. I'm currently writing a book called "What makes a game fun?". Gaming and working in my yard, landscaping, gardening and tending to my trees are my hobbies.

Email:

kralljoe@gmail.com

Social:

Portfolio | Publications | Blog | Slideshare | Dissertation









































So what does make a game fun? Games are very much psychological constructs. Developers create game worlds for the players to essentially "enter". When they do, several things happen. First, a player's brain processing of neural stimulus fundamentally changes. Second, players begin to create goals and objectives. A game's function then is to present to the player a brand new world in which players can create such objectives, via utilizing provided controls such as running and jumping, or perhaps firing projectiles. Thus, what is it that makes a game "fun"? Well, it's easy to say fun is relative. Different games appeal to different players. But it is safe to say that when players have selected a game, the nature of what makes that game fun is whether it can maintain the neural-stimulus-connection sometimes known as immersion. If the game does nothing to distract, can keep players on the hook, and allows players to continually create and satisfy stimulating objectives, then the game is fun. The game can be fun to varying degrees. And often, it is difficult to compare two games unless they originate from the game era (e.g. NES games with NES games, not PS5 games compared to Atari 2600 games).

















My dissertation was on search. Usually PhD theses sound much more... complex. It is, I promise. Here, search refers to finding optimal solutions to some model problem. That is, a model can be something that receives inputs that we sometimes call decisions. The model then does things with those decisions... processes them... and ultimately spits out "scores", also known as objectives. Want a simple model? How about a math one: f(x1, x2) = x1+x2. This model takes two inputs, x1 and x2, and then spits out a single objective score. Models don't need to be math, and it is superbly important to note that math models run extremely fast. For NASA, I worked on a model of cognitive psychology of the interactions between pilots in aircraft during descent to runway. Essentially, pilots coordinate tasks that need to be complete, such as keeping airspeed nominal, deploying flaps, the landing gear, etc. Sometimes pilots forget to do one of these, or maybe they get delayed. Sometimes when tasks are missed like this, the aircraft won't land safely. In 2013, an Asiana Airlines aircraft enroute to San Francisco hit the seaboard because pilots forgot to keep airspeed nominal. This particular cognitive model was of interest because it could help with optimizing how pilots interact with each other in the cockpit, to potentially avoid disasters like in 2013. The problem is, evaluating this kind of model took a long time. I worked on a small subcomponent of the model that took 7 seconds per run. Doesn't sound like much. But wait til you hear about how must search optimizers work... like NSGA-II or SPEA2. They try to find solutions stochastically, and in terms of genetic algorithms, that means evaluating model fitness several thousands of times. What's 7 seconds times 3000? About six hours. My research focused on developing an algorithm called GALE, which drifted away from the randomly-guided search nature of previous state-of-the-art technology and aimed to solve these kinds of problems with a more directed approach. That is, GALE would analyze the relationship between decisions and objectives to get a better understanding of a direction in which optimal solutions lie... and then mutating in those directions to find them. The bottom line? GALE could solve the aircraft cognitive model in about 30-50 evaluations of the model, i.e. about 4-6 minutes instead of 6 hours. If you want to know more, consult my dissertation. I write nearly 200 pages on it. Want less? Consult my TSE paper on GALE, which basically condensed 200 pages into 8 (somehow, miraculously).

















In 2014 I worked for a small company called LoadIQ. I was their Chief Data Scientist. An overly fancy title, I promise. I primarily worked on algorithms and modeling of our energy problem. We wanted to provide customers some better insight into their energy signature and this can sometimes be really cool, especially in the dawning age of everything green. Using just a single sensor on a building's total power consumption, the algorithms I developed disaggregated that total signature into the individual constituent appliance energy signatures. This is something that supervised classifiers can absolutely do... with the appropriate training data set. Unfortunately, a data set which is expansive enough to be useful is very expensive. Enter unsupervised learning. Enter graph theory. Enter linear regression models too. You have to start by imagining that power in your household generally comes in steady states. That is, right now, your energy is probably resting at a steady state (steady as always-changing electrical signals can be). Now walk over and flip that light switch on. The energy in your household jumped up to a new steady state a few watts higher. Now turn the light switch back off, and you are back to the previous steady state. Think about this in terms of vertex & edge graphs - each steady state is a vertex. When you turned the light on, an edge between states was created. And when you turned the switch back off, another edge completed the cycle back to the previous steady state. That is, pairs of transitions equal appliances. In this case, you saw energy go up by +10W and then back down by -10W. That [+10, -10] pair equates to a load. Problem is, not all loads are defined by beautifully simple cycles like this. Imagine you turn several things on at once, or in rapid succession. There's tons of problems scattered across this kind of problem, and I spent most of my time trying to enumerate them and come up with subroutines for handling them.

















Meet Duke, my eldest beagle: https://www.facebook.com/DukeCombsTheBeagle. If you don't feed him dinner strictly at 6:00 PM every evening, he will... very frustratedly let you know. You will notice. You will... not... make it the whole way through that T.V. show.

Here's Reese, my youngest beagle: https://www.facebook.com/ReeseKrallTheBeagle. He was rescued from a research lab where he knew very little about how to be a pup. Today, he is an extremely curious beagle and evokes an astounding sense of possession with things he likes by calling them "mine".

Both of my beagles can wow the hats off audience members to their tricks show, complete from a simple hand-shake, turn, roll, to their dramatic "play dead" routines and ending with a bow.