目录

  • 单目标线性规划
  • 多目标线性规划
    • 理想解法
    • 线性加权法
    • 最大最小法
    • 目标规划法
    • 模糊数学解法

单目标线性规划

MATLAB中有一个专门求解线性规划问题的函数:linprog(),其使用方法如下:
[x,fval]=linprog(c,A,b,Aeq,beq,lb,ub,x0,options)
用于求解以下模型

其中fval表示最优解处的目标函数值,lb和ub分别表示决策变量的下界和上界,若不存在可以用空矩阵代替,x0表示迭代初始点,options是控制参数,用于指定模型求解算法、计算精度和最大迭代次数等

例:

求解:

f = [3 -1 -1];
A = [1 -2 1;4 -1 -2];
b = [11,-3]';
Aeq = [-2 0 1];
beq = [1];
[x,y] = linprog(-f,A,b,Aeq,beq,zeros(3,1));
z = y


求解:

%这里是一个到线性规划的转换,要做一个变量的变换,把每一个绝对值x都替换成一个u和v的表示变量
%如: u = (x + |x|) / 2 v = (|x| - x) / 2clc,clear
c = 1:4;
c = [c,c];
aeq = [1 -1 -1 1;1 -1 1 -3;1 -1 -2 3];
Aeq = [aeq,-aeq];
beq = [0 1 -1/2];
[x,y] = linprog(c,[],[],Aeq,beq,zeros(8,1))
x = x(1:4)-x(5:8)

如果只是线性规划,lingo更好用

多目标线性规划

多目标线性规划是多目标最优化理论的重要组成部分,由于多个目标之间的矛盾性和不可公度性,要求使所有目标均达到最优解是不可能的,因此多目标规划问题往往只是求其有效解(非劣解)。目前求解多目标线性规划问题有效解的方法,有理想点法、线性加权和法、最大最小法、目标规划法,模糊数学解法等。为了求得多目标规划问题的非劣解,常常需要将多目标规划问题转化为单目标规划问题去处理。实现这种转化,有如下几种建模方法。

  1. 效用最优化模型
  2. 罚款模型
  3. 约束模型
  4. 目标达到法
  5. 目标规划模型
  • 效用最优化模型(线性加权法)
    思想:规划问题的各个目标函数可以通过一定的方式进行求和运算。这种方法将一系列的目标函数与效用函数建立相关关系,各目标之间通过效用函数协调,使多目标规划问题转化为传统的单目标规划问题。
  • 罚款模型(理想点法)
    思想: 规划决策者对每一个目标函数都能提出所期望的值(或称满意值);通过比较实际值与期望值之间的偏差来选择问题的解。
  • 约束模型(极大极小法)
    理论依据:若规划问题的某一目标可以给出一个可供选择的范围,则该目标就可以作为约束条件而被排除出目标组,进入约束条件组中。假如,除第一个目标外,其余目标都可以提出一个可供选择的范围,则该多目标规划问题就可以转化为单目标规划问题。
  • 目标达到法
    首先将多目标规划模型化为标准形式,在求解之前,先设计与目标函数相应的一组目标值理想化的期望目标与每一个目标对应的权重系数,再设松弛因子,对多目标规划问题进行转化。
  • 目标规划模型(目标规划法)
    需要预先确定各个目标的期望值,同时给每一个目标赋予一个优先因子和权系数,假定有K个目标,L个优先级( L≤K),再通过建立目标规划模型进行求解。

多目标线性规划模型是有两个或两个以上的目标函数,且所有的目标函数和约束条件都是线性的,数学模型表示为:

常用的求解最优化问题的函数,有线性规划问题的linprog,非线性规划问题的fmincon,最大最小问题的fminimax,求解多目标的fgoalattain等。调用形式分别为:

理想解法



解:先对单目标进行求解

对第一个目标求解的matlab程序为:

f=[3;-2];
a=[2  3;2 1];
b=[18;10];
lb=[0;0];
ub=[];
[x,favl]=linprog(f,a,b,[],[],lb,ub);

输出结果为:x=0.0000 6.0000,favl=-12.0000,所以最大值为12.0000

对第二个目标求解的matlab程序为:

f=[-4;-3];
a=[2  3;2 1];
b=[18;10];
lb=[0;0];
ub=[];
[x,favl]=linprog(f,a,b,[],[],lb,ub);

输出结果为:x=3.0000 4.0000,favl=-24.0000,所以最大值为24.0000

于是得到理想点:(12,24)

x0=[1;1];
a=[2 3;2 1];
b=[18;10];
lb=[0;0];
ub=[];
x=fmincon('((-3*x(1)+2*x(2)-12)^2+(4*x(1)+3*x(2)-24)^2)^(1/2)',x0,a,b,[],[],lb,ub);
f1=-3*x(1)+2*x(2);
f2=4*x(1)+3*x(2);

线性加权法


求解的matlab程序为:

f=[-0.5;-2.5];
a=[2 3;2 1];
b=[18;10];
lb=[0;0];
ub=[];
x=linprog(f,a,b,[],[],lb,ub);

输出结果为:x1=0.0000,x2=6.0000,对应的目标值为f1=12.0000,f2=18.0000

最大最小法


首先编写M函数文件:

function f=mutiplesubjiect(x)
f(1)=3*x(1)-2*x(2);
f(2)=-4*x(1)-3*x(2);

然后输入

x0=[0;0];
a=[2 3;2 1];
b=[18;10];
lb=[0;0];
[x,favl]=fminimax('mutiplesubjiect',x0,a,b,[],[],lb,[])

目标规划法


首先编写M函数文件,和上述M函数相同。然后输入:

goal=[12,24];
weight=[12,24];
x0=[0;0];
a=[2 3;2 1];
b=[18;10];
lb=[0;0];
[x,fval]=fgoalattain('mutiplesubjiect',goal,weight,x0,a,b,[],[],lb,[])

输出结果为:x1=0.0000,x2=6.0000,对应的目标值为f1=12.0000,f2=18.0000

模糊数学解法




求解的matlab程序为:

f=[0;0;-1];
a=[3 -2 27-4 -3 242 3 02 1 0];
b=[15;0;18;10];
lb=[0;0;0];
ub=[];
[x,favl]=linprog(f,a,b,[],[],lb,ub);
f1=-3*x(1)+2*x(2);
f2=4*x(1)+3*x(2);

输出结果为:x1=1.0253,x2=5.3165,x3=0.8354,对应的目标值为f1=7.5570,f2=20.0506

参考链接:
https://blog.csdn.net/wzl1997/article/details/79120323
https://blog.csdn.net/weixin_44035915/article/details/108421283

数学建模:线性规划与多目标规划相关推荐

  1. 数学建模——线性规划模型详解Python代码

    数学建模--线性规划模型详解Python代码 标准形式为: min z=2X1+3X2+x s.t x1+4x2+2x3>=8 3x1+2x2>=6 x1,x2,x3>=0 上述线性 ...

  2. Python数学建模—线性规划

    我是猿童学,本文是根据司守奎老师<数学建模算法与程序>的书本内容编写,使用其书中案例,书中的编程语言是MATLAB.Lingo,我将使用Python来解决问题.接下来的一个月我将学习使用P ...

  3. 数学建模——lingo实现多目标规划

    数学建模--lingo实现多目标规划 某单位领导在考虑本单位职工的升级调资方案时,要求相关部门遵守以下的规定: (1)年工资总额不超过1500000元: (2)每级的人数不超过定编规定的人数: (3) ...

  4. python数学建模--线性规划问题案例及求解

    目录 数学问题:线性规划问题 程序设计 结果分析 实际应用1:加工厂的生产计划 设置未知数 建立数学模型 程序设计 结果分析 实际应用2:油料加工厂的采购和加工计划 设置未知数 建立数学模型 程序设计 ...

  5. 数学建模 线性规划报告_2019年高中数学新教材正式发布!变化明细首次曝光!...

    数学教研 & 解题研究 & 资源共享 诚邀老师您加入教师群 请在"公众号对话框"回复 入群 2017年12月,教育部组织修订并颁布了<普通高中课程方案和语文等 ...

  6. 数学建模 线性规划模型基本原理

    线性规划问题 例1.1 可行解&可行域 matlab标准形式及软件求解 标准形式: C称为价值向量 如果是求max,加一个负号-c^T 如果是求Ax>=b,加一个负号-Ax<=b ...

  7. 数学建模线性规划(整数规划)

    线性规划(整数规划) 文章目录 线性规划(整数规划) 概述 数学模型 分类 与松弛线性规划的联系 模型求解方法 分枝定界法 求解步骤 求解细节 对分支定界法的理解 割平面法 求解步骤 0-1变量的使用 ...

  8. 数学建模常用算法—多目标规划

    前面我们已经学习了线性规划及非线性规划,接下来带大家一起学习多目标规划模型. 目录 模型的含义 求解思路 建立目标规划的条件 目标规划的目标函数 目标规划的模型应用 模型的建立 目标规划的一般数学模型 ...

  9. python数学建模(二)线性规划2.实战(思路清晰\过程完整、详细)

    文章目录 (一)简单陈述本文章的内容 (二)线性规划例题(实战) 2.1 实战题目 2.2 符号规定和基本假设 2.3 模型的分析 2.4 模型的建立 2.5 模型一的求解和分析 2.5.1 (代码) ...

  10. 【数学建模】算法模型(一)|线性规划 整数规划 非线性规划 层次分析模型 灰色关联分析

    文章目录 1.线性规划 Linear Programming (LP) 1.1线性规划的matlab标准形式及软件求解 1.2 投资的收益和风险 2. 整数规划 2.1 整数规划和线性规划的关系 2. ...

最新文章

  1. 问题解决:Apache: You don't have permission to access / on this server
  2. Centos之压缩和解压缩命令
  3. 带你了解走出数据治理第一步 ,数据资产分类分级
  4. python面向对象的基本概念_面向对象的概念和基本语法,python,学习,笔记,一,基础...
  5. 互补输出级采用共集形式是为了使_天津大学胡文平《先进材料》:溶液法制备厘米级高度取向有机晶体阵列,可用于高性能有机场效应晶体管...
  6. C# 依赖注入那些事儿
  7. 手把手教你Axure-基本工具栏
  8. 笨办法学 Python · 续 练习 24:URL 快速路由
  9. 《商务新星.NET 4.0》发布说明
  10. Cmailserver和outlook配置
  11. 线程池的几种构造方法及使用的策略
  12. edm邮件直投_EDM邮件直投专家_EDM邮件直投专家官方版下载 - 邮件处理 - 绿软家园...
  13. Vue前端开发文档(完善中)
  14. opencv 实现的静态手势识别 进而玩剪刀石头布
  15. 咽喉肿痛合谷穴照海穴
  16. 计算今天距离2026年1月1日,还有多少年,多少月,多少天?
  17. java项目实体类方法找不到_报错,居然找不到实体类
  18. Linux查看系统信息命令总结
  19. ssh常用命令50条
  20. Concepts:Overview

热门文章

  1. 了解苹果自动驾驶“窃密”事件始末,嫌疑人或将面临10年监禁、 25 万美元罚款...
  2. Stetho工具介绍
  3. 一文弄懂二叉树的三种遍历方式
  4. 数据结构 非递归实现中序遍历二叉树
  5. 2020第十一届蓝桥杯国赛个人题解+源代码
  6. Java运算符优先级及结合性
  7. 双向循环链表的前插 后插 前删 后删
  8. Kotlin语言:Orient-Ui中时间轴的使用
  9. 超大容量充电宝哪个好?手机充电宝哪款容量大又好用
  10. 2023年网络文化经营许可证(文网文)办理流程