【问题标题】:Optimization in MathematicaMathematica 中的优化
【发布时间】:2015-09-07 03:39:11
【问题描述】:

我想知道是否有人可以告诉我数学中的编码。我的 Maple 编码如下:

with(Optimization):
objectiveFunction := 0.30x1 + 0.15x2

N: = 0.04x1 + 0.08x2 >= 25.4
P: = 0.08x1 + 0.04x2 >= 26.4

Solve(N,x2)
Solve(P,x2)

Plot([-0.5x1 + 320, -2x1 + 960], x1 = 200..1500, x2 = -200...1500)

【问题讨论】:

  • findminimum 或 nminimize。
  • 我还是不明白怎么设置。

标签: wolfram-mathematica mathematical-optimization maple


【解决方案1】:

您几乎可以像在 Maple 中一样设置目标函数和约束,只是您的符号不应以大写字母开头,因为这些符号是为 Mathematica 关键字保留的,N 行:

objectiveFunction = 0.30 x1 + 0.15 x2;
n = 0.04 x1 + 0.08 x2 >= 25.4;
p = 0.08 x1 + 0.04 x2 >= 26.4;

然后你可以简单地将它们传递给 FindMinimum

{objectiveValue, solution} = FindMinimum[{objectiveFunction, n, p}, {x1, x2}]

输出[...] = {99., {x1 -> 228.333, x2 -> 203.333}}

(您也可以使用NMinimizeFindMinimum 使用局部的、基于梯度的优化方法,如牛顿的,NMinimize 尝试全局优化。在这种情况下,两个函数都应该知道这是一个线性规划问题。)

我不确定你的情节在做什么,但我可以尝试将结果可视化:

Show[
 ContourPlot[objectiveFunction, {x1, 200, 1500}, {x2, -200, 1500}],
 RegionPlot[n && p, {x1, 200, 1500}, {x2, -200, 1500}, 
  PlotStyle -> Directive[White, Opacity[0.2]], 
  BoundaryStyle -> Directive[Red, Dashed]],
 Graphics[{Red, PointSize[Large], Point[{x1, x2} /. solution]}]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多