Can we get gradient of a linear programming problem ?
3 次查看(过去 30 天)
显示 更早的评论
How can we get the gradient of the objective function of a linear programming problem in MATLAB.
i.e
if the problem looks as follows
Maximize Z = f(x,y)------------------------- (1)
If we fix y=1;
Let the solution to (1)is Z1.
If we fix y=2;(i.e) unit increase
Let the solution to (1) is Z2.
Then the gradient of f(x,y) at y=1 is Z2-Z1/(2-1)
0 个评论
采纳的回答
J. Alex Lee
2018-7-23
Your example actually only gave 1 component of the gradient, at an unspecified fixed value of x. The gradient of your scalar function f(x,y) is a vectorial quantity with components in both x and y directions, so at any given set of coordinates (x1,y1), there will be 2 gradient components w1 and v1.
There is a function "gradient" in base matlab since R2006a, if you want to compute your objective function on a grid (Matlab's definition of a well-defined grid) and compute the gradient numerically from that.
x = xMin:d:xMax
y = yMin:d:yMax
[X,Y] = meshgrid(x,y)
Z = f(X,Y)
[W,V] = gradient(Z,d)
This method depends on the resolution of the grid that you pre-compute on, as I believe the gradient function simply implements a centered finite difference on the grid, with maybe some special consideration at the edge.
If you are ultimately interested in the optimization of f(x,y), a non-gradient method for optimizing would probably be pretty easy/fast in 2 dimensions? There is "fminsearch" in base matlab that could be useful.
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Get Started with Optimization Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!