Python数学建模之线性规划和整数规划模型 |
您所在的位置:网站首页 › 整数规划问题和线性规划问题有什么区别和联系 › Python数学建模之线性规划和整数规划模型 |
1.线性规划模型
1.线性规划模型及概念
1.求解线性规划模型的一般步骤: 2.线性规划模型的一般形式 或简写为: 3.向量形式 4.矩阵形式
需要用Python的cvxpy库。安装步骤参见http://t.csdnimg.cn/ONvge 例1: 代码示例: import cvxpy as cp from numpy import array c = array([70, 50, 60]) # 定义目标向量 a = array([[2, 4, 3],[3, 1, 5], [7, 3, 5]]) # 定义约束矩阵 b = array([150, 160, 200]) # 定义约束条件的右边向量 x = cp.Variable(3, pos=True) # 定义 3 个决策变量 obj = cp.Maximize(c@x) # 构造目标函数 cons = [a@x=20, x[0,3]+x[1,2]+x[2,1]+x[3,0]>=12] prob = cp.Problem(obj, cons) prob.solve(solver='GLPK_MI') print('最优解为:\n',x.value) print('最优值为:',prob.value)例4: 示例代码: import numpy as np import cvxpy as cp import pandas as pd c = np.genfromtxt('data4_5_1.txt', dtype=float, max_rows=6, usecols=range(8)) # 读前 6 行前 8 列数据 e = np.genfromtxt('data4_5_1.txt', dtype=float, max_rows=6, usecols=8) # 读最后一列数据 d = np.genfromtxt('data4_5_1.txt', dtype=float, skip_header=6) # 读最后一行数据 x = cp.Variable((6, 8), pos=True) obj = cp.Minimize(cp.sum(cp.multiply(c, x))) con = [cp.sum(x,axis=0)==d, cp.sum(x,axis=1)=40, x[1]+x[2]>=50,x[2]+x[3]>=45, x[3]+x[4]>=55,x[4]+x[5]>=30, x>=0] prob = cp.Problem(obj, cons) prob.solve(solver='GLPK_MI') print('最优值为:', prob.value) print('最优解为:', x.value) # 解法二:求余运算 import cvxpy as cp import numpy as np a = np.array([35, 40, 50, 45, 55, 30]) x = cp.Variable(6, integer=True) obj = cp.Minimize(sum(x)) cons = [x>=0] for i in range(6): cons.append(x[(i-1)%6]+x[i]>=a[i]) prob = cp.Problem(obj, cons) prob.solve(solver='GLPK_MI') print('最优值为:', prob.value) print('最优解为:', x.value)例2:0-1整数规划 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |