数学建模理论学习:线性规划模型

2024-06-21 12:20

本文主要是介绍数学建模理论学习:线性规划模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

三要素:目标函数、约束条件(s.t.)、决策变量(x)

目标函数:z = ax1 + bx2 + cx3 + ...

其中c为一个序列,从左到右依次从x1到xn的系数

解决下面的线性规划问题:

% 目标函数系数:-x1 - 2x2
f = [-1; -2]; % 不等式约束 Ax <= b
% A向量表示决策变量的系数,B向量表示的是对应的条件,若不符合Ax <= b需进行初等变换
A = [1, 1; 2, 1; 1, 2];
b = [2; 3; 3];% 等式约束 Aeq x = beq(如果没有等式约束,则设置为空矩阵)
Aeq = [];
beq = [];% 变量下界和上界(如果没有界限约束,可以设置为空数组)
% lb表示决策变量的下界, ub表示决策变量的上界
lb = zeros(2, 1);
ub = [];% 调用 linprog 函数
[x, fval, exitflag, output] = linprog(f, A, b, Aeq, beq, lb, ub);% 显示结果
disp('最优解 x:')
disp(x)
disp('最优目标函数值 fval:')
disp(fval)
disp('退出标志 exitflag:')
disp(exitflag)
disp('输出信息 output:')
disp(output)

linprog函数:

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

 

用linprog函数只能求解目标函数的最小值,如果我们需要求解最大值则需要加上符号变换一下即可:

% 建立目标函数
f = [-4, -3];% 建立约束条件
% Ax <= B
A = [2,1;1,1;0,1];
b = [40;8;7];
% A1x1 + A2x2 = B
Aeq = [];
Beq = [];
% x1, x2 的公共上界下界
lb = zeros(2,1);
ub = [];% 设置优化选项
options = optimoptions('linprog', 'Display', 'iter');% 求解线性规划结果
[x, fval, exitflag, output] = linprog(f, A, b, Aeq, Beq, lb, ub);
fval = -fval;% 输出结果
disp('最优解:')
disp(x)
disp('最优函数值:')
disp(fval)
disp(exitflag)
disp(output)

以下是对该目标函数的图像:

% 建立目标函数
f = [-4, -3];% 建立约束条件
A = [2, 1; 1, 1; 0, 1];
b = [40; 8; 7];% 变量下界
lb = zeros(2, 1);% 求解线性规划问题
[x, fval, exitflag, output] = linprog(f, A, b, [], [], lb, []);% 将最小化结果转换为最大化结果
fval = -fval;% 设置绘图范围
% 0 - 10 400个等间隔点的向量
x1 = linspace(0, 10, 400);
x2 = linspace(0, 10, 400);
% 0-10的正方形区间画等高线:
% 利用x1和x2两个向量声场两个400 * 400的矩阵X1, X2
[X1, X2] = meshgrid(x1, x2);% 计算目标函数值
Z = 4*X1 + 3*X2;% 绘制等高线
% 创建新的图形窗口
figure;
% 在指定范围内绘制20条等高线
contour(X1, X2, Z, 20); hold on;% 绘制约束条件
% 根据约束条件总结出约束范围:
fill([0, 0, 20, 20], [7, 0, 0, 7], 'b', 'FaceAlpha', 0.1); % x2 <= 7
fill([0, 8, 0], [8, 0, 0], 'g', 'FaceAlpha', 0.1); % x1 + x2 <= 8
fill([0, 20, 0], [0, 0, 40], 'r', 'FaceAlpha', 0.1); % 2x1 + x2 <= 40% 标记最优解
% MarkSize 标记点的大小 MarkFaceColor 标记点的颜色
plot(x(1), x(2), 'ro', 'MarkerSize', 10, 'MarkerFaceColor', 'r');% 标注和图例
xlabel('x1');
ylabel('x2');
title('线性规划问题的目标函数与约束条件');
legend('目标函数等高线', 'x2 <= 7', 'x1 + x2 <= 8', '2x1 + x2 <= 40', '最优解');
% 显示网格:
grid on;
% 取消绘图保持状态,使得下一次绘图会清除当前图形内容
hold off;

若目标函数不是线性函数:

例子:

 

这篇关于数学建模理论学习:线性规划模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081209

相关文章

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA