GAMS建模技术案例01 求解简单的线性规划模型

news2025/1/15 16:37:54

目录

1.问题描述

2 GAMS代码要点

2.1 代码编写要点

2.2 案例源码

2.3 计算结果及报告解


1.问题描述

首先给出一个基本线性规划问题的计算案例

max: 30x_{1} + 100x_{2}-50x_{3}

subject to:

x_{1}+x_{2}+x_{3} \leq 7

4x_{1}+2x_{2}=40

10x_{1} + x_{3} >= 30

x_{1} \geq 0, x_{2} \in R, x_{3} \leq 0

2 GAMS代码要点

2.1 代码编写要点

  • 使用 * 表示注释文本
  • 定义变量
    • Positive Variable 表示定义非负变量
    • Negative Variable 表示定义非正变量
    • Binary Variable 表示定义二进制决策变量
    • Integer Variable 表示定义整数决策变量
    • Free Variable 表示定义正决策变量
  • 定义约束条件:
    • 使用 Equations 关键字,首先给出约束名称列表,各约束以逗号分隔,以分号结尾
    • 使用 =E= 、 =L= 和 =G= 分别表示 等式约束、小于等于约束、大于等于约束
    • 目标函数在等式中以额外的等式表示,等式一侧为目标自由变量,另一侧为目标表达式
  • 模型构建
    • 使用 Model 关键字开头,紧跟着模型的名字、模型包含的约束和目标等式
    • 使用 Options关键字定义模型类型和求解器
  • 求解模型
    • 使用 Solve 关键字开头的语句
    • 表达式为: Solve 模型名 using 模型类型 优化目标类型 目标变量
  • 结果展示
    • 使用Display关键字开头的语句

2.2 案例源码

* max: 30 x1 + 100 x2 - 50 x3
* subject to
*   x1 +  x2 + x3 <= 7
* 4 x1 + 2x2       = 40
* 10x1 +     + x3 >= 30
* x1 >=0, x2 \in R, x3 <= 0

Positive Variable x1;
Free Variable x2, z;
Negative Variable x3;

Equations
ConLE, ConEq, ConGE, Obj;
ConLE.. x1 +  x2 + x3 =L= 7;
ConEq.. 4*x1 + 2*x2   =E= 40;
ConGE.. 10*x1 + x3 =G= 30;
Obj.. z =E= 30*x1 + 100*x2 - 50*x3;
Model SampleProblem1 /ConLE, ConEq, ConGE, Obj/
Options LP = Cplex;
Solve SampleProblem1 using LP maximizing z;
Display x1.L, x2.L, x3.L, z.L;

2.3 计算结果及报告解读

计算结果中包含以下几个项目:

其含义如下:

  • 回显打印,将你输入的模型在报告中重新显示一边
  • Equation Listing 表示模型中用到的所有约束及目标函数
  • Column Listing 展示决策变量在不同等式中的系数
  • MODEL STATISTICS 统计模型中拥有的等式数目、变量数目;模型生成和执行的耗时信息
  • Solution Report 解的基本信息,包含模型的类型、求解器、状态、目标值等信息
  • Display 部分给出模型的最优值和最优解信息

VARIABLE x1.L                 =        3.909  
VARIABLE x2.L                 =       12.182  
VARIABLE x3.L                 =       -9.091  
VARIABLE z.L                   =     1790.000  

 同时cong解的信息中,我们还可以看到我们用的这个案例有一个极方向:

Model has an unbounded ray.

**** ERRORS/WARNINGS IN EQUATION ConLE
     1 error(s): Unbounded equation (slack variable)

                           LOWER          LEVEL          UPPER         MARGINAL

---- EQU ConLE             -INF            7.0000         7.0000       -30.0000 UNBND
---- EQU ConEq             40.0000        40.0000        40.0000        65.0000      
---- EQU ConGE             30.0000        30.0000        +INF          -20.0000      
---- EQU Obj                 .              .              .             1.0000      

                           LOWER          LEVEL          UPPER         MARGINAL

---- VAR x1                  .             3.9091        +INF             .          
---- VAR x2                -INF           12.1818        +INF             .          
---- VAR z                 -INF         1790.0000        +INF             .          
---- VAR x3                -INF           -9.0909          .              .          


**** REPORT SUMMARY :        0     NONOPT
                             0 INFEASIBLE
                             1  UNBOUNDED (UNBND)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【经典论文】打通文本图像的里程碑--clip

Git&#xff5c;Paper&#xff5c;Colab&#xff5c; CLIP 论文逐段精读【论文精读】_哔哩哔哩_bilibili clip是openai团队在4亿对文本图像对上训练出来的。它的训练方法简单&#xff0c;但效果缺出奇的好。是打通图片文本的里程碑式的模型。 目录 一.模型结构​编辑 1.为…

“Shell“免交互

文章目录 一.免交互&#xff08;Here Document&#xff09;1.1Here Document 概述2.2Here Document 常规用法 二.Expect2.1Expect基本命令2.2Expect执行方式 一.免交互&#xff08;Here Document&#xff09; 1.1Here Document 概述 使用I/O重定向的方式将命今列表提供给交互式…

chatgpt赋能Python-pythonandor

Pythonandor&#xff1a;探索Python的异步编程方式 如果您是一个Python工程师&#xff0c;你可能已经听过Pythonandor。Pythonandor是一个Python异步框架&#xff0c;能够让你更高效地处理请求&#xff0c;并且提高应用程序的响应速度。 什么是Pythonandor? Pythonandor实际…

5。STM32裸机开发(4)

嵌入式软件开发学习过程记录&#xff0c;本部分结合本人的学习经验撰写&#xff0c;系统描述各类基础例程的程序撰写逻辑。构建裸机开发的思维&#xff0c;为RTOS做铺垫&#xff08;本部分基于库函数版实现&#xff09;&#xff0c;如有不足之处&#xff0c;敬请批评指正。 &…

一篇文章打好SQL基础,熟悉数据库的基础操作和方法,以及安装MySQL软件包和Python操作MySQL基础使用

1.SQL的概述 SQL的全称&#xff1a;Structured Query Language&#xff0c;结构化查询语言&#xff0c;用于访问和处理数据库的标准计算机语言。 SQL语言1974年有Boyce和Chamberlin提出的&#xff0c;并且首先在IBM公司研制的关系数据库系统SystemR上实现。 经过多年发展&am…

KVM(二)命令行新建虚拟机

目录 一、准备工作 二、新建虚拟机 2.1 文件准备 2.2 正式安装 2.3 时区设置 2.4 安装设置 2.5 设置root用户密码 2.6 vm2安装完成 三、进入虚拟机vm2 四、网络设置 五、参考链接 若还未部署KVM&#xff0c;请参考第一节&#xff1a; KVM&#xff08;一&#xff09;…

如何让你的 Jmeter+Ant 测试报告更具吸引力?

目录 引言 一、安装apache-Ant 二、Jmeter准备 3、生成测试报告 4、JMeter动态参数处理逻辑是什么&#xff1f; 5、JMeter是怎么做API自动化测试的&#xff1f; 结语 引言 想象一下&#xff0c;你辛苦搭建了一个复杂的网站&#xff0c;投入了大量的时间和精力进行开发和…

java 对接国标摄像头流程、代码整合 springboot SIP -GB2818

java 对接设备的代码资料较少&#xff0c;这里介绍GB2818的基本对接流程&#xff0c;有用自取&#x1f447; java负责SIP信令的注册交互&#xff0c;推流、拉流鉴权摄像头负责推流、流媒体负责拉流、转码 wvp-GB28181-pro项目 ,如果java对接各种摄像头&#xff0c;这个项目很&a…

Java流程控制(二)

⭐ 循环结构⭐ 嵌套循环⭐ break 语句和 continue 语句⭐ 方法⭐ 方法的重载(overload)⭐ 递归结构 ⭐ 循环结构 循环结构分两大类&#xff0c;一类是当型&#xff0c;一类是直到型。 &#x1f41f; 当型&#xff1a; 当布尔表达式条件为 true 时&#xff0c;反复执行某语句&a…

【eNSP】win11解决virtualbox5.2.44无法安装、不兼容的问题

问题描述&#xff1a; 本人大三学生一枚&#xff0c;这学期上计算机网络&#xff0c;老师要求安装华为eNSP软件&#xff0c;安装环节一切顺利&#xff0c;直到安装到依赖组件中VirtualBox-5.2.44时&#xff0c;发生了问题&#xff0c;Windows提示此应用无法在此设备上运行&…

AI工具第三期:本周超16款国内精选AI工具分享!

1. 未来百科 未来百科&#xff0c;是一个知名的AI产品导航网站——为发现全球优质AI工具而生。目前已聚集全球2500优质AI工具产品&#xff0c;旨在帮助用户发现全球最好的AI工具&#xff0c;同时为研发AI垂直应用的创业公司提供展示窗口&#xff0c;迎接未来的AI时代。未来百科…

RocketMq源码分析(七)--消息发送流程

文章目录 一、消息发送入口二、消息发送流程1、消息验证1&#xff09;消息主题验证2&#xff09;消息内容验证 2、查找路由3、消息发送1&#xff09;选择消息队列2&#xff09;消息发送-内核实现sendKernelImpl方法参数获取brokerAddr添加消息全局唯一id设置实例id设置系统标记…

Linux Audio (5) DAPM-2 Widget/Path/Route

DAPM-2 Widget/Path/Route WM8960结构图WidgetRoutePath总结 课程&#xff1a;韦东山音频专题 内核&#xff1a;Kernel 3.5 实例&#xff1a;WM8960 WM8960结构图 录音时的音频通路 抽象图为&#xff1a; Widget wm8960.c sound\soc\codecs static const struct snd_soc_dap…

C++进阶——mapset的实现

C进阶——map&set的实现 红黑树的迭代器 迭代器的好处是可以方便遍历&#xff0c;是数据结构的底层实现与用户透明。如果想要给红黑树增加迭代器&#xff0c;需要考虑以前问题&#xff1a; 迭代器的定义 begin()与end() STL明确规定&#xff0c;begin()与end()代表的是一…

OS7安装rabbitmq

1.卸载存在的rabbitmq 停止rabbitmq服务&#xff1a; systemctl stop rabbitmq-server 查看rabbitmq安装的相关列表: yum list | grep rabbitmq 卸载rabbitmq已安装的相关内容: yum -y remove rabbitmq-server.noarch 查看erlang安装的相关列表: yum list | grep erlang 卸…

shell脚本----免交互操作

文章目录 一、Here Document免交互1.1免交互概述1.2语法格式1.3操作实验1.4tee命令 二、expect命令 一、Here Document免交互 1.1免交互概述 使用I/O重定向的方式将命令列表提供给交互式程序或命令&#xff0c;比如 ftp、cat 或 read 命令。 是标准输入的一种替代品可以帮助脚…

【Unity3D】立方体纹理(Cubemap)和天空盒子(Skybox)

1 立方体纹理&#xff08;Cubemap&#xff09; 本文完整资源见 → 立方体纹理&#xff08;Cubemap&#xff09;和天空盒子&#xff08;Skybox&#xff09; 。 1&#xff09;立方体纹理简介 立方体纹理是指由上、下、左、右、前、后 6 张纹理组成的立方体结构纹理&#xff0c;其…

X3运行paddle-lite Demo

仓库地址GitHub - PaddlePaddle/Paddle-Lite-Demo at master git clone直接下载到X3上 环境准备 $ sudo apt-get update $ sudo apt-get install gcc g make wget unzip libopencv-dev pkg-config $ wget https://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz $ tar -zxvf …

Node.js--》深入理解 PM2:Node.js 应用部署和管理利器

目录 pm2&#xff1a;进程自动化管理工具 pm2的安装与使用 pm2&#xff1a;进程自动化管理工具 PM2&#xff1a;是一个流行的Node.js进程管理器&#xff0c;它可以帮助您在生产环境中管理和保持Node.js应用程序运行。PM2的功能包括监视您的应用程序、自动重启您的应用程序、…

手撕代码——异步FIFO

手撕代码——异步FIFO 一、异步FIFO原理与设计读写地址指针控制读写地址指针跨时钟处理与空满信号判断读写地址与读写操作 二、完整代码与仿真文件三、仿真结果 一、异步FIFO原理与设计 在FIFO的设计中&#xff0c;无论是同步FIFO&#xff0c;还是异步FIFO&#xff0c;最最最最…