线性规划--北太天元学习15
我们在北太天元里学习了线性方程组的求解,实际上我们已经做好了线性规划的准备。 线性规划是高中的一部分,线性规划的内容请大家看课本内容。 简单的说,就是我们要求变量 x_1 , x_2, ... , x_n 的某个值,使得目标函数 f(x_1, ... , x_n) = c_1 x_1 + ... + c_n x_n 取的最小值, 其中 c_1, ..., c_n 是给定的常数, x_1, ... , x_n 同时还要满足约束
r_{l_1} <= a_{1,1} x_1 + ... + a_{1,n} x_n <= r_{u_1}
...
r_{l_m} <=a_{m,1} x_1 + ... + a_{m,n} x_n <= r_{u_m}
和 c_{u_i} <= x_i <= c_{u_i} , i = 1, ... , n .
有时候还要加上某些 x_i 是整数的额外约束。

我们还是以一个具体的例子来讲

在高中的时候,我们仅仅学习了两个变量的情形,此时可以用画图法来求解,但是即使只有两个变量,求解也不是一个容易的事情,特别还要求所求的变量取整数的情形。我用北太天元演示一下画图法
在演示的过程中,我用了 area 画图,area的一个例子如下

具体的画图法求解线性规划问题的内容见视频,整个过程是枯燥无味的,到了视频的最后几分钟你会发现使用北太天元的插件,求解是那么的轻松,从而你可以把你的聪明智慧用在数学建模上,而是在枯燥无味的求解上。
附上最后求解该问题的北太天元脚本代码:
load_plugin("optimization"); %加载插件
%设置求解参数,可以不变
opts = struct();
opts.Display = 'off';
%线性规划问题的目标函数 f = -80 x_{1} -120 x_{2} 用下面的 f = [-80, -120] 表示
f = [-80, -120];
% 两个不等式约束
A = sparse([0.1 0.2; 2 1]);
rl = [];
ru = [90; 600];
%自变量的上界和下界
cl = [0; 0]; %下界
cu = [inf, inf]; %上界, 对上界没有约束
intcon = [1, 2]; %整数 , 指明第1个和第2个变量只能取整数
%求解
[x, output] = intlinprog_hgs(f, intcon, A, rl, ru, cl, cu, opts)
% x 是目标函数最小值点
% output.val 是目标函数的最小值, 目标函数的最小值也可以用f*x 获得