1、python中的scipy中提供了线性规划模块 1)模块导入 from scipy import optimize optimize.linprog 2)模块特点说明 需要注意的是这个模块只能找到线性规划的最小值,因此,如果约束条件的不等式(变量除外)中含有“大于等于”的需要修改为“小于等于”,例如:x+y>=5,转换为-x-y<=-5; 最大化max_z=x+y,转换为最小化min_z=-x-y 最后linprog得到的是最小值,添加负号则变为最大值 2、代码如下: import numpy as np from scipy import optimize def line_progress(): # max Z=x+y # subject to : # (1)2y+x<=6 # (2)y+2x<=6 # (3)x>=0,y>=0 # 最大值是(1)和(2)的交点,max:Z=2+2=4 # Z=x+y : 最大化系数max_coe_z=[1,1]转化成最小化系数min_coe_z=-[1,1],添加负值 min_coe_z = - np.array([1, 1]) # 不等式中的系数(The coefficient of subject to in the inequality) coe_st_ub = np.array([[2, 1], [1, 2]]) # 不等式中约束值(The value of subject to in the inequality) value_st_ub = np.array([6, 6]) # 不等式中的变量(Constrained variables of inequality) var1_st, var2_st = (0, None), (0, None) # 优化的结果(The result of optimize) line_result = optimize.linprog(min_coe_z, A_ub=coe_st_ub, b_ub=value_st_ub, bounds=(var1_st, var2_st)) # 如果找到最小值输出最小值,返回True if line_result.success: # 最小值的变量 print("线性规划最小值的变量:") print(line_result.x) # 最小值 print("线性规划最小值:") print(line_result.fun) # 最大值 print("线性规划最大值:") print(-line_result.fun) else: print("找不到线性规划最小值。") if __name__ == '__main__': line_progress()
python中线性规划问题
猜你喜欢
转载自blog.csdn.net/make_progress/article/details/81977246
今日推荐
周排行