2015-09-07 115 views
0

我在想如果有人能告诉我在mathematica中的编码。我已经枫编码如下:Mathematica中的优化

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) 
+0

findminimum或nminimize。 – agentp

+0

我仍然不明白如何设置它。 –

回答

0

您可以设置的目标函数和约束条件几乎为枫树,除了你的符号不应该用大写字母开头,因为这些是保留给数学的关键字,行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}] 

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

(您也可以使用NMinimize; FindMinimum使用本地,基于梯度的优化方法,如牛顿,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]}]] 

enter image description here