AMPL IDE语法整理
文章目录
- 1、参数\集合和变量定义
- 2、目标和约束的书写
- 3、求解命令
- 4、AMPL调用不同求解器的Options目录
- 未完待续~
\qquad 最近再搞一些模型,需要用到AMPL中不同的求解器进行验证求解,故建立本博客,用于随时整理AMPL的相关语法和命令,方便后续查阅,也方便同在使用AMPL的小伙伴参考~
\qquad AMPL将模型和数据进行分离,书写一个模型的时候需要完成一个 .mod
文件和一个 .dat
文件的书写,在 .mod
书写模型参数,变量,目标,约束等要素,在 .dat
文件中书写参数的取值。
1、参数\集合和变量定义
\qquad 单个参数定义方式为:
param 参数;
#示例,定义一个名为n的参数
param n;
\qquad 集合定义方式为:
set = 范围;
#示例,定义一个0到n的集合V
set V = 0..n;
\qquad 集合参数定义方式为:
param 参数{集合};
#示例,定义一个包括0到n个元素的参数集合L
param L{V} >= 0; #注释:后面的>=0表示集合中参数的取值范围非负
\qquad 变量定义方式为:
var 变量名{集合} 类型;
#示例,定义一个(0,1)变量x,x包括三个维度的下标,每个维度的大小均为0到n
var x{V,V,V} binary;
2、目标和约束的书写
\qquad 目标的书写,以最小化某个目标obj
为例,如下所示:
minimize 目标名: 目标表达式;
minimize obj: 5*sum(i in V, j in V, k in V)x[i,j,k];
\qquad 约束的书写,以每个变量x均不小于5,并且对x第一维度的求和值不大于20,为例,如下所示:
约束名{枚举范围}:sum{求和范围} 约束表达式;
C1{i in V, j in V, k in V}x[i,j,k]>=5;
C2{i in V}: sum{j in V, k in V}x[i,j,k]<=20;
3、求解命令
\qquad 基本求解命令包括模型加载,数据加载,求解器选择,和求解四步,如下所示:
model ***.mod
data ***.dat
option solver cplex; #可以选择各种求解器,cplex gurobi xpress lingo baron等,官网有不同的价位,也有免费的cbc ipopt等可以使用
solve;
\qquad 展示求解时间信息,在AMPL用户手册中,提到了如下几种求解器求解相关的时间:
_solve_elapsed_time: elapsed seconds for most recent solve command
_solve_system_time: system CPU seconds used by most recent solve command
_solve_user_time: user CPU seconds used by most recent solve command
_solve_time: _ solve _ system _ time + _ solve _ user _ time
\qquad 笔者通过测试和与gurobi单独求解的时间对比,发现_solve_system_time
比较接近真实的模型求解时间,所以可以使用_solve_system_time
作为模型求解的时间,在模型求解完毕之后,通过display _solve_system_time
获取到这个时间值。
4、AMPL调用不同求解器的Options目录
\qquad 在使用AMPL调用不同求解器时,可以通过命令行,给求解器定义不同的求解参数,如限制求解时间等。首先给出使用AMPL给求解器给定options的命令如下所示:
option SolverName_options '命令=**';
e.g., option gurobi_options 'timelim=7200'; #限定gurobi求解时间最多为7200s
\qquad 下面笔者整理了一些求解器的options网址,有需要可以自行查看所需要的命令。
\qquad AMPL官方给出了一个不太全的求解器options参考:https://dev.ampl.com/solvers/gurobi/index.html
\qquad Gurobi官网给出的AMPl 的options参考:https://www.gurobi.com/documentation/9.5/ampl-gurobi/parameters.html
\qquad Octeract官网给出的AMPl 的options参考:https://octeract.gg/docs/octeract-engine-options/options-reference/
未完待续~
AMPL IDE语法整理相关推荐
- Markdown语法整理(详细版)
Markdown语法整理 目录 文章目录 1 概述 1.1 Markdown 1.2 Typora 2 标题和目录 2.1 标题 2.2 目录 3 段落和文本 3.1 缩进.对齐 3.3 斜体.粗体 ...
- 数据库语法整理及WAF绕过方式
数据库语法整理及WAF绕过方式 原文链接请点击:https://www.cnblogs.com/ruoli-s/p/15355611.html 关系型数据库 关系型数据库:指采用了关系模型来组织数据的 ...
- 考研语法整理(简洁版)
考研语法整理(简洁版) 1简单句 1.1简单句的核心 1.1.1简单句的核心构成 (1)主+谓 主语+ ...
- scss 基本语法整理
scss 基本语法整理 scss 基本使用 Variables 变量 嵌套 Nesting 普通嵌套 调用父选择器 属性嵌套 混合 Mixins 基本使用 携带参数 继承 extend 导入 impo ...
- velocity模板引擎-vm语法整理
velocity模板引擎-vm语法整理 模板引擎我目前接触过两次, 第一次是在前后端还未分离时,考虑到部分页面数据比较固定,一定时间内不会变动,这样每次从后台加载数据渲染页面明显会消耗性能以及资源浪费 ...
- 前端ES6的语法整理
前端ES6的语法整理 这个东东出很久了,一直没时间完整的学习整理一下. 加上现在前端的更新又特别的快,新的前端框架的东西,都需要用这个语法了,不然很多东西甚至就开始看不懂了. 2022-05-15 小 ...
- Python数据处理相关语法整理
Python数据处理相关语法整理 简介 Python自身特性总结 编程Tips 拿到新电脑配环境时做的事: 一些加速python代码的技巧 Python项目代码结构 量化策略指标计算 绝对收益率 最大 ...
- jQuery插件之【jqGrid】常用语法整理-【更新】
jqGrid常用语法整理,包含数据获取.常用函数.触发事件等 jqGrid表格数据获取相关语法 获取表格所有数据 $("#grid").jqGrid("getRowDa ...
- pythonclass语法_【python类别概念自学】class的语法整理(继承、抽象类别、魔术方法)...
class)这个概念在很多程序语言中都会出现, 感觉上挺值得一学的, 对于管理大型程序分工上也蛮有帮助的. 之前小马在自学c++时也碰到这个概念: [c++类别class的语法大全](1) 物件导向概 ...
最新文章
- WebStorm配置本地测试服务器
- 上市 10 天就遭破解!AirTag 还能买吗?
- Java集合(一)、什么是Java集合?
- 基于VSM的命名实体识别、歧义消解和指代消解
- 第十六章:Java内存模型——Java并发编程实战
- python关机linux_Python学习第157课——Linux切换用户、关机、查看正在运行的程序...
- js 判断 ““,null,undefined
- Jmeter系列之接口断言
- Tipard Mac Video Converter Ultimate如何在Mac上转换DVD 视频?
- php ftp上传文件 源码,PHP FTP上传文件
- [哈佛幸福课13 听后感]
- 恒生电子 招聘FPGA开发/验证工程师
- 拖欠银行贷款的后果有哪些
- 美国国家机器人计划2.0部分项目简介
- Linux——Vim编辑器三种模式(命令模式、输入模式、末行模式)的基本使用总结
- 新浪微相册https外链图片无法调用解决方法
- 从菜鸟到大神之自动化测试(基础一)
- android时间选择原生,安卓原生时间选择器
- RP Fiber Power 免费讲座---光纤激光器仿真设计
- drawRect绘图