最后
Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
👉Python所有方向的学习路线👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python必备开发工具👈
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
👉Python全套学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
👉实战案例👈
学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。
因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。
👉大厂面试真题👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
import numpy as np
from scipy.optimize import linprog
c = np.array([-2, 4]) #目标函数
A_ub = np.array([[-3, 1], [-1, -2]]) #不等式
B_ub = np.array([6, -4])
A_ed = np.array([[1, 3]]) #等式
B_ed = np.array([4])
res=linprog(c, A_ub, B_ub, A_ed, B_ed, bounds=([None, None], [-3, None]))
print(res.fun)
print(res.x)
#结果
-37.99999999992104
[13. -3.]
Process finished with exit code 0
(3)cplex库
-- coding: utf-8 --
The MIP problem solved in this example is:
Maximize x1 + 2 x2 + 3 x3 + x4
Subject to
- x1 + x2 + x3 + 10 x4 <= 20
x1 - 3 x2 + x3 <= 30
x2 - 3.5x4 = 0
Bounds
0 <= x1 <= 40
0 <= x2
0 <= x3
2 <= x4 <= 3
Integers
x4
import cplex
from cplex.exceptions import CplexError
data common to all populateby functions
my_obj = [1.0, 2.0, 3.0, 1.0]
my_ub = [40.0, cplex.infinity, cplex.infinity, 3.0]
my_lb = [0.0, 0.0, 0.0, 2.0]
my_ctype = “CCCI”
my_colnames = [“x1”, “x2”, “x3”, “x4”]
my_rhs = [20.0, 30.0, 0.0]
my_rownames = [“r1”, “r2”, “r3”]
my_sense = “LLE”
def populatebyrow(prob):
prob.objective.set_sense(prob.objective.sense.maximize)
prob.variables.add(obj=my_obj, lb=my_lb, ub=my_ub, types=my_ctype,
names=my_colnames)
rows = [[[“x1”, “x2”, “x3”, “x4”], [-1.0, 1.0, 1.0, 10.0]],
[[“x1”, “x2”, “x3”], [1.0, -3.0, 1.0]],
[[“x2”, “x4”], [1.0, -3.5]]]
prob.linear_constraints.add(lin_expr=rows, senses=my_sense,
rhs=my_rhs, names=my_rownames)
try:
my_prob = cplex.Cplex()
handle = populatebyrow(my_prob)
my_prob.solve()
except CplexError as exc:
print(exc)
print()
solution.get_status() returns an integer code
print("Solution status = ", my_prob.solution.get_status(), “:”, end=’ ')
the following line prints the corresponding string
print(my_prob.solution.status[my_prob.solution.get_status()])
print("Solution value = ", my_prob.solution.get_objective_value())
numcols = my_prob.variables.get_num()
numrows = my_prob.linear_constraints.get_num()
slack = my_prob.solution.get_linear_slacks()
x = my_prob.solution.get_values()
print('x: ')
print(x)
#结果
Version identifier: 20.1.0.0 | 2020-11-11 | 9bedb6d68
CPXPARAM_Read_DataCheck 1
Found incumbent of value 46.000000 after 0.23 sec. (0.00 ticks)
Tried aggregator 2 times.
Aggregator did 1 substitutions.
Reduced MIP has 2 rows, 3 columns, and 6 nonzeros.
Reduced MIP has 0 binaries, 1 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.19 sec. (0.01 ticks)
Tried aggregator 1 time.
Reduced MIP has 2 rows, 3 columns, and 6 nonzeros.
Reduced MIP has 0 binaries, 1 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.00 sec. (0.00 ticks)
MIP emphasis: balance optimality and feasibility.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 4 threads.
Root relaxation solution time = 0.48 sec. (0.00 ticks)
Nodes Cuts/
Node Left Objective IInf Best Integer Best Bound ItCnt Gap
-
0+ 0 46.0000 163.0000 254.35%
0 0 125.2083 1 46.0000 125.2083 3 172.19%
-
0+ 0 122.5000 125.2083 2.21%
0 0 cutoff 122.5000 3 —
Elapsed time = 1.12 sec. (0.03 ticks, tree = 0.01 MB, solutions = 2)
Root node processing (before b&c):
Real time = 1.12 sec. (0.03 ticks)
Parallel b&c, 4 threads:
Real time = 0.00 sec. (0.00 ticks)
Sync time (average) = 0.00 sec.
Wait time (average) = 0.00 sec.
Total (root+branch&cut) = 1.12 sec. (0.03 ticks)
Solution status = 101 : MIP_optimal
Solution value = 122.5
x:
[40.0, 10.5, 19.5, 3.0]
Process finished with exit code 0
(4)Yalmip+Cplex(matlab实现)
尽管 python 比较火,cplex 对 python 的支持目前还不是太全,相关的学习资料比较少,ibm 自己出的资料对 python 包的介绍也很简略,例子及相关类方法的介绍也不详细,这一点远没有对 java 或 c++ 支持地好。cplex 在 python 中没有重载加减乘除符号吗?目前给的例子都是输入系数矩阵这种形式。使用起来非常不方便的。
所以推出了Yalmip+Cplex(matlab),matlab中这个库的下载方法,后面的文章会讨论matlab中Yalmip+Cplex这个强大的库在我们电力系统中的强大作用(噢头曼!!!),虽然我很喜欢用Python,但是python是这几年才火起来,所以这个Cplex库还不是很完善,所以对于这个库强烈推荐matlab。下面先来点简单的线性规划,让大家热身。
,
%(1)设定决策变量X(1)、X(2)
%(2)sdpvar:实数变量;binvar:0—1变量;intvar:整型变量
%(3)Yalmip默认是对称的,要求非对称用full
x=sdpvar(2,1,‘full’);
z=-2x(1)+4x(2); %目标函数,默认最小
st=[]; %设定一系列约束
st=[st,-3*x(1)+x(2)<=6];
st=[st,x(1)+2*x(2)>=4];
st=[st,x(1)+3*x(2)==4];
st=[st,x(2)>=-3];
ops=sdpsettings(‘solver’,‘cplex’); %设定求解器
r=optimize(st,z); %求解,如果最大值用-z
x=value(x); %查看求解结果x的值
z=value(z); %查看目标函数的最优解
%结果
Optimal solution found.
x
x =
13
-3
z
z =
-38
3、蒙特卡洛法求解非线性规划
(1)案例
(2)代码
由于python下np随机耗时较大,所以使用C++:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!