cplex基础入门(一)

news2024/11/28 22:46:21

        这边文章会以纯新手小白的视角,教会大家如何快速的搭建自己的cplex模型,做到求解模型不求人。

目录

一、引言

1、掌握数据类型及数据结构

2、常规Cplex编程方法

3、Cplex编程步骤

4、cplex 程序框架

5、创建模型

二、规划建模的入门求解案例

1、不使用集合语言的案例

2、使用集合语言案例


一、引言

在讲述基础入门案例之前,需要大家明白几个核心概念,以及内功心法。

1、掌握数据类型及数据结构

        数据类型以及数据结构,转到Cplex的数据类型结构及基本语法功能,请先自行学习。

2、常规Cplex编程方法

        有2中形式。
        1)不使用集合语言,你可以直接理解为显性数学表达式。

        Example 求解如下模型

min z = 2x+3y

s.t.  2x + 3y >=20,
      x  +  y >=10,
      x,y >=0且为整数

        2)使用集合语言.(sum,forall...)

        主要思想:
                ①多个式子之和

                        a_{1}x_{1}+a_{2}x_{2}+...+a_{n}x_{n} = \sum_{j=1}^{n}a_{j}x_{j}

                   转为:  sum (j\, \, in \, \, 1..n) \, \, a[j] \ast x[j]\,

                ②多个约束条件
                \left\{\begin{matrix} x_{1} <=b_{1} & \\ x_{2} <=b_{2}& \\ x_{3} <=b_{3} & \end{matrix}\right.

        很显然,这可以转化为:x_{j} <=b_{j}\, j=1,2,...n

        在cplex中,我们又该如何表达呢?

                        forall\, (j\, in\, 1..n)\, \, x_{j} <=b_{j}

3、Cplex编程步骤

        ①正确地表达清楚数学规划模型
        ③确定模型中的已知量、未知量(类型、及范围等)
        ③编写程序

4、cplex 程序框架

  • 定义已知星(int,float,range,..)
  • 定又未知量(dvar  int,float,boolean,int+,float+)
  • 定义目标函数:maximize,minimize
  • 定义约束条件:subject to {...}
  • 补充,有些程序会补充脚本文件
  • 【脚本】execute{...}

5、创建模型

        ①首先通过文件,点击文件--新建--模型 

        ②编写模型

         ③运行模型,这里往往是很多新手小白不会的地方,这里将会重点讲述。

        第一步:点击该项目,新建一个运行配置文件,并需要英文命名它。

         如果运行文件与你的模型脱节,不在一个文件下,需要拖动模型到运行配置里,直到形成上面截图的那样,即可。

        第二步:直接点击配置文件,截图上面的config1,右键-->直接运行这个文件,即可。

最终结果如下:

 

二、规划建模的入门求解案例

1、不使用集合语言的案例

如上面的案例说明

min z = 2x+3y

s.t.  2x + 3y >=20,
      x  +  y >=10,
      x,y >=0且为整数

已在1.5里以这个例子进行了阐述,不在过多讲述。

2、使用集合语言案例

2.1 背包问题

        x_{j}\, =\, 1,表示物品j 放入背包中,若相反则为0。

        其背包问题的数学规划模型为:

        max\, \, z = \, \sum_{j=1}\, p_{j}\ast x_{j}

        s.t.    \sum_{j=1}^{n}\, w_{j}\ast x_{j}\leq C

                x_{j} \epsilon \left \{ 0,1\right \}\, j=1,2,...n

我们先分析,已知变量有p,w,C,n,未知变量有x。根据程序框架,写出的程序如下:

 接着运行模型,此时需要新建一个运行配置文件,点击配置文件,并命名为config2,如下

最终运行的结果为:

 2.2 指派问题

指派问题的数学模型为:

        min \: \sum_{i=1}^{n}\sum_{j=1}^{n}\: c_{ij}\,x _{ij}

        s.t.  \sum_{i=1}^{n}\: x_{ij}=1,j=1,2...n  .............. (每项工作只有一个人做)

                \sum_{j=1}^{n}\: x_{ij} =1,i=1,2...n ...............(每个人只做一项工作)

                x_{ij} = 0,1,i,j=12,...n

指派矩阵为:

c = [3    8    2    10    3

       8    7    2     9     7

       6    4    2     7     5

       8    4    2     3     5

       9  10    6     9    10 ]

同理,我们先分析模型中哪些变量是已知变量,哪些是未知变量,最终写出的程序模型为:

留意:cplex中等号是用==表示的。

结果为:

 

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

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

相关文章

代码随想录训练营Day57| 647. 回文子串 516.最长回文子序列 动态规划总结篇

目录 学习目标 学习内容 647. 回文子串 516.最长回文子序列 学习目标 647. 回文子串 516.最长回文子序列 动态规划总结篇 学习内容 647. 回文子串 647. 回文子串 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/palindromic-substrings/ class S…

3.部署 Stable Diffusion(SD)

部署Stable Diffusion webui方式: 本地部署:在自己的电脑上安装(官方脚本部署、懒人包部署(文末自取)) 云端部署:在远程服务上运行(免费有时长限制、可付费租用GPU) 两种部署方式哪种都可以,看需选择。如果有性能比较不错的的显卡,那么可以考虑本地部署。如果是没…

java养老院老年人档案管理系统springboot+vue

本居家养老系统管理员和工作人员两个角色。管理员功能有个人中心&#xff0c;老人账号管理&#xff0c;工作人员管理&#xff0c;老人档案管理&#xff0c;订单申请管理&#xff0c;检查检验项目管理&#xff0c;维修服务管理&#xff0c;订单信息管理&#xff0c;转诊信息管理…

一文简述低代码到底是什么?

在进入正文之前&#xff0c;有必要给大家拨正一个误区&#xff1a; “开发≠写代码” 由于现在低代码&零代码产品在宣传过程中着重强调“公民开发”这一概念&#xff0c;我们随便点开一篇相关文章章&#xff0c;必定会有一句&#xff1a;“人人都是开发者&#xff0c;无需…

计算机中丢失MSVCP140.dll无法启动此程序怎么办

MSVCP140.dll是Microsoft Visual C Redistributable文件中的一个动态链接库文件&#xff0c;它是Microsoft Visual Studio 2015和2017中的一部分。它包含一组选项卡&#xff0c;其中包含C/C开发所需的库。该文件通常位于计算机的Windows/System32目录中&#xff0c;它提供了用于…

Vue2——入门(适合后端程序员看)

Vue组件 Vue 的组件文件以 .vue 结尾&#xff0c;每个组件由三部分组成 <template></template><script></script><style></style> template 模板部分&#xff0c;由它生成 html 代码 script 代码部分&#xff0c;控制模板的数据来源和行…

30天从入门到精通TensorFlow1.x 第二天,变量 tf.Variable()

文章目录 一&#xff0c;接前一天&#xff08;1&#xff09;.内容前先弄清楚 sess.run() 函数a. 该函数干嘛的b. 该函数有哪些参数c. 该函数的使用 &#xff08;2&#xff09;.由库函数创建张量&#xff08;3&#xff09;.由库函数创建张量 二、变量tf.Variable()&#xff08;1…

git在一台电脑上配置不同的仓库(多个gitee仓库、或者不同的github仓库)

前言 在开发过程中&#xff0c;我们工作的时候难免会使用到两个不同的仓库&#xff0c;但是正常来说一电脑默认一个参考&#xff0c;直接会用全局命令 git config --global user.name "yourName"但是这样只能配置一个仓库了&#xff0c;本文介绍在一台电脑上配置多…

跟着LearnOpenGL学习5--纹理

文章目录 一、前言二、纹理映射三、纹理环绕方式四、纹理过滤五、多级渐远纹理六、加载与创建纹理七、生成纹理八、应用纹理九、完整代码9.1、工程结构9.2、纹理图片9.3、stb_image.cpp9.4、顶点着色器9.5、片段着色器9.6、main.cpp 十、纹理颜色与顶点颜色混合十一、纹理单元 …

Python系列模块之pymysql操作MySQL 数据库

目录 一、安装pymysql 二、连接数据库 三、数据库操作 3.1 查询 3.2 更新 3.3 使用循环批量更新 Python 系列文章学习记录&#xff1a; Python系列之Windows环境安装配置_开着拖拉机回家的博客-CSDN博客 Python系列之变量和运算符_开着拖拉机回家的博客-CSDN博客 Pyt…

JavaWeb13(ajax01)

目录 一. 什么是ajax 二.为什么需要AJAX? 三. 同步和异步的区别. 四.基于jQuery实现AJAX语法 4.1 语法1-$.ajax(url,[settings]). 4.1 语法2-$.get/post(url, [data], [callback], [type]). 五 .案例 5.1 ajax实现登录 ①html代码 用户登录 用户名&#xff1a; 密码…

Linux安装VNC(Linux桌面版远程)

一、Linux安装VNC服务 适用于CentOS7 #检查系统没有装GUI界面 rpm -qa | grep gnomeyum -y groupinstall "X Window System" yum -y groupinstall "GNOME Desktop"#安装VNC yum install tigervnc tigervnc-server -y检查开机运行级别 systemctl get-defa…

Shell脚本攻略:数组

目录 一、理论 1.数组概述 2.定义数组 3.数组打印 4.数组的数据类型及处理 5.数组赋值 6.数组遍历 7.数组切片 8.数组替换 9.删除数组 10.追加数组中的元素 11.数组排序算法 二、实验 1.实验一 2.实验二 3.实验三 一、理论 1.数组概述 数组是Shell的一种特殊变…

MySQL InnoDB缓存池

缓存池的作用 缓存表数据与索引数据&#xff0c;把磁盘上的数据加载到缓冲池&#xff0c;避免每次访问都进行磁盘IO&#xff0c;起到加速访问的作用。 为什么不把所有数据放到缓冲池中 凡事都具备两面性&#xff0c;抛开数据易失性不说&#xff0c;访问快速的反面是存储容量…

MongoDB 基本概念

MongoDB 部署模型 在生产环境中&#xff0c;MongoDB 经常会部署成一个三节点的复制集&#xff0c;或者一个分片集群。 我们先来看左边&#xff0c;当 MongoDB 部署为一个复制集时&#xff0c;应用程序通过驱动&#xff0c;直接请求复制集中的主节点&#xff0c;完成读写操作。另…

前端学习(DAY51)面试1

组件中的 data 为什么是一个函数&#xff1f; 如果 data 是对象的话&#xff0c;当数据改动时就会影响到所有的实例&#xff0c;可能会造成一些数据的冲突。 HTTP http&#xff1a;以安全为目标的http通道&#xff0c;HTTPs是以安全为目标的https通道&#xff08;使用SSL进…

Linux--ServerProgramming--(3)详解高性能服务器程序框架

1. 服务器框架详解 1.1 服务器模型 1.1.1 C/S 模型 此模型很简单&#xff0c;就是服务器和客户端。 此模型 非常适合资源相对集中的场合。 缺点&#xff1a;因为服务器是通信的中心&#xff0c;当访问量过大时&#xff0c;可能所有的客户都将得到很慢的响应。此缺点可由 P2P…

利用PHP导出MySQL数据表结构和SQL文件

目录 一、获取数据库所有的数据表 方法一&#xff1a;TP5 方法二:原生PHP 二、导出指定数据表的数据结构 三、 导出SQL文件 四、生成SQL语句 五、完整代码 前端 后端 语言&#xff1a;PHP 数据库&#xff1a;MySQL 功能&#xff1a;分为四部分&#xff0c;① 查出数…

智大数据比赛的总结

强国杯个人赛一定要报 hive 和hadoop基础环境配置 开启单节点集群环境 (0 / 10 分) 本次使用环境为单节点集群,对应主机名为hadoop000,使用工具连接对应主机并进行相关操作。 环境中已经安装java、Hadoop、Hive、Mysql并配置对应环境变量,安装路径为/root/software/,对应…

通过python采集关键字搜索1688工厂数据接口,1688工厂数据接口,1688API接口

1688是一个行业网站&#xff0c;主要提供中小型批发和生产商的信息&#xff0c;是中国供应商向全球采购商展示其产品的平台。在1688上&#xff0c;可以找到许多工厂和制造商的信息&#xff0c;包括公司名称、地址、联系人、联系方式、主要产品等。 采集1688工厂数据可以帮助采…