Video Transcript

Hi, my name is Matt Bates and I'm the product manager here at Optilogic. I want to give you a look into the world's first. fully web-based modeling studio for optimization and simulation. In this demo, I will be walking you through creating an account in Optilogic's modeling studio, Atlas; logging in; creating your first workspace; and creating, debugging and running your first model. Let's get started.

To create an Optilogic account, all you need to do is go to and click the "Create an account" button. Once you fill out these six fields and click "Register", you will be sent an email asking you to verify your account. Once you click the verify link in your email, you will be brought into Atlas. Since I already have an account, I'm going to go back to the login page and log into that now.

Since this is the first time you've logged in, you will be taken to the new workspace page. A workspace is where all of your models and data will live. This will show you every stack that Atlas supports. A stack is a configuration for an environment. It contains all the technologies, packages and environment configurations that you will need to be able to model any given environment. For now, we will be focusing on creating a workspace for optimization using the Optilogic stack, but you can just as easily create one for simulation by selecting the simulation stack.

Once you have selected a stack and given it a name, click "Create & Open", we'll start the process of setting up your new workspace. This usually takes about 45 seconds to a minute or so, so let's fast forward a bit. And just like that, you have an environment setup that is ready to build and run optimization models using Pyomo and Optilogic's opensource solver. As you can see with this message, we pre-populate the workspace with a set of models to provide a good starting point. We can see all the models that are currently in your workspace by opening up the file Explorer view here.

Now before we continue, let's get the lay of the land. This bar on the left is called the Activity Bar and it contains buttons to open up the main views in Atlas. The top one is the file Explorer, then comes Search, Source Control Management, and finally Debugging, which we'll get into more detail later. The menus on the top contain links to much of the functionality of Atlas. The green "Run" button is used to execute the model code that is open and has focus in the editor. And the blue "Estimate" button can be run on an NPS file loaded into the Editor to provide an estimate on how long the model might take to solve.

This library of models will grow over time to give you more inspiration for problems to solve and places to start. Each model has a cover sheet containing a detailed description of the problems as well as code and data files for you to use. As you can see, there are many models for you to through. Each one represents a classic application of optimization technology and can act as a great starting point for many of the most common problems.

If you want to compare loan options for funding different projects, take a look at the choice of loans model. If your needs deal with a classic 2D cutting problem, take a look at the cutting sheet metal problem. The depot location model is a great place to start if you want to figure out where to place your depots or distribution centers. Or if you're looking at minimizing cost over your transportation network, check out the transportation networks model.

Let's say for the purposes of this demo that I've been contracted by the State of Utah to build a process for determining the game schedules for various city soccer teams in Northern Utah. To simplify the problem, here are the details: There are 10 teams. Each team plays once a week. Each team plays every other team twice, once at home and once away. The biggest match is between South Summit and Wasatch, and their two games during the season need to take place on the fourth and ninth weeks.

Let's start by searching the model library for a model that can help us get started. Since this is a classic sports scheduling problem, let's try searching for that. We'll open up the search view. And since we want to search exact words, we will toggle Match Whole Word, and then we'll type in "sports scheduling", and we'll see what comes up. You can see that we have two results, one of which is a model called sports scheduling. By double clicking on this match, it'll open up the file in the Editor, and we can immediately see that we have great syntax highlighting, support for search context, code analysis, as we see that there are warnings in our import statement, and many other things. We won't be going into all the features and functionality of the Editor right now. But to get a full rundown, take a look at our documentation at

In this model, we can see all of the data declarations, the objective function and the constraints. These constraints appear to be very similar to what we need. We'll just need to make a few tweaks. Let's take a look at the data. To find the file in the file Explorer, we can either go back to the file Explorer and look for it, or we can right click on the file header and select "Reveal in Explorer" to go right there. It's very useful when you have a lot of model files.

Now, if we open up the data file, we see that all we need is a list of teams and a parameter for the total number of teams. Let's copy this model and make it ours. To start, I'm going to copy the model by selecting the files that I need. If I hold down Control and select the files, I can press Control C to copy them.

Now I'm going to create a folder to house all of my model files. If I right click on this blank space, I can click on New Folder and I'll create a new folder called My Models. Inside My Models, I want to create another folder for this particular model and we'll call it Utah Sport Scheduling.

Now that I have my folders created, I select the Utah Sports Scheduling folder and press Control V to paste my files in. Now it's ready for us to start making them our own. First, let's make sure that we have our own data in here. We'll open up the data file and we can type our data in manually. But since I already have it, I will paste it in now. We can see that we have our 10 teams and we have our parameter for the total number of teams.

Now, let's review the constraints to make sure that they are what we need. We open up the model file and we scroll down to where the constraints are. The first constraint specifies that each pair should play twice throughout the season. This makes sense so we'll keep that. The second constraint says that every team must play once a week. This means that there are no bye weeks in the schedule, and that's okay to start with so we'll keep that one too. This last constraint says that the Arsenal/Chelsea match has to be played within the first four weeks, not really relevant to us, but the last part of the constraint says that the Everton/Manchester United match will be played on the eighth week. That sounds pretty similar to what we need, so I think we can tweak this for what we want.

I'm going to paste in my modified constraint that says that South Summit and Wasatch need to play their games on weeks four and nine. And we see that Wasatch will play South Summit at South Summit on week four. And in turn, South Summit will play at Wasatch on week nine. Now that we have our new constraint, let's run the model and check the output.

We can already see that we have our output generated. And if we review the outputs for week four where Wasatch plays South Summit and week nine where South Summit plays Wasatch, we see that we have the exact results that we needed. This is great. We can add a new constraints like bye weeks, other matchups or even weights for different traveling, but we have a great model to start from.

Now if your model needs some deeper troubleshooting capability, you can debug your model from the debug view. In the Editor, you can place a break point on any line by selecting that line in the leftmost margin of the Editor itself. Once I set a break point, I can start my debug session, and we'll see the execution stop on that debug line. Now, what you see is what you would see in any fully featured debugger. We can hover over the variables to see contextual information. We can continue, step over, step into or out of, restart or stop execution. We can see all of our threads or call stack information, all of the variables in play. I can even watch certain variables or expressions from the watch window, as well as see a list of all of our break points, whether they're normal break points, function, break points, conditional break points, or even log points.

Now, once we're done with our debugging session, we can either continue to finish the execution or we can press stop to stop our execution and continue on with whatever we need to do. As you can see, Atlas is a fully featured, robust modeling studio, and we're continually adding new features and functionality to make modeler's lives easier.

In this demo, we have gone over creating your account, logging in, creating a new workspace and creating, debugging and running your first model. If you have any questions, you can review our docs at or reach out to our support team by email at Thanks for watching.