Skip to main content

StOp 1.4: Simulated Annealing in Python, Part 3: Allocating Groups by AI

I quite enjoy discussions. However, talking just to people within my friend circle can sometimes become boring. After all, I tend to attract similar perspectives, and to occasionally challenge my own outlook, and see things from another vantage point is something I'd like to do. Events with discussion groups are a great place to do this.

But one thing that tends to be a challenge with such events, is who to allocate which group to. Let's say there are 5 discussion groups, and the Google Form you have created allows a prospective participant to select their First-Choice and Second-Choice. How do you decide which groups to allocate to each participant? And this is a more general problem than the obscure idea of a discussion event: it could apply in a virtual conference of educational seminars, or even in class allocations. 

The most interesting part about AI, is its ability to express and solve seemingly subjective problems. Yes, I do mean that Simulated Annealing can solve this problem. Here's my Python Code to solve the problem. Don't worry if you hate Python - this is the last part of this Series, and after some more Stochastic Optimization, we're going to actually get into doing Machine Learning with Python!

To simulate this situation, I first created a Google Sheet with ID, and various First and Second Choices between 1 & 5, which I inputted randomly. Because of this, there's a little bit of Data Manipulation, but that isn't too important to the Annealing, so you can ignore that if you are not familiar with Pandas (a data handling library for Python). After running the second cell, you will need to upload the Sheet of IDs and Choices. You will find that file here. You can download this and then upload it into the button that will become visible when you run the second cell. 

The notebook is available here. Open it, and follow the standard protocol: open with Google Colab to mess with it or run it - or just go through the notebook as visible to get an idea of what we're doing. 

If you'd like to modify the code for some application, I'd love to know how you're using the idea! 

Comments

Popular posts from this blog

Phase Spaces 1 : Graphs and Geometry

Phase Spaces One of the least heard of, and most interesting techniques of the sciences, that you rarely realize you’ve used before. Phase spaces are symbolic representations of a particular problem, which you can then use to solve it. Let’s start with a simple problem - in physics maybe. Let’s say we have a car, as all good physics problems do. You’re driving at a set initial speed, and a set acceleration. At what time would you have travelled exactly 15 ft? Let’s look at it in terms of "a phase space". I have a velocity-time graph down here:                                                                                                                                ...

StOp 1.1: Anvils, Annealing and Algorithms

Introduction: Now that the strange title has attracted you to the article, StOp stands for Stochastic Optimization. This is the first episode in our mini-series. I've been mulling over this article for months now, which is kind of absurd considering that this is meant to be a quick series, but I apologize for my online dormancy. In the meanwhile, I was working on writing content for a course on Machine Learning. If you're still in school (not college), and you want to learn more, check out:  https://code-4-tomorrow.thinkific.com/courses/machine-learning At any rate, let's get started. Expansion and Exploitation: In some ways, the more of this you read about, the more you begin to think of the world as an array of optimization processes - from the bargain you settle on with the grocer to the conversation you had before you sold your company. But an unfortunate side-effect of this kind of outlook, is that you often become a visibly more selfish person. You spend more time exp...

Phase Spaces 2 : Math and Gradient Descent

I'm going to start from where we left off in the last part of this series. If you haven't read that yet, check that out first if you want a more detailed understanding: We explored what a Phase Space is, why it's useful, what it has to do with Machine Learning, and more!  I'm assuming you've read the previous article, or you know what I talked about there: so let's get to it. At the end of the last article, we discovered that it was the power of mathematics that would help us find the best values of the parameters for the lowest cost function. Before we get into what the Math does, however, we'll need to define some things in the math. If you've done Calculus, and in particular, partial derivatives, you can skip this section, but otherwise I would suggest at least a cursory glance. I don't go into too much detail on the subject, but that's only because you won't need it.  Calculus Interlude: Derivatives- The slope of a graph is a concept you...