Python数学建模之线性规划和整数规划模型

您所在的位置:网站首页 整数规划问题和线性规划问题有什么区别和联系 Python数学建模之线性规划和整数规划模型

Python数学建模之线性规划和整数规划模型

2024-07-10 12:39| 来源: 网络整理| 查看: 265

1.线性规划模型 1.线性规划模型及概念

1.求解线性规划模型的一般步骤:

2.线性规划模型的一般形式

或简写为:

3.向量形式

4.矩阵形式

 5.线性规划问题的解

2.模型求解及应用

需要用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整数规划

import cvxpy as cp import numpy as np c = np.loadtxt('data4_10.txt') x = cp.Variable((4, 5), integer=True) # 定义决策变量 obj = cp.Minimize(cp.sum(cp.multiply(c, x))) # 构造目标函数 cons = [0


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3