文章目录

  • 1. 什么是分段线性函数
  • 2. Ilog CPLEX 表示 Piecewise Function 分段线性函数
  • 3. java Cplex 表示分段线性函数
  • 4. matlab/gurobi 中的分段线性函数

1. 什么是分段线性函数

Piecewise function (分段线性函数)是一组线段组成的函数(一般为连续函数)。
分段线性拟合可以用来拟合曲线.

例如下面这个函数
f(x)={300+xx≤100300+100+2(x−100)100&lt;x≤200300+100+2∗(200−100)−3(x−200)x&gt;200f(x)=\begin{cases} 300+x &amp;x\leq 100\\ 300 + 100 + 2 (x-100) &amp; 100&lt;x\leq 200\\ 300 + 100 + 2 * (200-100) - 3 (x-200) &amp; x&gt;200 \end{cases} f(x)=⎩⎪⎨⎪⎧​300+x300+100+2(x−100)300+100+2∗(200−100)−3(x−200)​x≤100100<x≤200x>200​
是一个三段线性函数,它的图像是:

画图的 python 代码:

import matplotlib.pyplot as plt
import numpy as npimport matplotlib # for writing complex latex equations
matplotlib.rc('text', usetex = True)
matplotlib.rc('font', **{'family' : "sans-serif"})
params= {'text.latex.preamble' : [r'\usepackage{amsmath}']}
plt.rcParams.update(params)x = np.arange(0, 100, 1)
plt.plot(x, 300 + x)x = np.arange(100, 200, 1)
plt.plot(x, 300 + 100 + 2 * (x-100))x = np.arange(200, 300, 1)
plt.plot(x, 300 + 100 + 2 * (200 - 100) - 3 * (x-200))plt.title(r'$f(x)=\begin{cases}300+x &x\leq 100\\300 + 100 + 2 (x-100)  & 100<x\leq 200\\300 + 100 + 2 * (200-100) - 3 (x-200)  & x>200\end{cases}$')plt.xlim((0, 350)) # x scale
plt.ylim((100, 800))plt.show()

2. Ilog CPLEX 表示 Piecewise Function 分段线性函数

上面的分段线性函数 用 cplex 的 Piecewise 语法表示为:

piecewise{1 -> 100; 2->200;-3}(0,300) x;

其中, 1, 2, -3 分别是3个线段的斜率, 100, 200 是3个线段的分割点(3个线段有两个分割点), 而 (0, 300) 表示分段线性函数其中一点的横坐标与纵坐标, x 是自变量。

还能写成更专业的形式:

int n=2;
float objectiveForXEqualsStart=300;
float breakpoint[1..n]=[100,200];
float slope[1..n+1]=[1,2,-3];
dvar int x;piecewise(i in 1..n)
{slope[i] -> breakpoint[i]; slope[n+1]}(0,objectiveForXEqualsStart) x;

其中, slope[n+1] 表示最后一个线段的斜率

3. java Cplex 表示分段线性函数

java 的代码是:

IloCplex cplex = new IloCplex();IloNumVar x = cplex.numVar(-Double.MAX_VALUE, Double.MAX_VALUE);double[] points = {100, 200};
double[] slopes = {1, 2, -3};
IloNumExpr fx = cplex.piecewiseLinear(x, points, slopes, 0, 300);

4. matlab/gurobi 中的分段线性函数

matlab 目前只能针对符号函数构造分段线性函数,这在优化求解中仍然不方便。
而另一个数学规划软件 gurobi 目前只有一个 setPWLObj 方法针对目标函数设置分段线性函数。

Ilog cplex, java 表示分段线性函数 piecewise function相关推荐

  1. 报错!Exception in thread “main“ java.lang.UnsatisfiedLinkError: ilog.cplex.Cplex.CPXopenCPLEX([I)J

    在idea中配置cplex,用代码测试是否配置成功时,出现如下报错: java.lang.UnsatisfiedLinkError: no cplex2210 in java.library.path ...

  2. ILOG CPLEX OPL 编程手册,使用心得与简单例子

    CPLEX 自己的编程语言本来没打算学,这边导师说我若用OPL编写程序,他可以帮我改程序,于是就查了查. OPL 的帮助文档很长很全,看上面几个例子就会简单的建模编程了.网上有国内东北大学一位老师的几 ...

  3. IBM ILOG CPLEX Optimization Studio V12.9.0官方文档

    IBM® ILOG® CPLEX® Optimization Studio 提供了针对全部规划和调度问题构建有效优化模型和最尖端应用程序的最快速方法. 通过其集成的开发环境.描述性建模语言和内置工具, ...

  4. relu函数为分段线性函数,为什么会增加非线性元素

    relu函数为分段线性函数,为什么会增加非线性元素 我们知道激活函数的作用就是为了为神经网络增加非线性因素,使其可以拟合任意的函数.那么relu在大于的时候就是线性函数,如果我们的输出值一直是在大于0 ...

  5. java 图片分段上传_java实现分段读取文件并通过HTTP上传的方法

    本文实例讲述了java实现分段读取文件并通过HTTP上传的方法.分享给大家供大家参考.具体如下: 1.首先将文件分段,用RandomAccessFile 2.分段后将分出的内容上传到http URL ...

  6. 高级建模方法(Gurobi):线性化、分段线性函数、逻辑变量/约束

    文章目录 乘积式 绝对值 max⁡∣x∣\max |x|max∣x∣, big-M max⁡∣x∣\max |x|max∣x∣, SOS-1约束 分段线性函数 SOS2表示法 0-1变量表示法 min ...

  7. ibm ilog mysql_IBM ILOG CPLEX Optimization Studio: 一个整数规划的案例

    Integer programming, 整数规划是指规划中的变量(全部或部分)限制为整数:如果所有决策变量均要求为整数,则是纯整数规划pure integer programming:如果部分决策变 ...

  8. Matlab R2020a + Yalmip + IBM ILOG CPLEX Optimization Studio V12.10

    Windows10系统下,组合使用标题中软件进行数学优化,但IBM ILOG CPLEX Optimization Studio后来版本不再给出matlab接口(https://groups.goog ...

  9. Java 实现分段截取视频 生成gif图 使用ffmpeg操作

    Java 实现分段截取视频 生成gif图 使用ffmpeg操作 前言 核心代码 调用的抽象方法,包含逻辑处理 通过ffmpeg获取视频时长 合成gif图 删除文件夹 最终的调用 如果有更好的方式,请务 ...

最新文章

  1. linux c语言链表的简单应用之创建链表
  2. Effective Java阅读笔记——引言
  3. php学习之----采集新浪头条新闻
  4. PHP实现一个轻量级容器
  5. python写脚本看xde文件_python读文件的问题
  6. matlab划分训练集验证和测试集代码_数据集划分为训练集和测试集并生成标签--matlab代码...
  7. 万年历单片机c语言程序,51单片机c语言电子万年历完整程序.pdf
  8. 智慧产业园区标准体系研究报告 附下载
  9. 蓝筹股连环爆雷!这些蓝筹股哪些最容易爆雷?(最全名单)
  10. 14届数独-真题标准数独-Day 3-20220118
  11. 定风波·三月七日(苏轼)
  12. win7 访问局域网共享文件时提示输入网络凭据 设置开机免输入凭证进入共享盘设置
  13. 宝塔+青龙面板+机器人+诺兰
  14. js点击箭头旋转的实现
  15. html中搜索符号,html中特殊符号
  16. android 经纬度工具类,工具类之LocationUtils(定位工具类)
  17. 铁路及工程相关专业术语自动查询
  18. NFC framework introduce(二)
  19. 西北工业大学 计算机学院 姜,姜学锋(计算机学院)老师 - 西北工业大学 - 院校大全...
  20. 主机远程虚拟机linux,如何使用SSH来远程连接Linux虚拟主机?

热门文章

  1. python opencv压缩图片_OpenCV Python 缩放图片
  2. Warning:The `android.dexOptions.incremental` property is deprecated and it has no effect on the buil
  3. 计算机组成原理哈工大期末_计算机组成原理(哈工大)——课程知识点总结
  4. pythoniris补全缺失值_2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础
  5. 11.STC15W408AS单片机CCP/PCA/PWM应用
  6. 【多任务模型】腾讯MFH《Multi-Faceted Hierarchical Multi-Task Learning for a Large Number of Tasks
  7. 道一云与畅捷通T+对接集成获取报销信息列表=>凭证创建
  8. 72、公安网络视频监控系统解决方案
  9. 三大运营商URL欺骗;手机免费上网,测试,教程,服务器
  10. android 系统相册 多远,【系统相册】Android 保存图片到系统相册