0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个简单的线性规划问题

Dtzl_SCAnalytic 来源:未知 作者:李倩 2018-05-29 10:25 次阅读

Linear Programming线性规划,就是目标函数和约束条件都是线性的优化问题,是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,它是辅助人们进行科学管理的一种数学方法,英文缩写LP。

一、业务问题描述:这是一个简单的线性规划问题,具体要求如下:

公司生产氨气(NH3)和氯化铵(NH4CI), 公司的日处理能力为50单位的氮(N), 180单位的氨(H), 40单位氯(CI). 氨气的利润为30$/每单位、氯化铵的利润为40$/每单位,如何确定氨气和氯化铵的产量,使利润最大?

二、从数学的角度理解和定义该问题:

将上述生产问题转为为数学问题,建立数学模型一般有以下三个步骤:

1.根据影响所要达到目的的因素找到决策变量;

2.由决策变量和所在达到目的之间的函数关系确定目标函数;

3.由决策变量所受的限制条件确定决策变量所要满足的约束条件。

三、OPL模型建立的步骤

下面用OPL语言来理解和定义该问题,OPL模型就是寻找决策变量,使得决策变量满足约束条件并取得目标函数最值的过程。下面是求解该问题的几个步骤:

1.定义该问题的数据变量,

为了方便起见,以下定义的数据变量均为数组变量,数组是有序数据的集合,一个数组中的每一个元素都属于同一种数据类型。

(1)Products 代表气体的名称,

{string}Products = ...;

即定义了数组名为“Products”的字符串数组,一维数组。

(2)Components 代表所含的成分,

{string} Components = ...;

即定义了数组名为“Components”的字符串数组,一维数组。

(3)Demand 代表每种气体所含的成分,

floatDemand[Products][Components] = ...;

即定义了数组名为“Demand”的浮点型数组,二维数组。

(4)Profit 代表对应气体的利润,

float Profit[Products] =...;

即定义了数组名为“Profit”的浮点型数组,一维数组。

(5)Stock 代表该成分的日处理能力,

float Stock[Components] =...;

即定义了数组名为“Stock”的浮点型数组,一维数组。

2.数据的初始化;

定义了数据变量之后,要进行数据的初始化,所谓初始化就是给数据变量赋值,下面依次给上述定义的数据变量赋值:

Products = { "NH3" "NH4CI"};

Components = { "N" "H" "CI"};

Demand = [ [1 3 0] [1 4 1] ];

Profit = [30 40];

Stock = [50 180 40];

3.定义决策变量,数据变量和决策变量是有区别的,数据变量是具体数据的名称,比如之前定义的数据变量“Products”,代表该公司生产气体的名称,而决策变量是针对数学模型来说的,这个问题所需做的决策即每种气体的产量,

dvar float+Production[Products];

dvar(decision variable)是定义决策变量的一个最常用的关键字,

此处定义了变量名为”Production”的决策变量,代表两种气体的产量,其实是浮点型数组。

4. 目标函数的定义,即利润最大化,目标函数是决策变量的线性函数,

maximize

sum( p in Products )

Profit[p] * Production[p];

5. 约束条件的设定,有三种成分有日处理能力的限制,用很简洁的写法实现:

subject to {

forall( c in Components )

ct:

sum( p in Products )

Demand[p][c] * Production[p] <= Stock[c];

}

四、用IBM ILOG CPLEX Optimization Studio 12.8来求解该问题

IBM ILOG CPLEX Optimization Studio 12.8来求解该问题的具体操作过程如下:

打开软件界面,有四个常用的窗口,分别是OPL项目导航窗口、编辑窗口、问题浏览器窗口、输出窗口;

新建一个OPL项目,项目名称是“gaseous”,勾选”Adda default Run Configuration”、“CreateModel”和“CreateData”,即该OPL项目包含一个模型文件和一个数据文件;

编辑模型文件的内容,即“gaseous.mod”文件

该模型文件的内容包含四部分内容:

(1) 定义数据变量;

(2) 定义决策变量;

(3) 设定目标函数;

(4) 设定约束条件;

编辑数据文件的内容,即“gaseous.dat”文件

然后在”Configuration(default)”上执行:

执行 Run Configuration,得到如下输出结果:

五、业务解读

从IBM ILOG CPLEX Optimization Studio 12.8的运行结果,可知当氨气的产量为6.6667个单位,氯化铵的产量为40个单位时,该公司得到最大利润,并满足当日每种成分的处理能力限制。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IBM
    IBM
    +关注

    关注

    3

    文章

    1671

    浏览量

    74272
  • 线性
    +关注

    关注

    0

    文章

    188

    浏览量

    24973

原文标题:IBM ILOG CPLEX Optimization Studio : 一个线性规划的案例

文章出处:【微信号:SCAnalyticsPlatform,微信公众号:IBM大数据技术团队】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    matlab 数学建模

    取得最大经济效益的问题。此类问题构成了运筹学的重要分支—数学规划,而线性规划(Linear Programming 简记LP)则是数学规划
    发表于 06-18 13:59

    线性规划.pdf

    线性规划.pdf
    发表于 09-15 12:49

    matlab中无约束非线性规划函数\fminunc函数使用方法

    %用于求解无约束非线性规划的函数有:fminsearch和fminunc,用法介绍如下。%fminsearch函数%x=fminsearch(fun,x0)%x=fminsearch(fun,x0
    发表于 02-20 15:52

    用MATLAB优化工具箱解线性规划

    用最低? 解 设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型: 编写M文件xxgh3.m如下:f
    发表于 03-07 09:21

    matlab数学建模算法全收录 799*** 4.7M 超清书签版

    效益的问题。此类问题构成了运筹学的重要分支—数学规划,而线性规划(Linear 求解线性规划的单纯形方法以来,
    发表于 11-25 14:17

    基于整数线性规划的TTA代码优化

    针对传输触发结构代码生成中的指令调度、多寄存器堆分配、全局寄存器分配和软件旁路等优化问题,给出一个整数线性规划形式化模型,并实现了一个软件架构来验证该模型的正
    发表于 04-11 09:57 7次下载

    线性规划在缓冲区溢出检测中的应用研究

    文中建立了一个缓冲区溢出检测模型,用整型区间约束系统来表示字符串和关键性函数,将C 字符串操作抽象成线性规划问题来解决。设计了线性求解器对所产生的约束集合进行求解
    发表于 01-27 15:10 16次下载

    算法大全_线性规划

    算法大全第01章__线性规划,有需要的下来看看。
    发表于 01-14 17:04 0次下载

    算法大全_非线性规划

    下面通过实例归纳出非线性规划数学模型的一般形式,介绍有关非线性规划的基本概念。有需要的下来看看。
    发表于 01-14 17:26 0次下载

    一种基于改进线性规划的LDPC码混合译码算法

    一种基于改进线性规划的LDPC码混合译码算法_陈紫强
    发表于 01-07 16:52 0次下载

    一种关联博弈的软件调度线性规划控制算法

    一种关联博弈的软件调度线性规划控制算法_刘海姣
    发表于 01-07 19:08 0次下载

    数学建模教程之线性规划的详细说明

    在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记 LP)则是
    发表于 12-10 08:00 1次下载

    如何在MATLAB中使用线性规划求解不同的问题

    MATLAB是一种广泛使用的数学软件,它提供了各种工具箱和函数来解决多种问题,包括线性规划。下面介绍几个线性规划的示例,演示在MATLAB中如何使用线性规划求解这些问题: 1. 线性规划
    的头像 发表于 06-14 10:25 538次阅读

    在约束条件下优化非线性目标函数的问题

    线性规划是一类在约束条件下优化非线性目标函数的问题。以下是几个常见的非线性规划算法。
    的头像 发表于 06-15 09:33 553次阅读
    在约束条件下优化非<b class='flag-5'>线性</b>目标函数的问题

    使用内点法求解线性规划问题

    在 MATLAB 中,可以使用 fmincon 函数来求解线性规划问题,其中包括内点法。fmincon 函数的使用方法非常灵活,可以通过修改参数来指定不同的算法、约束条件等。
    的头像 发表于 06-15 09:35 590次阅读
    使用内点法求解<b class='flag-5'>线性规划</b>问题