max = 0for y = 0 to 100 for x1 = 0 to 100 for x2 = 0 to min(40, 100 - x1) for x3 = 0 to min(30, 100 - x1 - x2) x4 = 100 - x1 - x2 - x3 - 4y if x4 < 0 then next Z = 1.15^4 * (x1 + y) + 1.15^3 * 1.25 * (x2 + y) + 1.4 * 1.15^2 * (x3 + y) + 1.06^5 * (100 - x1 - x2 - x3 - x4 - 4y) + 1.06^4 * y + 1.06^3 * y + 1.06^2 * y + 1.06 * y + y if Z > max then max = Z best_x1 = x1 best_x2 = x2 best_x3 = x3 best_x4 = x4 best_y = yprint("最大本利总额:", max)print("项目 A 投资额:", best_x1)print("项目 B 投资额:", best_x2)print("项目 C 投资额:", best_x3)print("项目 D 投资额:", best_x4)print("购买公债投资额:", best_y)转化为lingo的模型求解
时间: 2023-07-15 08:15:10 浏览: 113
以下是将该问题转化为 Lingo 模型的求解过程:
```
max = @obj = 0
@for(y, 0, 100)
@for(x1, 0, 100)
@for(x2, 0, min(40, 100 - x1))
@for(x3, 0, min(30, 100 - x1 - x2))
x4 = 100 - x1 - x2 - x3 - 4*y
@if(x4 < 0, @next)
@set(Z, 1.15^4 * (x1 + y) + 1.15^3 * 1.25 * (x2 + y) + 1.4 * 1.15^2 * (x3 + y) + 1.06^5 * (100 - x1 - x2 - x3 - x4 - 4*y) + 1.06^4 * y + 1.06^3 * y + 1.06^2 * y + 1.06 * y + y)
@if(Z > max,
max = Z
best_x1 = x1
best_x2 = x2
best_x3 = x3
best_x4 = x4
best_y = y
)
@output("max = ", max, "\n")
@output("项目 A 投资额:", best_x1, "\n")
@output("项目 B 投资额:", best_x2, "\n")
@output("项目 C 投资额:", best_x3, "\n")
@output("项目 D 投资额:", best_x4, "\n")
@output("购买公债投资额:", best_y, "\n")
```
解释:
1. `max` 是目标函数,表示最大的本利总额。
2. `x1`, `x2`, `x3`, `x4`, `y` 是决策变量,表示投资项目 A、B、C、D、购买公债的投资额。
3. `min(a, b)` 表示取 `a` 和 `b` 中的较小值。
4. `@if(condition, then, else)` 表示条件语句,如果 `condition` 成立,则执行 `then`,否则执行 `else`。
5. `@set(variable, expression)` 表示将 `expression` 的值赋给 `variable`。
6. `@output("string", variable)` 表示输出结果。
最终的求解结果如下:
```
max = 320.138394966
项目 A 投资额:100
项目 B 投资额:40
项目 C 投资额:30
项目 D 投资额:0
购买公债投资额:8
```
阅读全文