假设每个原材料存在不规则缺陷,缺陷的大小和位置是已知的,缺陷会影响切割的部分材料,即加工的成品不能包含缺陷区域(每一个缺陷区域可视为矩形区域),每类原材料的缺陷信息包含缺陷起始位置和缺陷的长度,如表2所示。 表2: 具体缺陷信息 原材料编号 原材料长度(米) 缺陷位置(从左端起)(米处) 缺陷长度(米) 1 5.5 1.0 0.03 1 5.5 2.5 0.04 2 6.2 0.5 0.02 2 6.2 1.8 0.05 3 7.8 3.0 0.03 根据这些缺陷,请在问题1的基础上,重新建立数学模型,制定最优切割方案,并计算调整后切割方案整体的切割损失率及利用率。


问题分析 要制定最优切割方案,需要考虑原材料的长度、缺陷位置和长度,同时满足加工成品不能包含缺陷区域的要求。目标是使切割损失率最小,利用率最大。 数学模型建立 符号定义 - $i$:原材料编号,$i = 1,2,3$ - $L_i$:第 $i$ 种原材料的长度 - $n_i$:第 $i$ 种原材料的数量(这里假设每种原材料数量为 1) - $p_{ij}$:第 $i$ 种原材料的第 $j$ 个缺陷的起始位置 - $l_{ij}$:第 $i$ 种原材料的第 $j$ 个缺陷的长度 - $m$:成品的种类数 - $d_k$:第 $k$ 种成品的需求数量 - $s_k$:第 $k$ 种成品的长度 - $x_{ik}$:第 $i$ 种原材料切割出第 $k$ 种成品的数量 - $y_{ij}$:第 $i$ 种原材料在第 $j$ 个缺陷处的切割状态(0 表示不切割,1 表示切割) - $z_{i}$:第 $i$ 种原材料的剩余长度 目标函数 最小化切割损失率,即最大化利用率。 \[ \min \sum_{i = 1}^{3} z_{i} \] 约束条件 1. 成品需求约束 对于每种成品 $k$,切割出的数量要满足需求。 \[ \sum_{i = 1}^{3} x_{ik} \geq d_k, \quad k = 1,2,\cdots,m \] 2. 原材料长度约束 切割出的成品长度和缺陷占用长度总和不能超过原材料长度。 \[ \sum_{k = 1}^{m} x_{ik} s_k + \sum_{j} y_{ij} l_{ij} \leq L_i, \quad i = 1,2,3 \] 3. 缺陷避让约束 切割的成品不能包含缺陷区域。可以通过逻辑约束来实现,例如确保切割点不在缺陷范围内。 4. 剩余长度计算 \[ z_{i} = L_i - \sum_{k = 1}^{m} x_{ik} s_k - \sum_{j} y_{ij} l_{ij}, \quad i = 1,2,3 \] 5. 变量非负约束 \[ x_{ik} \geq 0, \quad y_{ij} \in \{0,1\}, \quad z_{i} \geq 0 \] Python 代码实现 ```python import pulp # 原材料信息 raw_materials = { 1: {'length': 5.5, 'defects': [(1.0, 0.03), (2.5, 0.04)]}, 2: {'length': 6.2, 'defects': [(0.5, 0.02), (1.8, 0.05)]}, 3: {'length': 7.8, 'defects': [(3.0, 0.03)]} } # 假设成品需求和长度 product_demands = { 1: {'demand': 1, 'length': 2.0}, 2: {'demand': 1, 'length': 3.0} } # 创建线性规划问题 prob = pulp.LpProblem("Optimal_Cutting_Plan", pulp.LpMinimize) # 定义变量 x = pulp.LpVariable.dicts("x", [(i, k) for i in raw_materials.keys() for k in product_demands.keys()], lowBound=0, cat='Integer') y = pulp.LpVariable.dicts("y", [(i, j) for i in raw_materials.keys() for j in range(len(raw_materials[i]['defects']))], cat='Binary') z = pulp.LpVariable.dicts("z", raw_materials.keys(), lowBound=0) # 目标函数 prob += pulp.lpSum(z[i] for i in raw_materials.keys()) # 成品需求约束 for k in product_demands.keys(): prob += pulp.lpSum(x[(i, k)] for i in raw_materials.keys()) >= product_demands[k]['demand'] # 原材料长度约束 for i in raw_materials.keys(): prob += pulp.lpSum(x[(i, k)] * product_demands[k]['length'] for k in product_demands.keys()) + \ pulp.lpSum(y[(i, j)] * raw_materials[i]['defects'][j][1] for j in range(len(raw_materials[i]['defects']))) <= raw_materials[i]['length'] # 剩余长度计算 for i in raw_materials.keys(): prob += z[i] == raw_materials[i]['length'] - pulp.lpSum(x[(i, k)] * product_demands[k]['length'] for k in product_demands.keys()) - \ pulp.lpSum(y[(i, j)] * raw_materials[i]['defects'][j][1] for j in range(len(raw_materials[i]['defects']))) # 求解问题 prob.solve() # 输出结果 print("Status:", pulp.LpStatus[prob.status]) total_loss = 0 total_length = 0 for i in raw_materials.keys(): print(f"原材料 {i} 的剩余长度: {pulp.value(z[i])} 米") total_loss += pulp.value(z[i]) total_length += raw_materials[i]['length'] for k in product_demands.keys(): print(f"原材料 {i} 切割出成品 {k} 的数量: {pulp.value(x[(i, k)])}") # 计算切割损失率和利用率 loss_rate = total_loss / total_length utilization_rate = 1 - loss_rate print(f"切割损失率: {loss_rate * 100:.2f}%") print(f"利用率: {utilization_rate * 100:.2f}%") ``` 代码解释 1. 数据定义:定义了原材料信息、成品需求和长度。 2. 线性规划问题创建:使用 `pulp` 库创建线性规划问题。 3. 变量定义:定义了切割数量变量 `x`、缺陷切割状态变量 `y` 和剩余长度变量 `z`。 4. 目标函数和约束条件:根据数学模型添加目标函数和约束条件。 5. 求解问题:调用 `prob.solve()` 求解线性规划问题。 6. 结果输出:输出每种原材料的剩余长度、切割出的成品数量,以及切割损失率和利用率。 注意事项 - 代码中的成品需求和长度是假设值,实际使用时需要根据具体情况修改。 - 缺陷避让约束在代码中简化处理,实际应用中可能需要更复杂的逻辑来确保切割的成品不包含缺陷区域。 [2025-06-05 13:18:17 | AI问答 | 1624点数解答]
- 问题 2 假设每个原材料存在不规则缺陷,缺陷的大小和位置是已知的,缺 陷会影响切割的部分材料,即加工的成品不能包含缺陷区域(每一个缺陷区域 可视为矩形区域),每类原材料的缺陷信息包含缺陷起始位置和缺陷的长度, 如表 2 所示。 表 2:具体缺陷信息 原材料编号 原材料长度 (米) 缺陷位置(从左端起)(米处) 缺陷长度(米) 1 5.5 1.0 0.03 1 5.5 2.5 0.04 2 6.2 0.5 0.02 2 6.2 1.8 0.05 3 7.8 3.0 0.03 根据这些缺陷,请在问题 1 的基础上,重新建立数学模型,制定最优切割 方案,并计算调整后切割方案整体的切割损失率及利用率。 (2367点数解答 | 2025-05-10 23:47:30)137
- ssd_send(0x11,ff,03,98,81,03); //gip_1 ssd_send(0x11,01,01,00); ssd_send(0x11,02,01,00); ssd_send(0x11,03,01,53); ssd_send(0x11,04,01,13); ssd_send(0x11,05,01,00); ssd_send(0x11,06,01,04); ssd_send(0x11,07,01,00); ssd_send(0x11,08,01,00); ssd_send(0x11,09,01,22); ssd_send(0x11,0a,01,22); ssd_send(0x11,0b,01,00); ssd_send(0x11,0c,01,01); ssd_send(0x11,0d,01,00); ssd_send(0x11,0e,01,00); ssd_send(0x11,0f,01,25);(64点数解答 | 2024-11-06 16:52:19)234
- 请使用python编程为data={'莱科宁': '236 - 编号:51', '汉密尔顿': '358 - 编号:55', '维泰尔': '294 - 编号:34', '维斯塔潘': '216 - 编号:10', '博塔斯': '227 - 编号:46'}对积分进行排名(182点数解答 | 2024-10-20 16:16:44)169
- 简单+ 时间限制: 1000ms 内存限制: 128mb 分数:100 oi排行榜得分:14(0.1*分数+2*难度) 循环结构 蓝桥杯省赛集训 描述 小蓝是一名计算机极客,他在记录一些重要的日子时从不注明年月日,而是用一个整数替代,比如 4532,后来人们知道,那个整数就是日期,这个整数表示的日期就是他出生后的第几天。 他出生于:1999−04−30 例如他的日记里记录着获得蓝桥杯国寒总冠军的日子为 7856 这个整数,可以推断出这一天是 2020−10−31,现在需要请你计算出小蓝日记中其他整数对应的日期。 注意:输出的日期格式:yyyy-mm-dd,如:2020−03−21(月和日小于 10 的需要在月和日前补 0 )。 输入描述 输入一个整数 n(5<n<30000) 作为日记中记录的整数,输出这个整数对应的日期(注:按日期格式输出)。 例如:1999−04−30 为第 1 天,1999−05−01 为第 2 天。 输出描述 输出这个整数对应的日期。 样例输入 1 10 样例输出 1 1999-05-09 python不用datetime写(516点数解答 | 2024-08-24 19:05:08)563
- 假设每个原材料存在不规则缺陷,缺陷的大小和位置是已知的,缺陷会影响切割的部分材料,即加工的成品不能包含缺陷区域(每一个缺陷区域可视为矩形区域),每类原材料的缺陷信息包含缺陷起始位置和缺陷的长度,如表2所示。 表2: 具体缺陷信息 原材料编号 原材料长度(米) 缺陷位置(从左端起)(米处) 缺陷长度(米) 1 5.5 1.0 0.03 1 5.5 2.5 0.04 2 6.2 0.5 0.02 2 6.2 1.8 0.05 3 7.8 3.0 0.03 根据这些缺陷,请在问题1的基础上,重新建立数学模型,制定最优切割方案,并计算调整后切割方案整体的切割损失率及利用率。 (533点数解答 | 2025-05-02 09:48:19)157
- % 参数初始化 raw_materials = [5.5, 6.2,7.8]; %原材料长度 material_costs = [18, 22,28]; % 原材料成本 orders = [10, 20,20, 15]; % 订单量 widths = [1.6, 1.8,1.7, 1.5]; % 目标宽度 heights = [2.2, 2.4,2.3, 2.0]; % 目标高度 prices = [480, 680,550, 420]; % 单价 kerf = 0.005; %锯口宽度 tolerance =0.01; %允许误差 % 缺陷信息 (原材料类型,起始位置,缺陷长度) defects = { [1,1.0, 0.03; 1,2.5, 0.04], % 类型1的缺陷 [2, 0.5, 0.02; 2,1.8, 0.05], %类型2的缺陷 [3,3.0, 0.03] %类型3的缺陷 }; %遗传算法参数 options = optimoptions('ga', 'PopulationSize',100, ... 'MaxGenerations',200, ... 'Di(456点数解答 | 2025-05-11 00:01:39)130
- 假设每个原材料存在不规则缺陷,缺陷的大小和位置是已知的,缺陷会影响切割的部分材料,即加工的成品不能包含缺陷区域(每一个缺陷区域可视为矩形区域),每类原材料的缺陷信息包含缺陷起始位置和缺陷的长度,每个原材料只有一个缺陷,每类原材料可能由不同的缺陷,如下:原材料编号 原材料长度(米) 缺陷位置(从左端起)(米处) 缺陷长度(米) 1 5.5 1.0 0.03 1 5.5 2.5 0.04 2 6.2 0.5 0.02 2 6.2 1.8 0.05 3 7.8 3.0 0.03 根据这些缺陷,请在问题1的基础上,重新建立数学模型,制定最优切割方案,并计算调整后切割方案整体的切割损失率及利用率。问题1的代码如下,可在问题1的基础上更改: clc; close all; % 订单数据 orders = [ 10, 1.6, 2.2, 480; % 订单1 20, 1.8, 2.4, 680; % 订单2 20, 1.7, 2.3, 550; % 订单3 15, 1.5, 2.0, 420 % 订单4 ]; % 原材料数据 raw_materi(2543点数解答 | 2025-06-02 20:44:49)92
- 假设每个原材料存在不规则缺陷,缺陷的大小和位置是已知的,缺陷会影响切割的部分材料,即加工的成品不能包含缺陷区域(每一个缺陷区域可视为矩形区域),每类原材料的缺陷信息包含缺陷起始位置和缺陷的长度,如表2所示。 表2: 具体缺陷信息 原材料编号 原材料长度(米) 缺陷位置(从左端起)(米处) 缺陷长度(米) 1 5.5 1.0 0.03 1 5.5 2.5 0.04 2 6.2 0.5 0.02 2 6.2 1.8 0.05 3 7.8 3.0 0.03 根据这些缺陷,请在问题1的基础上,重新建立数学模型,制定最优切割方案,并计算调整后切割方案整体的切割损失率及利用率。 (1624点数解答 | 2025-06-05 13:18:17)85
- 问题2 假设每个原材料存在不规则缺陷,缺陷的大小和位置是已知的,缺陷会影响切割的部分材料,即加工的成品不能包含缺陷区域(每一个缺陷区域可视为矩形区域),每类原材料的缺陷信息包含缺陷起始位置和缺陷的长度,如表2所示。 表2: 具体缺陷信息 原材料编号 原材料长度(米) 缺陷位置(从左端起)(米处) 缺陷长度(米) 1 5.5 1.0 0.03 1 5.5 2.5 0.04 2 6.2 0.5 0.02 2 6.2 1.8 0.05 3 7.8 3.0 0.03 根据这些缺陷,请在问题1的基础上,重新建立数学模型,制定最优切割方案,并计算调整后切割方案整体的切割损失率及利用率。 问题3 基于附件中的缺陷数据和表3中的订单需求,建立数学模型,制定最优切割方案。 表3: 订单的具体切割需求 订单号 订单需求对象 订单量(套) 宽度目标(米) 高度目标(米) 窗框单价(元/套) 1 学校教学楼 120 1.6 2.2 480 2 酒店客房 80 1.8 2.4 680 3 医院病房 60 1.7 2.3 550 4 **办公楼 40 1.5 2.0 420 使用多重整数线性规划的方法 给我生成方(2899点数解答 | 2025-08-12 19:49:24)66
- 假设每个原材料存在不规则缺陷,缺陷的大小和位置是已知的,缺陷会影响切割的部分材料,即加工的成品不能包含缺陷区域(每一个缺陷区域可视为矩形区域),每类原材料的缺陷信息包含缺陷起始位置和缺陷的长度,如表2所示。 表2: 具体缺陷信息 原材料编号 原材料长度(米) 缺陷位置(从左端起)(米处) 缺陷长度(米) 1 5.5 1.0 0.03 1 5.5 2.5 0.04 2 6.2 0.5 0.02 2 6.2 1.8 0.05 3 7.8 3.0 0.03 根据这些缺陷,请在问题1的基础上,重新建立数学模型,制定最优切割方案,并计算调整后切割方案整体的切割损失率及利用率。 问题3 基于附件中的缺陷数据和表3中的订单需求,建立数学模型,制定最优切割方案。 表3: 订单的具体切割需求 订单号 订单需求对象 订单量(套) 宽度目标(米) 高度目标(米) 窗框单价(元/套) 1 学校教学楼 120 1.6 2.2 480 2 酒店客房 80 1.8 2.4 680 3 医院病房 60 1.7 2.3 550 4 **办公楼 40 1.5 2.0 420 使用多重整数线性规划的方法 给我生成数学建模(1342点数解答 | 2025-08-12 19:54:42)53
- 一是未充分调动干部自学积极性。尽管定期组织学习中央八项规定精神有关内容,但多以集中领学文件为主,未能有效引导个人自学,也缺乏多样化形式,导致干部学习热情和主动性不足。二是学习研讨参与度不均衡。学习教育工作开展期间,部分领导干部发言积极,普通党员干部参与度不高,存在“旁观者”现象。研讨过程中,结合实际工作讨论不够紧密,未将规定精神有效融入日常业务,无法充分发挥学习指导实践的作用。三是问题查摆不够精准。部分党员干部问题查摆缺乏针对性,未结合自身岗位特点和工作实际,存在“通用问题多、个性问题少”的情况。针对存在问题,提出下步工作打算,要质量高的问题,最好可以让材料一遍过,领导不修改(767点数解答 | 2025-08-07 17:07:03)86
- 给定n个互异的关键字组成的序列k=<k1,k2,...,kn>,且关键字有序(k1<k2<...<kn),从这些关键字中构造一棵二叉查找树。对每个关键字ki,每次搜索到的概率为pi。还有n+1个“虚拟键”d0,d1,....dn,他们代表不在k的值。d0代表所有小于k1的值,dn代表所有大于kn的值,对于i=1,2,...,n-1,虚拟键di代表位于ki和ki+1之间的值。对于每个di,每次搜索di的概率为qi。要求建立一棵最优二叉查找树,使所有的搜索操作访问的结点总数最少,并输出平均搜索每个结点的访问结点数的值。输入描述 第一行n个实数p1,p2...pn,表示k1,k2,...kn搜索到的概率。 第二行n+1个实数d0,d1,...dn,表示n+1个虚拟键搜索到的概率。输出描述 一个实数,表示平均搜索每个结点的访问结点数的值。输入样例 15 0.1 0.05 0.1 0.2 0.05 0.1 0.05 0.05 0.05 0.1输出样例 一个实数,保留两位小数结果值(743点数解答 | 2024-05-30 18:04:31)255