线性规划模型

news/发布时间2024/5/19 9:30:19

线性规划模型

某机床厂生产甲、乙两种机床,每台销售后的利润分别为4千元与3千元。

生产甲机床需用A、B机器加工,加工时间分别为每台2 小时和1 小时;生产乙机床需用A、B、C三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时数分别为A 机器10 小时、B 机器8 小时和C 机器7 小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?

在这里插入图片描述

$s.t.$为约束条件,$max $ $ z $为目标函数 , $x_1$ , $x_2$为决策变量。

(经典例题)

2. 求解线性规划的MATLAB解法

2.1 基于MATLAB求解器的解法

先将问题化成标准化模型

在这里插入图片描述

其中c和x为n维列向量,A、Aeq为适当维数的矩阵,b、beq 为适当维数的列向量。【注意:MATLAB 是求的是最小值,不等式的不等号是 ≤ 】

linprog 命令求解线性规划问题 x返回值是决策向量取值,fval 返回值是目标函数最优值 【命令中的空项目用[ ]代替即可】

[x,fval] = linprog(c,A,b)
[x,fval] = linprog(c,A,b,Aeq,beq)
[x,fval] = linprog(c,A,b,Aeq,beq,lb,ub)

2.2 基于问题的解法

开头例题的程序示例

clc,clear
probl=optimproblem("ObjectiveSense","max");
%创建最大化线性规划问题(我们的问题是使目标函数值最大,所以要输"ObjectiveSense")
c=[4,3];  %目标函数系数向量
a=[2,1;1,1;0,1];
b=[10;8;7];
x=optimvar("x",2,1,"LowerBound",0);
%定义问题的符号决策向量
%x=optimvar(,行数,列数,,)
probl.Objective=c*x;  %问题的目标函数
probl.Constraints=a*x<=b;  %问题的约束条件
%如果约束条件有多类,可以再加个标签probl.Constraints.c1,这里只有一类约束条件,所以没有加
[sol,fval,flag,out]=solve(probl)
%一般的线性规划只需要[sol,fval]=solve(probl)
%其中fval是返回的最优值
sol.x  %显示决策变量的取值

应用

在这里插入图片描述

设$x_{ij}$为第i个月份租借期限为j的仓库面积,因为5月份不租仓库,所以$ x_{24},x_{33},x_{34},x_{42},x_{43},x_{44}=0 $,可建立如下模型:

在这里插入图片描述

解得最优解为:$x_{11}=3,x_{14}=12,x_{31}=8$

目标函数最优值是 $118400$

MATLAB程序如下:

clc,clear
prob=optimproblem;
x=optimvar("x",4,4,'LowerBound',0);
prob.Objective=2800*sum(x(:,1))+4500*sum(x(1:3,2))+6000*sum(x(1:2,3))+7300*x(1,4);
prob.Constraints=[sum(x(1,:))>=15sum(x(1,2:4))+sum(x(2,1:3))>=10sum(x(1,3:4))+sum(x(2,2:3))+sum(x(3,1:2))>=20x(1,4)+x(2,3)+x(3,2)+x(4,1)>=12];
[sol,fval,flag,out]=solve(prob)
sol.x

3.运输问题(产销平衡)

在这里插入图片描述

应用举例

在这里插入图片描述

设$x_{ij}$表示从产地$A_i$运到到销售地$B_j$的量,$c_{ij}$表示产地$A_i$运到到销售地$B_j$的运价,$d_{ij}$表示销售地$B_{j}$的需求量,$c_{i}$表示产地的产量。

则目标函数就是使总的运费最小,约束条件有,销售地需求量等于运送量;运送量小于等于产地产量。
在这里插入图片描述

我们用基于问题的方法求解这个线性规划,得$x_{12}=19,x_{15}=41,x_{21}=1,x_{24}=40,x_{32}=11,x_{37}=40,x_{46}=5,x_{48}=38,x_{51}=34,x_{52}=7,x_{63}=22,x_{66}=27$

clc,clear
a=readmatrix('data1.txt')  %读取表中的数据
%%若数据是整行整列的表,则可以用load('文件名')
c=a(1:end-1,1:end-1);
%%end表示行、列的最大值
d=a(end,1:end-1);
e=a(1:end-1,end);
x=optimvar("x",6,8,'LowerBound',0)  %定义决策向量
prob=optimproblem('Objective',sum(c.*x,'all'));
%定义问题,并写出目标函数
%这里sum(c.*x,'all')相当于sum(sum(c.*x))
prob.Constraints.c1=sum(x)==d;  
%sum(A),不指定dim或指定dim为1,则自动计算成所有列向量数值的和;如果指定dim为2,则自动计算成所有行向量数值的和
prob.Constraints.c2=sum(x,2)<=e;
[sol,fval,flag,out]=solve(prob)
xx=sol.x
writematrix(xx,'data1.xlsx')  %把数据贴到excel表格中,用于做表使用

4.问题记录

模型建立方面:
1.模型要注意灵敏度分析,即分析哪个变量的轻微波动对结果的影响更大(现实生活中难免决策变量会发生变化)
2.投资偏好系数:投资者在权衡资产风险和预期收益两方面时,希望选择一个令自己满意的投资组合,因此对风险和收益分别赋予权重,s称为投资偏好系数
记风险为$P$,收益为$Q$,则需要寻找一个$s$,使得$minP−Q$ ,或 $max Q−P$。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/85770463.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

[基础] CLIP

Learning Transferable Visual Models From Natural Language Supervision link CLIP 全称 Contrastive Language-Image Pre-training TL;DR 一种使用图文对做预训练的方法,影响力:打破传统人工标准类别Label的预训练方式。 Method训练阶段:将图文样本对分别过Encoder抽取特…

TIDB使用介绍

TiDB概述 TiDB数据库官方网址:https://pingcap.com/zh/ ​TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容…

UML

UML图是什么? UML图中的UML是英文Unified Modeling Language的缩写,意为“统一建模语言”,是一种用于描述软件系统的视觉化工具。 UML提供了一套丰富的图形符号和规范,用于描述和可视化软件系统的结构、行为和交互,每种符号都有特定的用途和表达能力,以便开发人员能够更清…

给虚拟机配置ip

给虚拟机配置ip 添加网卡 明白自己的需求 如果是ping通主机ip 那么使用仅主机网卡就足够 如果需要ping外网(类似与百度之类的)则需要使用nat网卡 如图:添加的网络适配器顺序不固定,知道自己网络适配器对应的网卡(类似ens34)即可 查看网卡配置文件nat网卡配置文件仅主机网…

2020蓝桥杯c语言省赛B组

2020蓝桥杯省赛B组 1.回文日期 考点枚举+翻转完整代码 #include<bits/stdc++.h> using namespace std; bool rn(int t){if((t%4==0&&t%100!=0)||t%400==0)return true;return false; } 注意:是整体翻转不是年月日变成日月年! bool f(int n,int y,int r){ int h…

Xterminal-SSH管理工具推荐

官网 常做服务器取证、网站重建的童鞋们都知道,我们需要频繁的阅读、修改文件或是代码,而Xterminal就支持远程直接查看、修改文件同时它还支持常用命令的提示(虽说全部提示需要购买会员)同时也是支持本地终端的使用当然sftp是必然带的(点名某Shell)还可以添加常用命令,双…