Gurobi软件求解线性规划问题(卜算学习记录)

摘要:本文回顾了卜老师GLPK求解家庭主妇购物问题的过程,提供了在python中安装Gurobi的方法,给出了Gurobi求解线性规划问题的具体步骤。通过对比Gurobi和Glpk的不同,带着读者边学习边复习了Glpk的使用方法。线性规划是看家本领,不仅要熟练掌握建模方法,还要学会使用软件进行求解。

01前言
上课时,卜老师介绍了几种求解线性规划的软件,并演示了GLPK软件的使用。同时,卜老师说Gurobi是几种软件中比较好用的软件,并且对教学是免费的。所以本文选择介绍Gurobi软件求解线性规划问题。(如果大家对其他软件有所学习,欢迎后续补充)
上课时,卜老师是在龙芯电脑上直接调出代码进行演示的。这里提供上课拍的GLPK演示求解家庭主妇购物问题的照片:
Gurobi软件求解线性规划问题(卜算学习记录)_第1张图片
图1 家庭主妇问题
Gurobi软件求解线性规划问题(卜算学习记录)_第2张图片
图2 对应的GLPK代码
Gurobi软件求解线性规划问题(卜算学习记录)_第3张图片
图3 GLPK求解
Gurobi软件求解线性规划问题(卜算学习记录)_第4张图片
图4 GLPK求解结果

02 Gurobi软件安装配置
接下来进入正文,用Gurobi软件求解线性规划问题。
为了写代码方便,我选择在python环境中安装Gurobi,这样就能直接在pycharm中运行,十分方便。前面提到了Gurobi对学生免费,大家可以使用国科大的邮箱进行注册申请,亲测有效。软件下载可以到官网进行下载,或者可以从我的网盘下载:(链接: https://pan.baidu.com/s/1tnLlkO0QqEr7gZ5pOVes0w 提取码: 5ucc) 不过软件激活的时候依旧需要通过注册申请获得注册码。
这里分享一篇CSDN写的安装配置过程。博主写的非常详细,按照这个步骤走,应该都能安装好。
(https://blog.csdn.net/weixin_41596280/article/details/89112302?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2defaultCTRLISTdefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultCTRLISTdefault-1.no_search_link)
03 Gurobi软件求解线性规划问题
安装好Gurobi软件之后,下一步当然是玩玩看啦~
3.1问题叙述
线性规划作业中给出一道题目:你的工厂生产三种产品:A、B、C。2都需要用到两种原材料:镍和铝。每种产品的利润和成本如下表所示。
Gurobi软件求解线性规划问题(卜算学习记录)_第5张图片

你只有200公斤的镍和300公斤的铝库存。如何安排生产使得利润最大化?请将此问题表述为LP并将其转换为对偶形式。然后您可以使用GLPK或Gurobi或其他类似工具解决原始问题和对偶问题。
( 往期的公众号文章中详细总结了“如何将原问题转换为对偶问题”,在此不多赘述)
Gurobi软件求解线性规划问题(卜算学习记录)_第6张图片
Gurobi软件求解线性规划问题(卜算学习记录)_第7张图片
Gurobi软件求解线性规划问题(卜算学习记录)_第8张图片
Gurobi软件求解线性规划问题(卜算学习记录)_第9张图片
Gurobi软件求解线性规划问题(卜算学习记录)_第10张图片
Gurobi软件求解线性规划问题(卜算学习记录)_第11张图片
在这里给读者朋友们留一个小练习:用Gurobi求解原问题的对偶问题。

05 感悟
在我们小的时候要从1+1开始计算,随着学习难度增加,我们开始要计算复杂的运算,但我们学习了计算器的使用,问题迎刃而解。初中的时候我们又开始接触一些实际应用问题,初中老师要求列出计算等式,简单问题可以用消元法求解,计算量大的问题不要求求解。到今天我们遇到了线性规划问题(一堆线性不等式),我们学会了使用Gurobi和Glpk进行求解,只要写出问题形式化模型,然后变为Gurobi或Glpk能读懂的语言,丢给Gurobi或Glpk求解即可。卜老师课堂上以及作业中大量的练习了如何写出问题的形式化模型。只留了一道Gurobi或Glpk求解问题的题目,我认为既然线性规划是我们的“看家本领”那么不仅要会写出问题的形式化模型,也要学会Gurobi和Glpk的使用。所以本文详细的写了Gurobi的安装配置以及使用方法。另外,通过对比Gurobi和Glpk的不同,带着读者复习了Glpk的使用方法。并留了一道练习题,祝大家玩得愉快。
如有谬误,还请指正。

你可能感兴趣的:(学习笔记,学习,算法)