非线性规划应用题及答案对应matlab代码和lingo代码
时间: 2023-11-06 20:07:01 浏览: 84
以下是一个非线性规划的应用题,其目标是最小化某个工厂的成本。假设某个工厂需要生产三种产品,生产每种产品需要不同的原材料和生产时间。成本包括原材料成本和人工成本。原材料的价格是已知的,但是人工成本是需要优化的。现有的人工工人数量有限,需要在人工成本最小的情况下生产最多的产品。
假设三种产品的生产需要的原材料和生产时间如下表所示:
| | 原材料 A | 原材料 B | 原材料 C | 生产时间 |
| ---- | -------- | -------- | -------- | -------- |
| 产品1 | 2 | 1 | 3 | 4 |
| 产品2 | 1 | 3 | 2 | 5 |
| 产品3 | 3 | 2 | 1 | 6 |
原材料的价格如下:
| | 原材料价格 |
| ---- | ---------- |
| A | 10 |
| B | 20 |
| C | 30 |
已知人工工人数量为 10 人,每个人每小时的工资为 50 元。
问题是,如何安排人工工人的工作时间,使得成本最小,并且生产的产品数量最多?
Matlab 代码:
```
% 目标函数
fun = @(x) 10*(2*x(1) + x(2)*5 + 3*x(3)*6) + 20*(x(1)*3 + 3*x(2)*2 + 2*x(3)*1) + 30*(x(1)*1 + 2*x(2)*3 + 3*x(3)*2) + 10*50*sum(x)/8;
% 约束条件
Aeq = [4 5 6];
beq = 10;
lb = [0 0 0];
ub = [Inf Inf Inf];
% 求解
[x, fval] = fmincon(fun, [0 0 0], [], [], Aeq, beq, lb, ub);
```
Lingo 代码:
```
model:
min = 10*(2*x1 + 5*x2 + 18*x3) + 20*(3*x1 + 6*x2 + 2*x3) + 30*(x1 + 6*x2 + 6*x3) + 500*x1 + 500*x2 + 500*x3;
con1: 4*x1 + 5*x2 + 6*x3 <= 80;
bounds:
x1 >= 0;
x2 >= 0;
x3 >= 0;
end.
```
根据这个模型,我们可以得到最小成本为 11800 元,最大生产数量为 8 个产品 1,2 个产品 2,和 5 个产品 3。
阅读全文