matlab线性规划系列之基础解题-2

 
系列文章目录

基础篇:

​​​​​​1.matlab线性规划问题---------基于问题求解函数optimproblem

2. matlab线性规划系列之基础解题

文章目录

目录

 系列文章目录

基础篇:

​​​​​​1.matlab线性规划问题---------基于问题求解函数optimproblem

2. matlab线性规划系列之基础解题

欢迎来到苦幽幽,线性规划解千愁系列。

一、上手实际问题

  1.1温习(承上)0-1模型的选课制度-多目标:

  若是还没有看过我上一篇文章的小伙伴,记得去看看呀,和上一篇的问题是有联系的哟。这次我将在单目标的基础之上增加一个学分最多的目标,也就是咱们需要实现在选课数量尽可能少的前提下,学分也尽可能多这两个目标。 其实很简单,伙伴们多想一下,代码在最下面呀!同时分析将会在下一期出!

2.开辟新类型- 类型2 - 普通线性规划:

三、多目标0-1的代码答案~





前言

这里将展示一些用我之前发过的关于问题求解函数optimproblem的一些解题方法思路,以及对应的代码,在这里声明一下,本篇文章所用的题目来自于哒哒子前辈的如下文章:数学建模【规划模型--线性规划(整数规划、0-1规划)、非线性规划-附:案例分析、奶制品的生产和销售(详细求解过程)】_厚德载物-CSDN博客



欢迎来到苦幽幽,线性规划解千愁系列。

一、上手实际问题

  1.1温习(承上)0-1模型的选课制度-多目标

  若是还没有看过我上一篇文章的小伙伴,记得去看看呀,和上一篇的问题是有联系的哟。这次我将在单目标的基础之上增加一个学分最多的目标,也就是咱们需要实现在选课数量尽可能少的前提下,学分也尽可能多这两个目标。 其实很简单,伙伴们多想一下,代码在最下面呀!同时分析将会在下一期出!

2.开辟新类型- 类型2 - 普通线性规划:

    2.1牛奶加工售出计划:

     这里和上一篇所讲的题一样用三步法。我们求满足约束条件后,获利最大化

       2.2.1 分类问题

          文字分析:

            关于这道题,首先是先将问题分类,毫无疑问,和我们之前所讲的0-1规划不一样,因为没             有体现出选择的关系,也没有体现出数量值为0-1;这时候看题目显然就是一道普通的线性             规划,就是需要规划你怎么去安排这个制作,三点都是线性的函数,哪三点?看下方。

        2.2.2 找对应三

        那么接下来就找那三个点:

                第一:决策变量,其实就是选择A1还是A2,一桶牛奶是用A1做还是A2做。

                第二:约束条件,约束条件是题目所给的,一天所产的牛奶桶数小于等于50;A1,A2加                 工时间不超过不超过480h;A1至多不超过100公斤

                第三:目标函数,目标函数就是要使得获利最大化。

         1. 关于决策变量

                文字分析:

                     这里我们很容易知道,能否获利,是看我们做出了几桶牛奶,并且这几桶牛奶是由A                  还是B来做的,因为他们所能制造的牛奶的“转化率”是不同的,所以甚至于后期我们还可                  以计算出他们的经济效益(也就是性价比的东西,其实就是1/各自的需求量 再除以各自                 的单价,不是利润价阿!!,在这里单价没给,是没有办法求的!到最后面的时候会讲                 述2021国赛题目,会给例子的!),但显然单纯的求利益最大化是不需要的。

                     在这里因为要知道我们要规划用多少桶A1和多少桶A2,所以,我分别设置了x1桶牛                 奶用A1和x2桶牛奶用A2故设置两行的列向量即可,然后下界设置为0。

                代码分析:

x = optimvar('x',2,'LowerBound',0);

                     

           2. 关于约束条件

                文字分析:

                 约束条件感觉没啥好讲的,看题设条件就行,这个比较简单,直接看代码吧。

                代码分析:

con1 = 3*x(1) <= 100;%A1的小于100
con2 = 12*x(1) + 8*x(2) <= 480;%时间
con3 = x(1)+x(2) <= 50;

pro.Constraints.con1 = con1;
pro.Constraints.con2 = con2;
pro.Constraints.con3 = con3;

           3. 关于目标函数

                文字分析:

                  目标函数无非就是运用A1的公斤数乘以每公斤的利润加上A2的即可,这里需要注意的                 是,要知道自己设立的变量是桶数还是公斤数,这样所列出来的目标函数也是不一样                 的。

                代码分析:

pro.Objective = x(1)*24*3 + 16*x(2)*4;%获利最大化

          2.2.3 代码示例


pro = optimproblem('ObjectiveSense','max');%使得获利最大化

x = optimvar('x',2,'LowerBound',0);
%x1桶牛奶用A1制作,x2桶牛奶用A2制作

pro.Objective = x(1)*24*3 + 16*x(2)*4;%获利最大化

con1 = 3*x(1) <= 100;%A1的小于100
con2 = 12*x(1) + 8*x(2) <= 480;%时间
con3 = x(1)+x(2) <= 50;

pro.Constraints.con1 = con1;
pro.Constraints.con2 = con2;
pro.Constraints.con3 = con3;
[sol_LL fval_LL] = solve(pro);

sol_LL.x
fval_LL

可以知道答案分别是A1 = 20,A2 =30 ,利润是3360。 

三、多目标0-1的代码答案~

clc
clear
tic
%第二个目标
score = [5;4;4;3;4;3;2;2;3];%按照序号所对应的每一科的学分
pro1 = optimproblem('ObjectiveSense','max');
v = optimvar('v',9,'Type','integer','LowerBound',0,'UpperBound',1);%选课的学分
pro1.Objective = score'*v;
con_LL = [];
con_LL = sum(v) <=6;
% for i =1:9 
%     con_LL = [con_LL;x(i) <= v(i)];
% end
pro1.Constraints.con1=con_LL;
[solz fval_LLz] = solve(pro1); 
solz.v 
fval_LLz

toc


  答案最终是选择第1、2、3、5、6、9门课呀,然后学分是23分~,答案不唯一呀,如果有错误,还请指正~ 



 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羡鱼数与模

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值