Solving Optimization Problems with Python Linear Programming

Sdílet
Vložit
  • čas přidán 2. 08. 2024
  • Want to solve complex linear programming problems faster?
    Throw some Python at it!
    Linear programming is a part of the field of mathematical programming and is a powerful way of solving complex combinatorial problems. It's used in manufacturing, resources, defence and transport quite extensively to improve outcomes and push performance.
    Want to learn more? Well in this video, you'll learn:
    - The three key parts to any linear programming problem
    - How to formulate a manufacturing optimization problem
    - To solve linear programming problems with docplex and Python!
    Get the code: github.com/nicknochnack/Linea...
    Other Resources
    Docplex Documentation: ibmdecisionoptimization.github...
    Oh, and don't forget to connect with me!
    LinkedIn: / nicholasrenotte
    Facebook: / nickrenotte
    GitHub: github.com/nicknochnack
    Happy coding!
    Nick
  • Věda a technologie

Komentáře • 106

  • @ashraf3576
    @ashraf3576 Před 2 lety +5

    great video, it makes me easy to understand the concept of mixed integer linear programming. keep up the good work

  • @sumukha111
    @sumukha111 Před 2 lety +2

    Not many videos on the internet about docplex, please upload some more videos. Thank you mate

  • @anilkumarl.biradar3555
    @anilkumarl.biradar3555 Před 2 lety +3

    Awesome video, able to understand the concepts well 👏
    It would be great, if you could do some more videos about docplex

  • @pedramjazayeri4786
    @pedramjazayeri4786 Před 2 lety

    Is there any limitation for the number of decision variables(D.V.)?
    For example a code with 4 D.V. I got the optimum values, but for that problem with 6 D.V. I did not get the solution (NonType Object for [sol=m.solve()] ).
    what is the fault?
    thanks

  • @pablomartinez1504
    @pablomartinez1504 Před 2 lety +3

    Fantastic Video! The instructions are really easy to follow and you do a great job explaining why you're doing stuff. Unfortunately, when I try to run it, it gives me the following error:
    docplex.mp.utils.DOcplexException: Cannot solve model: no CPLEX runtime found.
    Then pip cannot find a version of cplex that can be installed. Any suggestions?

  • @gabrielmedeiros9880
    @gabrielmedeiros9880 Před 2 lety

    Is there a way to print the dual values?

  • @amoghamaresh6702
    @amoghamaresh6702 Před 2 lety +1

    Awesome video , it would be great help if you could do more videos about docplex

  • @zahranamazian5540
    @zahranamazian5540 Před 2 lety +3

    Hi,
    I have an optimisation model in a "for loop"using Python and Gurobi. For each iteration I need to record the decision variables and use them as an input of next "for loop".
    I was wondering if you advise me how I can record the decision variables in each loop.
    Thanks

  • @DahaiWang-li9gy
    @DahaiWang-li9gy Před měsícem

    great job explaining the issue in a very simple and easy to understand way. One question to ask - m = Model(name= ‘Phone Production’), what is the purpose of setting ‘Phone Production’ as name for m? The same for name = ‘foldy phone production’ and name= ‘tiny phone production’. I did see they were used later in the code.

  • @TheKekko16
    @TheKekko16 Před rokem

    Hi, thanks for the video. You explained all the concepts clearly and made it easy. I'm writing my bachelor's thesis. I've created some MILP model for feature selection in the support vector machine. Now I need to do the cross validation with the scikit learn library, but I can't use the fit method on my docplex models. Do you know how i should do?

  • @chanwitchanton2424
    @chanwitchanton2424 Před 3 lety +1

    Very nice teaching, Thank you, krub.

  • @sakatagintoki8835
    @sakatagintoki8835 Před rokem

    I am glad that I found your channel

  • @giridharan6800
    @giridharan6800 Před 3 lety +4

    Would be great if you can explain with a time series data.

  • @abhiruwijesinghe2677
    @abhiruwijesinghe2677 Před 2 lety

    When I execute the #prodcution constraint in the 7:14, I got this error
    Conversion from constraint to expression is available only for discrete constraints, foldy phone production >= 500 is not discrete
    Can you please help me? #NicholasRenotte

  • @jorgeperea5095
    @jorgeperea5095 Před rokem +2

    Hi, I'm getting this error message could someone help me?
    DOcplexException: Cannot solve model: no CPLEX runtime found.

    • @GSBhargav94
      @GSBhargav94 Před rokem

      I get the same error, were you able to solve this ?

  •  Před rokem

    hey, i have replicated the entire model but it keeps on saying m is not defined, neither is sol

  • @ashraf3576
    @ashraf3576 Před 2 lety +2

    hi Nicholas, when i run m.solve(), i got Error said that " DOcplexException: Cannot solve model: no CPLEX runtime found". Hope you can give me some idea on how to resolve this issue.

    • @NicholasRenotte
      @NicholasRenotte  Před 2 lety

      Run it in the IBM environment, it has the CPLEX runtime preinstalled.

    • @franciscozorrilla8440
      @franciscozorrilla8440 Před 2 lety

      @@NicholasRenotte how does one get access to the IBM environment?

  • @stallonetht
    @stallonetht Před 3 lety +1

    Hi Nicholas, do you have any tutorial to solve non linear problem as well?

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      Not yet, any specific problem you're looking to solve @stallonetht?

  • @maxsh5350
    @maxsh5350 Před 3 lety +1

    Hi! Thank you for the tutorial! But what to do in case of parametric programming problem? Are there any built-in libraries?
    like that:
    (c+t)x->max
    axmax
    ax

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety +1

      Check this out: www.ibm.com/support/pages/solve-linear-parametric-model-using-cplex

    • @maxsh5350
      @maxsh5350 Před 3 lety

      @@NicholasRenotte thanks 😉👌🏻

  • @psymfmah
    @psymfmah Před 3 lety +1

    Do you have any video about how to operate non-linear least square regression with many constraints in python?

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      Heya @Alireza, hmm, can you share a little more on the use case? So separately leverage LS Regression then apply a constrained problem?

  • @mehdismaeili3743
    @mehdismaeili3743 Před 3 měsíci

    Excellent .

  • @raihankhanphotography6041

    You do the best educational videos of all! Thank you! A quick question -- can anyone access the IBM Watson service? Is it free or carries a fee?

    • @NicholasRenotte
      @NicholasRenotte  Před 2 lety

      All of them have a free tier available. Give it a crack!

  • @TejasGaga
    @TejasGaga Před 2 lety +1

    sir, the code gets stopped at sol=m.solve ()..ask for CPLEX.module..after pip install in google colab still norlt running..kindly help

    • @NicholasRenotte
      @NicholasRenotte  Před 2 lety

      Won't run in Colab as there isn't a CPLEX environment.

  • @ankitarya7492
    @ankitarya7492 Před 3 lety +1

    Can we do optimization or constraint satisfaction if our input data is timestamps like job duration and it's start stop time and we need to assign resource to do that job.?

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety +1

      Heya @Armored Flash, from what I've seen the way to handle this is to treat time as a constant (t) and stage resources using time from t. E.g. The plumber needs to start at t+60. Check this out: ibmdecisionoptimization.github.io/docplex-doc/mp/nurses_scheduling.html

    • @ankitarya7492
      @ankitarya7492 Před 3 lety

      @@NicholasRenotte I'm referring to something like rail crew scheduling where you have time table for rails and you need to create crew duties to optimize number of resources that'll operate rails.

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      @@ankitarya7492 yep, check out the Nurse Scheduling example I gave. You could repurpose that for rail crew scheduling!

  • @user-or7ji5hv8y
    @user-or7ji5hv8y Před 3 lety +1

    I'm not sure if docplex is still working properly, since I got an error when running m.solve(),
    DOcplexException: Cannot solve model: no CPLEX runtime found.

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      Heya @C, are you running it in Watson Studio? The CPLEX API is natively enabled from WS. You would have to install it separately if you wanted to do it locally.

    • @xknubbe
      @xknubbe Před 3 lety

      Hey, I am the same problem... I am running it on google collab, is there a workaround?

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      @@xknubbe nope, gotta do it with a CPLEX runtime!

  • @jeethendraambarish100
    @jeethendraambarish100 Před 2 lety +1

    Wow awesome teaching, could we please get some more videos , hard to find videos on docplex

  • @SSS0401
    @SSS0401 Před 3 lety +1

    Unable to read your code - font too small on Gallaxy tablet

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety +1

      Heyyy thanks for the heads up @Virgil Stokes, I've been zooming in on the more recent videos, can you let me know if it's better on this one czcams.com/video/ZUsaIOTJvM4/video.html Also, I just uploaded the Notebook to GitHub if you wanted to take a look: github.com/nicknochnack/LinearProgrammingBasics

  • @zeynepbaykan7277
    @zeynepbaykan7277 Před rokem

    The video is very understandable but when i run the code, i get an error which is:
    DOcplexException: Model did not solve successfully
    Maybe you can help me?

  • @saltsea9499
    @saltsea9499 Před rokem +1

    for those who need it with pycharm. settings, project, python interpreter, + to install cplex package

  • @behrouzChannel
    @behrouzChannel Před 3 lety +1

    Nicholas I've got a question , I'll be glad if you guide me ,
    Can I pass a data sciences course like Coursera's courses instead of a University degree to find a job in Europe or USA ?

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety +1

      No problemo, the US market is VERY competitive and you'll likely being going up against people with advanced tertiary degrees (Masters and PdDs). If you're going to rely on Coursera courses only then you need a way to stand out so I'd suggest building an AMAZING portfolio. It'll be easier to score a DS role in Europe with that approach however.

    • @behrouzChannel
      @behrouzChannel Před 3 lety +1

      @@NicholasRenotte amazing guidance thank you so much 🌷

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety +1

      @@behrouzChannel no problems, you're most welcome!

  • @raedokal
    @raedokal Před rokem

    Love it

  • @13kriztian
    @13kriztian Před 3 lety +1

    Very helpful

  • @adammusa426
    @adammusa426 Před rokem

    Pls can you do for integer programming, pls I need it asap. It urgent.

  • @user-or7ji5hv8y
    @user-or7ji5hv8y Před 3 lety +1

    Is docplex better than Scipy? Just wondering what the pros and cons are...

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      Heya @C, docplex is based on CPLEX which is a super fast API. I tend to use it a lot for work in enterprise solutions. I haven't dealt too much with Scipy but from what I know, CPLEX scales ridiculously well, particularly if you have a large number of variables and constraints.

  • @merin_here_am_i
    @merin_here_am_i Před 2 lety +1

    Awesome video... Can you please do optimization with cplex python API?

    • @NicholasRenotte
      @NicholasRenotte  Před 2 lety +1

      Checked this out? czcams.com/video/EzhzJyu77y8/video.html

  • @killerDNA1001
    @killerDNA1001 Před 3 lety +1

    and also when i run m.solve() i get a error saying
    "Cannot solve model: no CPLEX runtime found."
    Please help me
    this is kinda urgent

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      Let's dig into it a little, are you running this from IBM Cloud? CPLEX would be pre-configured there for you! 😊

    • @killerDNA1001
      @killerDNA1001 Před 3 lety +1

      @@NicholasRenotte thank you mate
      i figured this out now when i use it in IBM Watson Studio it works perfectly

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      @@killerDNA1001 YESSS! I'm curious, what type of LP problems are you working on!?

    • @dominicscott7367
      @dominicscott7367 Před 3 lety +1

      @@NicholasRenotte Hey is there a way to solve this error on pycharm?

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety +1

      @@dominicscott7367 you have to have CPLEX installed on your local machine in order to run it in Pycharm.

  • @kharthigeyan
    @kharthigeyan Před 3 lety +1

    Why not use minizinc for this?

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      Possibly, I haven't actually done a lot with minizinc!

    • @cong1393
      @cong1393 Před 3 lety +1

      Minizinc doesn't work with Python as easily as ILOG/DOcplex. When it come time to deploy the model to the cloud to expose an API, say to use it in your website or mobile app, Minizinc has no easy way of doing it. It's great to learn about constraint programming, but pretty meh when it comes to operationalise the model. Plus, ILOG's got multi-objective optimisation, pretty basic compared to MATLAB, but it's there.

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      Thanks for sharing @@cong1393!

  • @hninpannphyu8567
    @hninpannphyu8567 Před 3 lety +2

    Hi, Thanks for the great tutorial. How can we implement the maximum flow problem with docplex. For instances, E =Arcs, (i,j) , x[i,j]=binary variable, 1 if i is linked to j, o otherwise.
    mdl.sum(x[i,j] for (i,j) in E)-mdl.sum(x[j,i] for (j,i) in E)==1 if i=source
    mdl.sum(x[i,j] for (i,j) in E)-mdl.sum(x[j,i] for (j,i) in E)==-1 if i==destination
    mdl.sum(x[i,j] for (i,j) in E)-mdl.sum(x[j,i] for (j,i) in E)==0 otherwise.
    Can you guide me the example code in python docplex Model for the above example?

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety +1

      Check this out: ibmdecisionoptimization.github.io/tutorials/html/Beyond_Linear_Programming.html

    • @hninpannphyu8567
      @hninpannphyu8567 Před 3 lety +1

      @@NicholasRenotte Thanks a lot it is really helpful. :D

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      @@hninpannphyu8567 anytime!! GL

  • @virgeliushendrawantaraland683

    thankyou ma bro

  • @behrouzChannel
    @behrouzChannel Před 3 lety +1

    It seems helpuf but I can't see the codes , wish you could zoom in the screen

  • @simonknights7619
    @simonknights7619 Před 3 lety

    I dont have ibm watson. Trying to replicate in jupyter but throwing an error at the last line
    (anaconda on w10 pc. I did pip install cplex ok)
    Is anyone able to help please?
    ---------------------------------------------------------------------------
    AttributeError Traceback (most recent call last)
    in
    ----> 1 sol.display()
    AttributeError: 'NoneType' object has no attribute 'display'

    • @simonknights7619
      @simonknights7619 Před 3 lety

      Scrap that I think I fixed by adding sol = m.solution

    • @vatsid
      @vatsid Před 2 lety

      Run
      pip install cplex
      You need cplex as a separate package installed

  • @folran5422
    @folran5422 Před 3 lety +1

    I don't see how this problem is so complex as to warrant such a model. It's quite simple, really:
    A FoldyPhone is $900 in 1.5h = $600 in 1h.
    A TinyPhone is $1100 in 2h = $550 in 1h.
    *Obviously* you're gonna want to make as many FoldyPhones as possible, since they make more money per hour! How is this complex?
    To answer the question, just plug in the minimum number for TinyPhones:
    2999.5 - 200 * 2 = 2599.5 hours left for making FoldyPhones
    2599.5 / 1.5 = 1733 FoldyPhones we can make with the remaining time

  • @rahmadewikartikasari6449
    @rahmadewikartikasari6449 Před 3 lety +1

    Good day!
    What a helpful video.
    I'm trying to learn data science using python these days. And I tried using optimization method to solve McDonald's Nutrition data set. But i found an error when running the prob.solve code. 'PulpSolverError: Pulp: Error while executing glpsol.exe' appeared when I run the prob.solve()
    But I still can't find the solution to solve this problem. Can you help me to solve it?
    Thanks

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      Awesome @rahma ika, what do you get when you run
      pulp.pulpTestAll()
      This SO thread might help? stackoverflow.com/questions/34764209/pulp-solvers-pulpsolvererror-pulp-cannot-execute-glpsol-exe

    • @rahmadewikartikasari6449
      @rahmadewikartikasari6449 Před 3 lety

      @@NicholasRenotte hi! Thank you for taking time to help me.
      I've tried to run the pulp.pulpTestAll() code, and it said that module pulp.pulp has no attribute 'pulpTestAll'
      And i tried what's written in the thread, but nothing's worked for me.

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      @@rahmadewikartikasari6449 can you share your code, I can try to test it on my machine? Github link?

    • @rahmadewikartikasari6449
      @rahmadewikartikasari6449 Před 3 lety +1

      Dear @@NicholasRenotte , here is the github link github.com/Rahmadewiks/Mcd-Nutrition.git
      i hope you find out what made it error.

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      Heya @Rahma, I'm getting a bunch of other errors when I test the model. Quick check, what type of machine are you running this on and what version of Python?

  • @ashleysami1640
    @ashleysami1640 Před 4 lety +3

    What. I can do that already.

  • @franciscozorrilla8440
    @franciscozorrilla8440 Před 2 lety +2

    i think its do cplex not doc plex :)

    • @NicholasRenotte
      @NicholasRenotte  Před 2 lety

      HAHAHAHAHA, I am an idiot. Thanks a million @Francisco, that makes a lot more sense 😅

  • @musedegefe5906
    @musedegefe5906 Před měsícem

    Clinical!

  • @mehmetemincifci
    @mehmetemincifci Před rokem

    ibm solver not python

  • @MehmetTanriver
    @MehmetTanriver Před 2 lety

    Dont read

  • @sidasdf
    @sidasdf Před 3 lety +3

    Unfortunate I was hoping I would actually be able to learn the process to optimize, not use some external library to do it for me.

    • @NicholasRenotte
      @NicholasRenotte  Před 3 lety

      Oh my bad! Might add something on opt from scratch in the pipeline!

  • @donaldoconner5172
    @donaldoconner5172 Před 5 dny

    Don't try to kill God's sons again.