MiniZInc考前佛脚贴

2023-12-06 23:30
文章标签 考前 佛脚 minizinc

本文主要是介绍MiniZInc考前佛脚贴,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MiniZInc考前佛脚贴

基本结构

它由多个项组成,每一个在其最后都有一个分号 ; 。 项可以按照任何顺序出现。例如,标识符在被使用之前不需要被声明。

aust.mzn
有八种类型的项:

  1. 引用项include <文件名>;
  2. 变量声明<类型-实例化 表达式>: <变量> [ = ] <表达式>;<类型-实例化 表达式> 给了变量的类型和实例化。用 par 来实例化声明参数,用 var 来实例化声明决策变量。 如果没有明确的实例化声明,则变量是一个参数。
  3. 赋值项<变量> = <表达式>;
  4. 约束项constraint <布尔型表达式>;
  5. 求解项solve satisfy; solve maximize <算术表达式>; solve minimize <算术表达式>;
  6. 输出项output [ <字符串表达式>, ..., <字符串表达式> ];。如果没有输出项,默认输出所有没有被以赋值项的形式赋值的决策变量值。
  7. 枚举类型声明
  8. 谓词函数和测试项

复杂结构

数组和集合

集合变量用以下方式声明set of <类型-实例化> : <变量名> ;
集合常量有以下形式{ <表达式-1>, ..., <表达式-n> },或者是以下形式的整型,枚举型或浮点型范围表达式<表达式-1> .. <表达式-2>

集合操作符:元素属于 (in), (非严格的) 集合包含 (subset), (非严格的) 超集关系 (superset), 并集 (union), 交集 (intersect), 集合差运算 (diff), 集合对称差 (symdiff) 和集合元素的个数 (card).

laplace.mzn
枚举类型,我们称为 enums , 用以下方式声明enum <变量名> ;,一个枚举类型用以下赋值的方式定义enum <变量名> = { <变量名-1>, ..., <变量名-n> } ;
其中 <变量名-1>, …, <变量名-n> 是名为 <变量名> 的枚举类型中的元素。

一维和多维数组,它们用以下类型来声明:array [ <下标集合-1>, ..., <下标集合-n> ] of <类型-实例化>

列表和集合推导式

列表推导式的一般格式是[ <表达式> | <生成元表达式> ]<表达式> 指明了如何从 <生成元表达式>产生的元素输出列表中创建元素。生成元由逗号分开的一列生成元表达式组成,选择性地跟着一个布尔型表达式。

两种格式是<生成元>, ..., <生成元><生成元>, ..., <生成元> where <布尔表达式>。第二种格式中的可选择的 <布尔型表达式> 被用作生成元表达式的过滤器:只有满足布尔型表达式的输出列表中的元素才被用来构建元素。 生成元有以下格式<标识符>, ..., <标识符> in <数组表达式>。每一个标识符是一个迭代器,轮流从数值表达式中取值,最后一个标识符变化的最迅速。
例如,列表推导式 [i + j | i, j in 1..3 where j < i] 算得 [2 + 1, 3 + 1, 3 + 2] 等同于 [3, 4, 5][3, 4, 5] 只是一个下标集合为 1..3 的数组。

集合推导式几乎和列表推导式一样:唯一的不同是这里使用 {} 括住表达式而不是 [] 。集合推导式生成的元素必须是固定的,即不能是决策变量。类似的,集合推导式的生成元和可选择的<布尔型表达式>必须是固定的。
例如 {i + j | i, j in 1..3 where j < i} 计算得到集合 {3, 4, 5}

聚合函数

算术数组的聚合函数有:sum 把元素加起来, product 把元素乘起来,和 minmax 各自返回数组中的最小和最大元素。 当作用于一个空的数组时, minmax 返回一个运行错误, sum 返回0, product 返回1。

包含有布尔型表达式的四个聚合函数有:

  1. forall ,它返回一个等于多个约束的逻辑合取的单个约束。
  2. exists ,返回多个约束的逻辑析取。因此 forall 强制数组中的所有约束都满足,而 exists 确保至少有一个约束满足。
  3. xorall 确保奇数个约束满足。
  4. 第四个函数, iffall 确保偶数个约束满足。

一个 生成表达式 有以下格式
<聚合函数> ( <生成元表达式> ) ( <表达式> )
圆括号内的 <生成元表达式> 以及构造表达式 <表达式> 是非选择性的:它们必须存在。它等同于
<聚合函数> ( [ <表达式> | <生成元表达式> ] )
<聚合函数> 可以是MiniZinc的任何由单个数组作为其参数的函数。

simple-prod-planning-data.dzn

全局约束

send-more-money.mzn

条件表达式

条件表达式的格式是
if <布尔型表达式> then <表达式-1> else <表达式-2> endif
例如,若 y 不是零,则 r 设为 x 除以 y ,否则则设为零。
int: r = if y != 0 then x div y else 0 endif;

(sudoku.mzn)

枚举类型

枚举类型操作符

  1. enum_next(X,x): 返回枚举类型 Xx 后的下一个值。 这是一个部份函数, 如果 x 是枚举类型X 最后一个值, 则函数会返回 ⊥ ⊥ 令包含这个表达式的布尔表达式返回 false
  2. enum_prev(X,x) enum_prev(X,x): 返回枚举类型 Xx 的上一个值。 enum_prev同样是一个部份函数。
  3. to_enum(X,i): 映射一个整型表达式i到一个在X的枚举类型值, 或者如果i是小于等于0或大于X中元素的个数, 则返回 :math:bot

注意,一些标准函数也是可以应用于枚举类型上
4. card(X): 返回枚举类型 X 的势。
5. min(X): 返回枚举类型 X中最小的元素。
6. max(X): 返回枚举类型 X 中最大的元素。

复杂约束

布尔型布尔常量是真或假 ,布尔型操作符有合取,即,与 (/\) ,析取,即,或 (\/) ,必要条件蕴含 (<-) ,充分条件蕴含 (->) ,充分必要蕴含 (<->) 以及非 (not)。

jobshop.mzn

集合约束

(knapsack.mzn)
关键字 var 出现在 set 声明之前,表明这个集合本身是决策变量。

谓词和函数

这篇关于MiniZInc考前佛脚贴的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/463744

相关文章

PMP考试考前注意事项总结与说明

距离2024年8月31日考试还有1天时间,学长就PMP正式考试前的一些注意事项进行详细的说明,希望对大家有帮助! 一、下载并打印准考证 请于考试之前登录外专局网站 www.chinapmp.cn,下载自己的准考证(PDF 格式的一页纸,用 A4 纸打印出即可)。 方法一:输入自己的用户名、密码后,在个人系统下载准考证并打印(准考证会在考前一周开放下载,在考试当天结束下载。)

2024年春季学期《算法分析与设计》考前热身练习(历年真题)[纯C语言+思路]

A: 递归求解 题目描述 请使用递归编写一个程序求如下表达式的计算结果:  S(1) = 1/2 S(2) = 1/2 + 1/6 S(3) = 1/2 + 1/6 + 1/12 S(4) = 1/2 + 1/6 + 1/12 + 1/20 ...... S(n) = 1/2 + 1/6 + 1/12 + 1/20 + 1/30 + ...... 输入n (1<n<=1000),输出表达式S(

6级作文预测(超精准-考前来看)

预测一:The Role of Teamwork in Achieving Success Directions: For this part, you are allowed 30 minutes to write an essay on the topic "The Role of Teamwork in Achieving Success." Discuss the importance

四六级翻译考前综合复习

翻译部分 东周时期    the Eastern Zhou Dynasty 南宋末年   the Late Southern Song Dynasty 早期/中期/末期 early/middle/late 3000多年前的中国西周    the Western Zhou Dynasty in/of China over 3,000 years ago 农历八月十五 on the 15th

四六级考前突击之主题词预测

考前主题词预测 时政类 Digital Economy 数字经济 (Digitalization数字化) Hong Kong Zhuhai-Macau Bridge 港珠澳大桥 Greater Bay Area 大湾区 Poverty Alleviation 扶贫 Anti-corruption campaign 反腐斗争 Rural Revitalizatio

四六级考前突击之同义词替换

最常见的十组同义词替换 新的 Novel-new-fresh-most recent 奇怪的 Strange-==odd==-unusual-uncommon-Unfamiliar-peculiar odd+s之后的odds变成了机会的意思,同义词有chance-opportunity 传统 Convention-tradition convention还有大会和集会的意思 形容

【2024年5月备考新增】】 考前篇(33)《必备资料(16) - 论文串讲-项目资源管理》

过程定义输入工具技术输出实际应用规划资 源管理定义如何估算、 获取、管理和利 用团队以及实物 资源的过程。1、项目章程2、项目管理计划.质量管理计划 .范围基准3、项目文件 .项目进度计划 .需求文件4、事业环境因素 .风险登记册 .干系人登记册5、组织过程资产1、专家判断2、数据表现.层级型.责任分配矩阵.文本型3、组织理论4、会议1、资源管理计划2、团队章程3、项目文件更新.假设日志.风险登记

【计算机网络】第三章·数据链路层 超硬核复习好物,考前必看!!!

🥰欢迎阅读,来和 小哇 一起进步!✊ 🌈感谢大家的阅读、点赞、收藏和关注💕 👑第三章 数据链路层 目录 1、主要信道 2、数据链路层三个基本问题: 1.封装成帧: 2.透明传输: 3.差错检测: 3、两个协议: 点对点协议PPP: 应满足的需求: PPP帧格式: 透明传输 CSMA/CD协议    三个要点: 争用期(又叫碰撞窗口): 最短有

【2024年5月备考新增】】 考前篇(28)《必备资料(11) - 论文串讲-质量管理》

过程定义输入工具技术输出实际应用规划质量管理识别项目及其可交付成果的质量要求或标准,并准备对策确保符合质量要求的过程,为整个项目如何管理和确认质量提供指南和方向1、项目章程2、项目管理计划3、项目文件需求管理计划.假设日志风险管理计划.需求文件干系人参与计划.需求跟踪矩阵范围基准.风险登记册4、事业环境因素.干系人登记册5、组织过程资产1、专家判断2、数据收集标杆对照头脑风暴.访谈3、数据分析.成

【2024年5月备考新增】】 考前篇(27)《必备资料(10) - 论文串讲-进度管理》

过程定义输入工具技术输出实际应用规划 进度 管理是为实施项目进度管理 制订政策、程序,并形 成文档化的项目进度管 理计划的过程,为如何 在整个项目过程中管理、 执行和控制进度提供指南和方向1、项目章程2、项目管理计划.范围管理计划.开发方法3、事业环境因素4、组织过程资产1、专家判断2、数据分析3、会议、进度管理计划定义 活动在WBS工作包的基础上] 识别和记录为完成项目 可交付成果而采取的所 有