目录
实验报告
作业1:书上第47页的第1题。给出数学模型、写出MATLAB命令、给出运行结果。
数学模型:
设x 为每天动物饲料的总用量(千克),y为每天谷物饲料的总用量(千克)。
目标函数: 最小化总成本。总成本 = 0.30x +0.18y。
约束条件:
- 饲料总量约束:x +y=500(1000只鸡每天0.5千克)
- 动物饲料比例约束:x ≥0.20×(x +y)
- 谷物饲料供应限制:y≤6000/7(每周6000千克,换算为每天)
- 非负约束:x ,y≥0
数学模型:
Minimize 0.30x+0.18y
subject to x +y=500
x ≥0.20(x +y)
y≤6000/7/7
x ,y ≥0
Matlab:

作业2:书上第47页的第2题。给出数学模型、写出MATLAB命令、给出运行结果。
数学模型:
定义变量:
- xij :机床i 加工零件j 的数量,其中i =1,2表示A1和A2机床,j=1,2,3表示B1、B2、B3零件。
目标函数:
最小化总成本。总成本 = ∑i =12∑j =13cij xij ,其中cij 是机床i 加工零件j的单位成本。
约束条件:
- 每种零件的加工数量要满足需求:对于所有j ,x 1j +x 2j =dj ,其中dj 是零件j的需求量。
- 机床工作时间限制:对于机床1,∑j =13t 1j x 1j ≤80;对于机床2,∑j =13t 2j x 2j ≤100,其中tij 是机床i 加工零件j所需的时间。
- 非负约束:对于所有 i 和j ,xij≥0。
数学模型:
Minimize 2x 11+3x 12+5x 13+3x 21+3x 22+6x23
subject to x 11+x21=70
x 12+x22=50
x 13+x23=20
x 11+2x 12+3x13≤80
x 21+x 22+3x23≤100
xij ≥0 for all i =1,2 and j=1,2,3
Matlab:

作业3:德克萨斯州海岸有一个小型炼油厂。炼油厂的原油来源于两个产地:沙特阿拉伯和委内瑞拉。炼油厂通过蒸馏等技术把原油精炼成三种产品:汽油、气体燃料以及润滑油。由于两个原产地的原油有着不同的化学构成,它们可以精炼出不同的产品组合。每桶沙特阿拉伯原油可精炼出0.3桶汽油、0.4桶气体燃料以及0.2桶润滑油,剩余0.1桶为精炼损失;而每桶委内瑞拉原油可精炼出0.4桶汽油、0.2桶气体燃料以及0.3桶润滑油,剩余0.1桶为精炼损失。同时,两个原产地原油的成本及供应量也不同。炼油厂每天最多可购得9000桶沙特阿拉伯原油,每桶单价100美金;每天最多只能购得6000桶委内瑞拉原油,每桶单价75美金。炼油厂生产出精炼产品供应给不同的批发商。批发商之间相互独立,所有批发商的需求之和为每天2000桶汽油、1500桶气体燃料以及500桶润滑油。
炼油厂应该怎样制定生产计划才能最有效地满足需求?建立相应的数学规划模型;
设x1为每天购买的沙特阿拉伯原油数量(桶),x2为每天购买的委内瑞拉原油数量(桶)。
目标函数: 最小化总成本。总成本 = 100x1+75x2
约束条件:
对汽油:0.3x1+0.4x2≥2000(满足2000桶的需求)
对气体燃料:0.4x1+0.2x2≥1500(满足1500桶的需求)
对润滑油:0.2x1+0.3x2≥500(满足500桶的需求)
原油购买限制:x1≤9000,x2≤6000
非负约束:x1,x2≥0
Minimize 100x1+75x2
subject to 100x 1+75x2
0.3x 1+0.4x2≥2000
0.4x 1+0.2x2≥1500
0.2x 1+0.3x2≥500
x1≤9000
x2≤6000
x 1,x2≥0
(2)利用Matlab求解该模型(写出MATLAB命令、给出运行结果)。

代码
Matlab
%% 线性规划作业 完整MATLAB代码
% 清空环境变量
clear; clc; close all;
fprintf('========== 线性规划作业求解 ==========\n');
%% ==================== 作业1:饲料配比问题 ====================
fprintf('\n--- 作业1:饲料配比问题 ---\n');
% 数学模型
% min 0.30x + 0.18y
% s.t.
% x + y = 500
% -0.8x + 0.2y <= 0 (由x>=0.2(x+y)转换)
% y <= 6000/7
% x>=0, y>=0
% 目标函数系数
f1 = [0.30; 0.18];
% 不等式约束 A1*x <= b1
A1 = [-0.8, 0.2;
0, 1];
b1 = [0; 6000/7];
% 等式约束 Aeq1*x = beq1
Aeq1 = [1, 1];
beq1 = 500;
% 变量上下界
lb1 = [0; 0];
ub1 = [];
% 求解
[x1, fval1] = linprog(f1, A1, b1, Aeq1, beq1, lb1, ub1);
% 输出结果
fprintf('最优解:\n');
fprintf('动物饲料用量x = %.4f 千克\n', x1(1));
fprintf('谷物饲料用量y = %.4f 千克\n', x1(2));
fprintf('最小总成本 = %.4f 元\n', fval1);
%% ==================== 作业2:机床加工调度问题 ====================
fprintf('\n--- 作业2:机床加工调度问题 ---\n');
% 决策变量向量化:x11,x12,x13,x21,x22,x23
% 目标函数 min 2x11+3x12+5x13+3x21+3x22+6x23
f2 = [2;3;5;3;3;6];
% 不等式约束(工时限制)
A2 = [1,2,3,0,0,0;
0,0,0,1,1,3];
b2 = [80; 100];
% 等式约束(需求满足)
Aeq2 = [1,0,0,1,0,0;
0,1,0,0,1,0;
0,0,1,0,0,1];
beq2 = [70;50;20];
% 变量非负约束
lb2 = zeros(6,1);
ub2 = [];
% 求解
[x2, fval2] = linprog(f2, A2, b2, Aeq2, beq2, lb2, ub2);
% 输出结果
fprintf('最优解:\n');
fprintf('机床1加工B1:x11 = %.4f\n', x2(1));
fprintf('机床1加工B2:x12 = %.4f\n', x2(2));
fprintf('机床1加工B3:x13 = %.4f\n', x2(3));
fprintf('机床2加工B1:x21 = %.4f\n', x2(4));
fprintf('机床2加工B2:x22 = %.4f\n', x2(5));
fprintf('机床2加工B3:x23 = %.4f\n', x2(6));
fprintf('最小加工总成本 = %.4f\n', fval2);
%% ==================== 作业3:炼油厂生产计划问题 ====================
fprintf('\n--- 作业3:炼油厂生产计划问题 ---\n');
% 数学模型
% min 100x1 +75x2
% s.t.
% 0.3x1+0.4x2 >=2000
% 0.4x1+0.2x2 >=1500
% 0.2x1+0.3x2 >=500
% x1<=9000, x2<=6000
% x1,x2>=0
% 目标函数
f3 = [100; 75];
% 不等式约束(≥转换为≤)
A3 = [-0.3, -0.4;
-0.4, -0.2;
-0.2, -0.3;
1, 0;
0, 1];
b3 = [-2000; -1500; -500; 9000; 6000];
% 无等式约束
Aeq3 = [];
beq3 = [];
% 变量边界
lb3 = [0; 0];
ub3 = [];
% 求解
[x3, fval3] = linprog(f3, A3, b3, Aeq3, beq3, lb3, ub3);
% 输出结果
fprintf('最优解:\n');
fprintf('沙特阿拉伯原油采购量x1 = %.4f 桶\n', x3(1));
fprintf('委内瑞拉原油采购量x2 = %.4f 桶\n', x3(2));
fprintf('最小总成本 = %.4f 美元\n', fval3);
fprintf('\n========== 所有作业求解完成 ==========\n');
实验心得
本次实验围绕线性规划建模与 MATLAB 优化求解展开,通过完成饲料配比、机床加工调度、炼油厂生产计划三道典型实际问题,系统掌握了线性规划的建模方法、MATLAB 求解流程及结果分析能力,深刻体会到数学规划在工程、生产、资源配置中的实用价值。
实验核心是将实际问题转化为标准线性规划模型,这是求解的关键前提。建模过程中,我学会了明确决策变量、构建目标函数、梳理约束条件的完整步骤:决策变量代表待优化的未知量,需结合问题需求精准定义;目标函数根据成本最小化或收益最大化目标构建,是优化的核心导向;约束条件则对应资源限制、需求满足、比例要求等实际规则,必须全面且严谨。在饲料配比问题中,需将每周供应量换算为每日约束,修正比例约束的等价形式,保证模型的准确性;机床调度问题涉及多变量建模,需将二维决策变量向量化,适配 MATLAB 求解格式;炼油厂问题需结合产品产出比例、原料供应上限、市场需求构建约束,让我理解了复杂实际问题的建模逻辑。
MATLAB 线性规划求解是实验的核心操作环节,通过linprog函数的应用,我掌握了标准线性规划的求解方法。实验中明确了linprog函数的参数规则:目标函数系数向量、不等式约束矩阵与右端向量、等式约束矩阵与右端向量、变量上下界,同时掌握了将≥约束转化为标准≤形式、等式约束单独定义、多变量向量化处理等关键技巧。调试代码时,我解决了约束条件符号错误、变量维度不匹配、参数输入错误等问题,提升了代码调试与问题排查能力,理解了编程严谨性对求解结果的重要性。
结果分析环节让我认识到建模与求解的最终意义。通过解读最优解和最优目标函数值,能够得到实际问题的最优决策方案:饲料配比问题确定了动物饲料与谷物饲料的最佳用量,实现总成本最低;机床调度问题得到了各机床加工各零件的最优数量,平衡了加工成本与工时限制;炼油厂问题明确了两种原油的最佳采购量,在满足市场需求的前提下最小化生产成本。所有求解结果均满足全部约束条件,验证了模型的合理性与求解的正确性,让我切实感受到数学规划将实际问题量化、优化决策的强大作用。
本次实验也让我理解了线性规划的适用场景与核心价值,它是解决资源有限条件下最优配置问题的高效工具,广泛应用于生产管理、物流调度、化工生产等领域。建模过程培养了逻辑思维与抽象概括能力,将复杂实际问题简化为数学模型;求解过程提升了编程实操能力,熟练运用软件工具解决数学问题;结果分析则建立了数学模型与实际应用的连接,让优化结果服务于实际决策。
通过本次实验,我不仅掌握了线性规划建模与 MATLAB 求解的专业技能,更培养了理论联系实际、用数学方法解决工程问题的思维。未来在面对各类资源配置、成本优化问题时,能够快速建立数学模型,借助软件工具高效求解,为实际生产和决策提供科学依据,同时也认识到建模的严谨性、参数设置的准确性是保证优化结果可靠的关键,为后续更复杂的优化问题学习奠定了坚实基础。