这里写自定义目录标题
Gurobi学习笔记
近期做科研用到优化方法~奈何matlab优化求解器的精度无法达到要求,故准备转战python gurobi求解器
下载地址
- 官网下载工具包:www.gurobi.com
中文官网学习资料:http://www.gurobi.cn/picexhview.asp?id=90 - 安装过程略
学习记录
一、 python语法复习
- 基础数据结构
1)列表
list1 = [‘physics’, ‘chemistry’, 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7 ]
print "list1[0]: ", list1[0]
print "list2[1:5]: ", list2[1:5]
函数
cmp len max min list
方法
append count extend index insert pop remove reverse sort
2)元组
与列表类似,不同在于元组的元素不能修改;元组中只包含一个元素时,需要在元素后面添加逗号,语法用括号
仅能访问、连接、(全部)删除
3)字典
键值不可变,所以可用数字、字符串或元组,不能用列表
dict1 = { ‘abc’: 456 }
dict2 = { ‘abc’: 123, 98.6: 37 }
函数
cmp len str type
方法
clear copy fromkeys get has_key items keys setdefault update
-
python模块
1)pyhton模块化工具包
数组运算:Numpy
import numpy as np
a = np.array([1, 2, 3, 4, 5], ndmin = 2)
print (a)
操作表达式:numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
定义数据类型 np.dtype([(‘age’,np.int8)])
ndarray属性ndim shape size itemsiz flags real imag data
创建全零数组 x = np.zeros(5)
创建全1数组 x = np.ones(5)
正态分布数组 创建 randn(size) 服从 X~N(0,1) 的正态分布随机数组
a=random.randn(2,3)
随机分布数组创建随机分布整数型数组指定范围在 [low.high] 之间
a=random.randint(100,200,(3,3))
顺序数组
numpy.arange(start, stop, step, dtype)
a = np.arange(10)
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
a = np.linspace(1,10,10)
对角矩阵 a = np.eye(5)
从列表、元组创建数组 a = np.asarray(x)
迭代器 np.nditer(a) numpy.ndarray.flat
形状 numpy.reshape
展平 numpy.ndarray.flatten/ravel
转置 numpy.transpose(arr, axes)/ndarray.T
数学函数三角函数 舍入函数
算术函数 add subtract multiply divide reciprocal
统计函数 amin amax mean/average std var
矩阵库 numpy.matlib
numpy.matlib.ones()
numpy.matlib.zeros()
numpy.matlib.eye()
numpy.matlib.identity()
numpy.matlib.rand()
线性代数 dot vdot inner
画图
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1,11)
y = 2 * x + 5
plt.title(“Matplotlib demo”)
plt.xlabel(“x axis caption”)
plt.ylabel(“y axis caption”)
plt.plot(x,y)
plt.show()
2)自定义python文件
e.g.如在文件support.py中定义函数
定义
def 名称(关键字、默认、不定长参数):
函数主体
return**
导入+调用
import support
support.名称(参数)
添加变量 m.addVars()
添加目标函数 m.setObjective()
添加约束条件 m.addConstr()