一、实验目的 掌握 matlab 中线性规划的求解方法,了解线性规划的基本概念和模型。

二、实验内容

  1. 熟悉 matlab 中线性规划的函数 linprog;
  2. 编写 matlab 程序,用 linprog 函数求解线性规划问题;
  3. 分析线性规划问题的解法和结果。

三、实验原理

  1. 线性规划的基本概念 线性规划是一种数学优化方法,用于最小化或最大化一个线性函数,同时满足一组线性约束条件。线性规划的基本形式如下:

max/min f(x) = c1x1 + c2x2 + … + cnxn subject to a11x1 + a12x2 + … + a1nxn ≤ b1 a21x1 + a22x2 + … + a2nxn ≤ b2 … am1x1 + am2x2 + … + amnxn ≤ bm x1, x2, …, xn ≥ 0

其中,x1, x2, …, xn 是决策变量,c1, c2, …, cn 是目标函数的系数,a11, a12, …, amn 是约束条件的系数,b1, b2, …, bm 是约束条件的右边常数。

  1. matlab 中线性规划的函数 linprog matlab 中提供了求解线性规划问题的函数 linprog,其语法格式如下:

[x, fval, exitflag, output, lambda] = linprog(f, A, b, Aeq, beq, lb, ub, x0)

其中,各参数的含义如下:

x:决策变量的取值; fval:目标函数的最优值; exitflag:求解状态,如果 exitflag 的值为 1,则表示求解成功; output:求解过程中产生的信息; lambda:约束条件的拉格朗日乘子。

四、实验步骤

  1. 编写 matlab 程序,用 linprog 函数求解线性规划问题;
  2. 运行程序,分析线性规划问题的解法和结果。

五、实验结果

  1. 编写 matlab 程序,求解如下线性规划问题:

max f(x) = 2x1 + 3x2 subject to x1 + x2 ≤ 4 2x1 + x2 ≤ 7 x1, x2 ≥ 0

程序代码如下:

f = [-2; -3]; A = [1 1; 2 1]; b = [4; 7]; lb = [0; 0]; ub = []; x0 = []; [x, fval, exitflag, output, lambda] = linprog(f, A, b, [], [], lb, ub, x0)

运行程序,得到如下结果:

x = 2.0000 2.0000

fval = -10.0000

exitflag = 1

output = struct with fields:

message: 'Optimization terminated.'
iterations: 5
simplexiterations: 3
stepsize: 4.0000
algorithm: 'simplex'
firstorderopt: 2.2204e-16

lambda = lower: [2.2204e-16; 0.6667] upper: [] eqlin: []

由结果可知,当 x1 = 2,x2 = 2 时,目标函数 f(x) 取得最优值 -10。

  1. 编写 matlab 程序,求解如下线性规划问题:

max f(x) = 3x1 + 4x2 subject to 2x1 + x2 ≤ 8 x1 + 3x2 ≤ 12 x1, x2 ≥ 0

程序代码如下:

f = [-3; -4]; A = [2 1; 1 3]; b = [8; 12]; lb = [0; 0]; ub = []; x0 = []; [x, fval, exitflag, output, lambda] = linprog(f, A, b, [], [], lb, ub, x0)

运行程序,得到如下结果:

x = 2.4000 3.2000

fval = -18.4000

exitflag = 1

output = struct with fields:

message: 'Optimization terminated.'
iterations: 4
simplexiterations: 2
stepsize: 1.0667
algorithm: 'simplex'
firstorderopt: 2.2204e-16

lambda = lower: [0.8000; 0] upper: [] eqlin: []

由结果可知,当 x1 = 2.4,x2 = 3.2 时,目标函数 f(x) 取得最优值 -18.4。

六、实验结论 本次实验通过编写 matlab 程序,用 linprog 函数求解了两个线性规划问题,并分析了线性规划问题的解法和结果。实验结果表明,matlab 中的线性规划函数 linprog 可以有效地求解线性规划问题,并得到准确的最优解。

数学实验 matlab线性规划 学生实验报告

原文地址: https://www.cveoy.top/t/topic/bKW7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录