INFORMS Student Chapter - UT Austin
INFORMS Student Chapter - UT Austin
  • 5
  • 54 764
Building a Personal Website - Rachel Moglen - UT Austin INFORMS
Join UT Austin INFORMS chapter member Rachel Moglen in an introduction to building a personal website. This workshop covers some examples of different personal websites, what content to include on your website, and an overview of some of the different hosting options (Squarespace, Google Sites, and Github Pages).
You can view the slides associated with this presentation at:
docs.google.com/presentation/d/1ZQiH_0w7deBsmd6rsDN0JyrPnQDZ4UJfuktbsW-l4t4/edit?usp=sharing
zhlédnutí: 210

Video

Code Optimization in Python - Sudesh Agrawal - UT Austin INFORMS
zhlédnutí 773Před 3 lety
This workshop introduces some of the basics of optimizing your code. After introducing the process of mathematical operations in computer memory, we discuss alternatives to Python for-loops. This workshop includes two activities, so come prepared to engage! Some of the principles we discuss are also applicable to other programming languages. UT Austin INFORMS Student Chapter: Twitter: twitter.c...
Optimization in Python: Intermediate Pyomo Workshop - Brent Austgen - UT Austin INFORMS
zhlédnutí 13KPřed 3 lety
Join INFORMS student chapter member Brent Austgen for his follow-up Pyomo tutorial. Topics include models on graphs, handling of indexed sets, data integration, and block-based implementations. Examples presented in this workshop are available at: github.com/brentertainer/pyomo-tutorials UT Austin INFORMS Student Chapter: Twitter: INFORMS_UT Website: connect.informs.org/universityof...
Introduction to Yoga - Jason Boada - UT Austin INFORMS
zhlédnutí 202Před 3 lety
We explore what yoga is (spoiler: it's not just poses!) and experience a yoga practice with movement and meditation. All you'll need is enough space to sit or lie down and enough support to do so comfortably, e.g., a chair, a couch, or a bed, or blankets, pillows, or cushions to sit or lie down on the floor. If you have other equipment (a yoga mat or other props) you're more than welcome to bri...
Optimization in Python: Pyomo and Gurobipy Workshop - Brent Austgen - UT Austin INFORMS
zhlédnutí 40KPřed 3 lety
Join UT INFORMS student chapter officer Brent Austgen for a tutorial in implementing math models with pyomo and gurobipy. The tutorial includes an overview of these frameworks, a walk-through of some examples, and Q&A. The examples presented in this workshop are available at: github.com/brentertainer/pyomo-tutorials UT Austin INFORMS Student Chapter: Twitter: INFORMS_UT Website: con...

Komentáře

  • @NoOne-qs1he
    @NoOne-qs1he Před rokem

    Great video and great repository. Thanks a lot!

  • @bosonglin7462
    @bosonglin7462 Před rokem

    Great lesson!

  • @Lux1431996
    @Lux1431996 Před rokem

    There are probably not many from the engineering majors that have to deal with OR at all, but for those who do, those don`t learn much in their usual lessons, differently to maths students. For students like me, you`re very welcome to upload more of this, as it's some of the best and well in detail explained tutorials I could find yet. At least for more or less absolute beginners in this field without any knowledge from the uni.

    • @Lux1431996
      @Lux1431996 Před rokem

      Just want to say it again: This saved my ass!

    • @BrentAustgen
      @BrentAustgen Před rokem

      Thanks for your compliment! I agree with what you said. I am grateful for the opportunities I had to learn the in's-and-out's of math modeling languages prior to entering graduate school. It is rewarding to hear y'all saying you find these videos valuable!

  • @Lux1431996
    @Lux1431996 Před rokem

    Great explanation! Thank you very much. Greetings from Technical University Kaiserslautern, Germany :)

  • @raihanmasud3578
    @raihanmasud3578 Před rokem

    sir, are there any published papers (conference/journal) based on this Pyomo code? Thank you.

  • @tigabuabebe3261
    @tigabuabebe3261 Před rokem

    model.n = pe.Var(domain=pe.Binary) model.m = pe.Var(domain=pe.Binary) model.k = pe.Var(domain=pe.Binary) ********* gives this error; what shall i do WARNING: Implicitly replacing the Component attribute n (type=<class 'pyomo.core.base.var.ScalarVar'>) on block unknown with a new Component (type=<class 'pyomo.core.base.var.AbstractScalarVar'>). This is usually indicative of a modelling error. To avoid this warning, use block.del_component() and block.add_component(). WARNING: Implicitly replacing the Component attribute m (type=<class 'pyomo.core.base.var.ScalarVar'>) on block unknown with a new Component (type=<class 'pyomo.core.base.var.AbstractScalarVar'>). This is usually indicative of a modelling error. To avoid this warning, use block.del_component() and block.add_component(). WARNING: Implicitly replacing the Component attribute k (type=<class 'pyomo.core.base.var.ScalarVar'>) on block unknown with a new Component (type=<class 'pyomo.core.base.var.AbstractScalarVar'>). This is usually indicative of a modelling error. To avoid this warning, use block.del_component() and block.add_component().

    • @BrentAustgen
      @BrentAustgen Před rokem

      It seems like model.n was already defined before you tried making it a Var.

  • @tigabuabebe3261
    @tigabuabebe3261 Před rokem

    thank you. this is very helpul tutorial. please can you upload your tutorial about cost optimization from csv file?

  • @dnyakaul
    @dnyakaul Před rokem

    Hi good explanation. I am stucked to write my first constraint using pyomo . Can you help me to write.thanks

    • @BrentAustgen
      @BrentAustgen Před rokem

      Hi, Dnyaneshwar. If you have not seen this channel's introduction to Pyomo/gurobipy, I recommend you start there. Otherwise, you can find my (Brent Austgen) contact information on my website.

  • @lwandilemarudulu7950
    @lwandilemarudulu7950 Před 2 lety

    Is it possible to get ur email @Brent, I have an DEA optimization model I'd like to implement in pyomo. But I'm struggling a bit.

    • @BrentAustgen
      @BrentAustgen Před rokem

      My full name is the description of this video. If you search for that online, my website should be one of the top hits, and you can find my contact information there.

    • @lwandilemarudulu7950
      @lwandilemarudulu7950 Před rokem

      I managed to solve my problem sir. Thank you.

  • @DarioRomeroDeveloper
    @DarioRomeroDeveloper Před 2 lety

    Excellent workshop. Appreciate all the effort you guys has put together to make this so clear and well presented.

  • @siyavashfilom9120
    @siyavashfilom9120 Před 2 lety

    Extremely helpful tutorial, many thanks for sharing

  • @dig4skullz
    @dig4skullz Před 2 lety

    For the binary knapsack problem, what if you have two objectives?

    • @BrentAustgen
      @BrentAustgen Před 2 lety

      Sorry for getting back to you so slowly. Would you please expand on how you mean this? Are you talking about vector-valued objectives? Or just multiple scalar-valued objectives that you can switch in and out as needed?

  • @abramswee
    @abramswee Před 2 lety

    thanks for sharing!

  • @MyChessGame98
    @MyChessGame98 Před 2 lety

    hello, i have one problem. I already build my model with the first method from pyomo. I tried to use gurobi as a solver but i take this error "GurobiDirect does not support expressions of degree None". I want to ask if i can use the gurobi only as a solver and if yes then what is the problem?

    • @BrentAustgen
      @BrentAustgen Před 2 lety

      Without viewing the model implementation, it is difficult to say. My best guess is that the model includes a non-polynomial expression.

  • @Yosalsafiesta
    @Yosalsafiesta Před 2 lety

    This is a wonderful tutorial!!! Thank you so much!

  • @BB-kb8jd
    @BB-kb8jd Před 2 lety

    Hello, Great example and video. Thank you. Could you also show how to import variable and parameter sets from an excel file to pyomo?

    • @BrentAustgen
      @BrentAustgen Před 2 lety

      Sure, great idea!

    • @BrentAustgen
      @BrentAustgen Před 2 lety

      I added an example to the repository linked in the description. It is in the directory labeled "loading_data".

    • @BB-kb8jd
      @BB-kb8jd Před 2 lety

      Thank you Brent. I will be looking forward to new videos👍🏻

  • @robertaraujo347
    @robertaraujo347 Před 2 lety

    I found this tutorial very useful, now i know how to set n-dimensional parameters and decision variables according to the dimension of the dataframe. I wonder, what studies are coursing those students? is it sort of a master in operations research or it's just a course that contains oprimization topics?

    • @BrentAustgen
      @BrentAustgen Před 2 lety

      Thank you, Robert. I (the presenter) am a PhD student in the Operations Research and Industrial Engineering program at UT-Austin. Most if not all of the attendees were also MS and PhD students in the same program. I was first introduced to Pyomo in 2013 while working on my undergraduate thesis, and I have built a working knowledge of it through various academic and industry projects. I know certain professors that favor this-or-that modeling or optimization tool, but they've never been the focus in any of my coursework. My intent for these tutorials is to bridge the gap between theory (classroom) and practice (research and industry).

  • @ershibahuasheng2121
    @ershibahuasheng2121 Před 2 lety

    Thanks for sharing. Seems Helen also from my country.

  • @AN-qe8hc
    @AN-qe8hc Před 2 lety

    Hi, I am just starting to work/understand pyomo and am going through Brent's tutorials for this. Unfortunately I have not yet managed to install the solver 'cbc'. Can you help me with this? I tried "conda install -c conda-forge coincbc" and "conda install -c conda-forge ipopt coincbc". The output in both cases was that the package from the current channel is not available. I would greatly appreciate any help. BR

    • @BrentAustgen
      @BrentAustgen Před 2 lety

      Are you on the Windows operating system?

    • @ershibahuasheng2121
      @ershibahuasheng2121 Před 2 lety

      @@BrentAustgen hi Brent I just see the video, thanks for sharing the knowledge. I also meet the same question with AN, I could not install the CBC using conda command. Yes I am using windows.

  • @MiguelSandoval-md8qh
    @MiguelSandoval-md8qh Před 3 lety

    great workshop. How I can implement a indicator constraint (like in gurobi) in pyomo?. I've been trying to solve a CVRP though pyomo but I cannot write subtour constraints.

    • @BrentAustgen
      @BrentAustgen Před 3 lety

      I can think of at least two options. The high-effort option is to incorporate the linear reformulation of the indicator constraint as a normal `Constraint` in Pyomo. The other option, and I'm not certain it would work in every application, is to use the tools from Pyomo's Generalized Disjunctive Programming (GDP) module.

  • @sabiqas
    @sabiqas Před 3 lety

    Very helpful video. I wonder if it is possible to define multiple bounds for a variable in PYOMO. Eg: 1<x<3 or 4<x<8. If someone has an idea, please let me know.

    • @BrentAustgen
      @BrentAustgen Před 3 lety

      It is possible. I think the most straightforward way is to pass a rule to the `bounds` keyword like below. >>> import pyomo.environ as pe >>> model = pe.ConcreteModel() >>> model.N = pe.RangeSet(2) >>> model.x_lbs = pe.Param(model.N, initialize={1: 1, 2: 4}) >>> model.x_ubs = pe.Param(model.N, initialize={1: 3, 2: 8}) >>> def generate_x_bounds(model, i): ... return (model.x_lbs[i], model.x_ubs[i]) ... >>> model.x = pe.Var(model.N, bounds=generate_x_bounds) >>> model.x.display() x : Size=2, Index=N Key : Lower : Value : Upper : Fixed : Stale : Domain 1 : 1 : None : 3 : False : True : Reals 2 : 4 : None : 8 : False : True : Reals

  • @wilsonmendes2649
    @wilsonmendes2649 Před 3 lety

    Thank you for this wonderful video. But I am not sure about the idea indexing a set with binary variable at 28:28 Could you please explain how it actually works? The word "Binary" is a bit misleading. I would appreciate if you could share some links/documents. Thank you once again!

    • @BrentAustgen
      @BrentAustgen Před 3 lety

      In our first attempt at setting up the model, we created the variable objects one-by-one via model.x1, ... model.x5. This works, of course, but it is not scalable. Suppose we wanted to setup the same type of problem but with 1000 variables instead of 5. We would not want to write 1000 lines of code to set up model.x1, ..., model.x1000. So instead, we define an index set N = {1, ...., 1000} so that we can define all 1000 variables in a single line of code. In the line of code model.x = pe.Var(model.N, domain=pe.Binary), the positional argument model.N tells Pyomo to create a variable for each item in the set N. In other words, object model.x becomes indexed in model.N. So whereas before we had 5 different objects model.x1, ... model.x5, we now have one object model.x that is indexed and accessed as model.x[1], ..., model.x[5]. The keyword argument domain=pe.Binary tells Pyomo that each variable is only allowed to assume a value of 0 or 1. If the domain is not specified, Pyomo assumes by default that each variable is defined on the real number line (i.e., pe.Reals). The Pyomo documentation is reasonably well-written. I recommend you check out these links: 1. the Var class: pyomo.readthedocs.io/en/stable/library_reference/aml/index.html?highlight=pe.Var#pyomo.environ.Var 2. predefined virtual sets: pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Sets.html#predefined-virtual-sets

  • @process6996
    @process6996 Před 3 lety

    Thank you for putting this up! Let's goo Brent

  • @raihanmasud3578
    @raihanmasud3578 Před 3 lety

    Nice and helpful video. However two commen errors in github codes. (1) graph.nodes or, graph.edges are not iterable. (2) module 'matplotlib.cbook' has no attribute 'is_string_like'. I am wondering if you could update the github codes. Thank you in advance.

    • @BrentAustgen
      @BrentAustgen Před 3 lety

      Thanks for the notice. I just checked and all the notebooks run without these issues in my environment. Would you mind identifying which cells in which notebooks are failing? And also which version of networkx and matplotlib you are using? You are welcome to open an issue on GitHub.

    • @raihanmasud3578
      @raihanmasud3578 Před 3 lety

      @@BrentAustgen Thank you so much for your reply. I am not sure but it could be a version mismatch. I am using version '1.11' and '3.1.1' of 'networkx' and 'matplotlib' respectively. Would you like to share the versions that you used to run? Thank you in advance.

    • @BrentAustgen
      @BrentAustgen Před 3 lety

      @@raihanmasud3578 Same for matplotlib, but I am using version 2.4 of networkx. I will check if that is the issue. If it is, I will reimplement to accommodate both versions.

    • @BrentAustgen
      @BrentAustgen Před 3 lety

      @@raihanmasud3578 And come to think of it, this is a great consideration. I should include the list of what all libraries/versions are in my environment in the repository.

    • @raihanmasud3578
      @raihanmasud3578 Před 3 lety

      @@BrentAustgen Yes, It would be a nice idea if you could include all versions including python version also. Thank you.

  • @raihanmasud3578
    @raihanmasud3578 Před 3 lety

    Nice workshop. Any installation guidelines to use "gurobi" through "'pyomo"? I am using anaconda with Jupiter-notebook. Thank you in advance.

    • @BrentAustgen
      @BrentAustgen Před 3 lety

      From what I've seen, the issue that trips up most newcomers is getting the Gurobi binary "in path". This is true for all of Windows, macOS, and Linux. Otherwise, the only difference is setting up the solver via SolverFactory('gurobi') instead of SolverFactory('glpk') as in the examples. If putting the Gurobi binary in path gets to be too frustrating, one possible fallback is to use the "executable" keyword to specify exactly where the binary resides. On my setup, for example, that would look like SolverFactory('gurobi', executable='/home/brent/apps/gurobi902/linux64/bin/gurobi.sh'). But this fallback method might lead to other problems such as Gurobi not being able to find the license on your machine. For best results, invest some time into figuring out how to properly add Gurobi to path in your OS.

  • @davidgarmroudi8747
    @davidgarmroudi8747 Před 3 lety

    could you please solve a problem that includes big M and binary constraints ex: Ia+Ib <=1 , Ea <= BigM *Ia , Eb <= bigM*Ib , Ic = Ia+Ib , Ec<=bigM*Ic ,,, I=:binary variables

    • @BrentAustgen
      @BrentAustgen Před 3 lety

      Great suggestion, thanks! I will put this on my to-do list.

  • @lwandilemarudulu7950
    @lwandilemarudulu7950 Před 3 lety

    Is it possible to solve multiple LPP's within pyomo?

    • @BrentAustgen
      @BrentAustgen Před 3 lety

      I take LPP to mean linear programming problem, but correct me if you mean otherwise. Do you mean solving multiple problems in parallel?

    • @lwandilemarudulu7950
      @lwandilemarudulu7950 Před 2 lety

      Yes a linear programming problem where the parameters for a certain constraint change

  • @julatehmulbah
    @julatehmulbah Před 3 lety

    is there a way to install the glpk solver in python

    • @BrentAustgen
      @BrentAustgen Před 3 lety

      The glpk solver (sometimes called glpsol) is a piece of software that is installed separately from Python. There is also a glpk package for Python that serves as an alternative to pyomo. If you want to use glpk with pyomo, you first need to install the glpk package (for Windows/Linux/macOS), then just change SolverFactory('gurobi') to SolverFactory('glpk') in the Python code.

    • @BrentAustgen
      @BrentAustgen Před 3 lety

      I recently learned a very simple way to setup GLPK for Python/Pyomo. If you use Anaconda to manage your Python environments, you can simply `conda install glpk` to install the glpsol binary to the active environment. As long as you are in that environment, you can invoke glpsol (e.g., from pyomo).

  • @jiberuba8856
    @jiberuba8856 Před 3 lety

    Great contents thank you

  • @SiddharthDeo
    @SiddharthDeo Před 3 lety

    Thanks for such nice explanation

  • @helenlu7518
    @helenlu7518 Před 3 lety

    Thanks Brent for tutoring! Looking forward to the next tutorial!

  • @helenlu7518
    @helenlu7518 Před 3 lety

    Excited!