LINGO
线性规划问题
约束条件4x+3y<=10,3x+5y<=12,x,y是整数,求z=2x+3y的最大值。
在解决这道比较简单的数学规划问题,作为高中党,可以在平面直角坐标系中完成。当然我们也能在lingo软件中轻松完成。代码如下
MODEL:
MAX=2*X+3*Y;
4*X+3*Y<10;
3*X+5*Y<12;
GIN(X);@GIN(Y);
END
运行结果如下
可以找到x=0,y=2满足题目要求
非线性规划问题
lingo对于非线性规划问题,给出的结果方案也是不错的,能够很好解决我们在高中所碰到的这些问题。
例如我们要解决这个问题,该如何去做呢?
MODEL:
MAX=(X-3)^2+(Y-2)^2;
X^2+Y^2-5<=0;
X+2*Y-4<=0;
X>=0;
Y>=0;
END
运行结果如下
目标函数的解是13,此时x=0,y=0.
matlab
MATLAB作为重要的数学软件,已经广泛应用与理工科的研究中,对于数学建模过程中提供计算机技术上的支持。MATLAB可以说很强大。那么关于线性规划的问题,MATLAB也是手到擒来。
线性规划
例如:某机床厂生产甲、乙两种机床,每台销售后的利润分别为 4000 元与 3000 元。
生产甲机床需用 A、B 机器加工,加工时间分别为每台 2 小时和 1 小时;生产乙机床
需用 A、B、C 三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时
数分别为 A 机器 10 小时、B 机器 8 小时和C 机器 7 小时,问该厂应生产甲、乙机床各
几台,才能使总利润最大?
在matlab的代码应该如下:
c=[4;3];
a=[2,1;1,1;0,7];
b=[10;8;7];
[x,y]=linprog(c,a,b,[],[],zeros(3,1))
非线性规划问题
matlab的实现不如lingo实现好,毕竟MATLAB是在矩阵的基础上,如果MATLAB需要实现非线性规划问题的求解,需要使用.m的文件,要求稍高一点。
总而言之,对于新手来说。解决线性规划问题,推荐使用lingo进行解决,较为快捷便利。如果是MATLAB高手,那么则考虑MATLAB。