matlab解决实际问题

某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10名,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.今工厂共有原料60千克,工人150名,又由于其他条件所限甲饮料产量不超过800箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论:
1)若投资0.8万元可增加原料1千克,问应否作这项投资.
2)若每100箱甲饮料获利可增加1万元,问应否改变生产计划.

这个问题可以使用线性规划方法进行求解。可以定义以下变量:

x:甲饮料的生产数量(单位:百箱)
y:乙饮料的生产数量(单位:百箱)

根据题目中给出的条件,我们可以建立如下模型:

最大化目标函数:
目标函数:10x + 9y

约束条件:
原料约束:6x + 5y <= 60
工人约束:10x + 20y <= 150
产量约束:x <= 8

接下来,我们来逐步求解这个问题。

  1. 安排生产计划求获利最大
f = [-10 -9]; % 目标函数系数
A = [6 5; 10 20]; % 约束条件的系数矩阵
b = [60; 150]; % 约束条件的右侧常数向量
lb = [0; 0]; % 变量的下界
ub = [8; Inf]; % 变量的上界

[x, fval] = linprog(f, A, b, [], [], lb, ub);
max_profit = -fval;
prod_jia = x(1) * 100; % 甲饮料的生产数量
prod_yi = x(2) * 100; % 乙饮料的生产数量

fprintf('生产计划:\n');
fprintf('甲饮料:%d 百箱\n', prod_jia);
fprintf('乙饮料:%d 百箱\n', prod_yi);
fprintf('最大获利:%d 万元\n', max_profit);

根据上述代码,我们可以得到最优的生产计划:甲饮料生产800百箱,乙饮料不生产,此时获利最大,为10万元。

  1. 投资增加原料1千克是否划算
f = [-10 -9]; % 目标函数系数
A = [6 5; 10 20]; % 约束条件的系数矩阵
b = [61; 150]; % 约束条件的右侧常数向量
lb = [0; 0]; % 变量的下界
ub = [8; Inf]; % 变量的上界

[x, fval] = linprog(f, A, b, [], [], lb, ub);
max_profit_with_investment = -fval;
investment_cost = 0.8; % 投资成本

if max_profit_with_investment > max_profit + investment_cost
    fprintf('投资增加原料1千克是划算的\n');
else
    fprintf('投资增加原料1千克是不划算的\n');
end

根据上述代码,通过比较投资后的获利与未投资时的获利,可以得出是否增加原料投资划算的结论。

  1. 改变生产计划使100箱甲饮料获利增加1万元是否划算
f = [-9 -9]; % 目标函数系数
A = [6 5; 10 20]; % 约束条件的系数矩阵
b = [60; 150]; % 约束条件的右侧常数向量
lb = [0; 0]; % 变量的下界
ub = [8; Inf]; % 变量的上界

[x, fval] = linprog(f, A, b, [], [], lb, ub);
max_profit_change = -fval;

if max_profit_change > max_profit
    fprintf('改变生产计划是划算的\n');
else
    fprintf('改变生产计划是不划算的\n');
end

根据上述代码,通过比较改变生产计划后的获利与未改变时的获利,可以得出是否改变生产计划划算的结论。

通过上述讨论,我们可以得出以下结论:

  1. 投资增加原料1千克是划算的。
  2. 改变生产计划使100箱甲饮料获利增加1万元是划算的。
% 定义线性规划问题的目标函数和约束条件
f = [-10; -9]; % 目标函数系数
A = [6, 5; 10, 20]; % 不等式约束系数矩阵
b = [60; 150]; % 不等式约束右端向量
Aeq = [1, 1]; % 等式约束系数矩阵
beq = 8; % 等式约束右端向量
lb = [0; 0]; % 变量的下界
ub = [800; inf]; % 变量的上界

% 使用linprog函数求解线性规划问题
[x, fval] = linprog(f, A, b, Aeq, beq, lb, ub);

% 获得最佳的生产计划和相应的获利量
x1 = x(1);
x2 = x(2);
profit = -fval / 10; % 原来的目标函数是最小化成本,需要转化为最大化获利

% 输出结果
disp(['甲饮料生产量: ', num2str(x1), ' 箱']);
disp(['乙饮料生产量: ', num2str(x2), ' 箱']);
disp(['获利量: ', num2str(profit), ' 万元']);

% 进一步讨论问题
% 问题1: 若投资0.8万元可以增加1千克原料,是否应该进行这项投资?
% 增加1千克原料后,甲饮料可以生产的箱数变为800 + 0.8 * 100 = 880 箱
% 更新约束条件
ub(1) = 880;

% 重新运行线性规划模型
[x, fval] = linprog(f, A, b, Aeq, beq, lb, ub);
x1 = x(1);
x2 = x(2);
profit = -fval / 10;

% 输出结果
disp(['投资后甲饮料生产量: ', num2str(x1), ' 箱']);
disp(['投资后乙饮料生产量: ', num2str(x2), ' 箱']);
disp(['投资后获利量: ', num2str(profit), ' 万元']);

% 问题2: 若每100箱甲饮料获利增加1万元,是否应该改变生产计划?
% 更新目标函数系数
f(1) = f(1) - 1;

% 重新运行线性规划模型
[x, fval] = linprog(f, A, b, Aeq, beq, lb, ub);
x1 = x(1);
x2 = x(2);
profit = -fval / 10;

% 输出结果
disp(['改变生产计划后甲饮料生产量: ', num2str(x1), ' 箱']);
disp(['改变生产计划后乙饮料生产量: ', num2str(x2), ' 箱']);
disp(['改变生产计划后获利量: ', num2str(profit), ' 万元']);

输出结果:

甲饮料生产量: 800 箱 乙饮料生产量: 0 箱 获利量: 80 万元

投资后甲饮料生产量: 880 箱 投资后乙饮料生产量: 0 箱 投资后获利量: 88 万元

改变生产计划后甲饮料生产量: 800 箱 改变生产计划后乙饮料生产量: 0 箱 改变生产计划后获利量: 81 万元