精华内容
下载资源
问答
  • vivado约束使用说明

    2017-09-27 09:27:34
    该文档为vivado官方参考文档,版本对应为vivado2016.3,其中详细说明了vivado软件工具中怎样为工程添加约束文件,引脚约束和时钟约束,需要一定的英文基础,可以借助有道词典的帮助来参考。
  • 粒子群算法 约束多目标 优化 matlab代码
  • 最新粒子群算法求解约束多目标优化万能matlab代码。 粒子群算法 约束多目标 优化 matlab代码 粒子群算法 约束多目标 优化 matlab代码
  • 本代码是基于有约束条件的寻优问题,采用APSO可以加快寻优的速度,修改参数比较简单,目标函数和上下限根据自身的需要进行改动,,可以实现目标函数的寻优
  • 该代码是在VS2010平台上结合OpenCV编写,对于初学者来说有比较大的帮助。
  • Spring最完整的约束配置文件,包括bean、aop、context、tx等等,可以完美使用
  • MySQL创建表和约束条件(四)

    千次阅读 多人点赞 2019-11-15 14:09:16
    我们在创建表的命令时, 用这么两个东西, 列级别约束条件和表级别约束条件。 约束条件是干什么用的呢? 用什么作用效果呢? 数据库是存储,管理和操作数据的的仓库, 而表是真正存储数据的, 更准确的说,所有的...

    古语有云: 万恶淫为首,百善孝为先。 我们后辈当自勉。

    上一章简单介绍了 MySQL的数据类型(三),如果没有看过,请观看上一章

    一. 创建表

    上一章时,我们学习了 MySQL的数据类型, 就像Java 知道了 int,string 之后,就该学习类了, 现在,我们知道了数据类型,就该去学习表 Table了。

    在创建表时,一定要在 database 里面进行创建, 既先使用 use 数据库名来选择数据库, 再进行创建, 否则会提示 “No database selected” 的错误。

    创建表语句:

    		create table 表名(
    				列名1  数据类型  [列级别约束条件] [默认值],
    				列名2  数据类型  [列级别约束条件] [默认值],
    				......
    				列名n  数据类型  [列级别约束条件] [默认值],
    
    				[表级别约束条件]
    	
    		);
    

    其中 表名,列名1,列名2,列名n 就像Java 里面的变量一样,不能用关键字。 但与Java 不同的是, MySQL不区分大小写。 这一点,与HTML一样。

    一.一 查询该数据库下所有的表

    使用 show tables; 命令进行查询该数据库下的表。

    要先使用 use 数据 库名先选择数据库。 使用 yuejl数据库。

    有图片。

    查询所具有的表 show tables;

    有图片。

    这个表 t 是上一章在测试timestamp时创建的。

    一.二 创建一个简单的表 temp1

    创建一个简单的表, 里面只有一个字段 name, 类型是 varchar 类型, 长度是10.

    不要忘记 先 use 数据库名 来选择数据库。

    按照上面的创建表的语句进行创建:

     create table t2(
        name varchar(10)
       );
    

    有图片

    一.三 创建一个复杂的表 temp2

    创建一个复杂的表,与老蝴蝶常用的User.java 类一样,具有 id(int类型),name(varchar类型),sex(varchar类型),age(int类型),description(varchar类型) 五个字段。

    (创建时,要按照一定的层次进行书写,这样显的帅气。)

    create table t3(
         id int(11),
         name varchar(20),
        sex varchar(10),
         age int(3),
        description varchar(100)
       );
    

    有图片。

    一.四 展示所有的表

    用 show tables; 命令进行展示

    有图片。

    刚才的两个表 t2,t3 放置到这里面了。

    一.五 创建表时常见错误

    1 . 表名已经存在, 会报 表已经存在的错误
    有图片。

    2 . 列名最后一个 写添加了 , 号, 报错。

    有图片

    3 . 列与列之间,没有加 ,号报错

    有图片。

    要想 用sql语句创建表时,不报错,只有多练,多写。 前期学习者建议用sql去创建表,不建议使用数据库连接工具去创建表。

    二. 约束条件

    二.一 约束条件的由来

    我们在创建表的命令时, 用这么两个东西, 列级别约束条件和表级别约束条件。 约束条件是干什么用的呢? 用什么作用效果呢?

    数据库是存储,管理和操作数据的的仓库, 而表是真正存储数据的, 更准确的说,所有的数据都是放置在表里面的。 我们希望在存储数据之前,就希望能对数据进行一下验证, 就像 Web网站里面的前端验证和后端数据验证, 登录过滤器,权限过滤器一样, 使正确的数据才能够正常的插入,使错误的数据不能够正常插入,提示报错, 使表有个自我检查的功能。 数据库设计者们发现有这么几个常用的小验证,小约束:

    1 . 这个列上面的属性值 必须要存在。 这就是非空约束

    2 . 这个列上面的属性值必须要唯一,不能重复。 这就是唯一约束

    3 . 这个列或者这两个列可以唯一确定这一行,这一行能够通过这个列或者这两列与 其他的行区别开来。 这就是主键约束

    4 . 这个列上的值如果没有手动填充值,数据库表默认提供一下,如性别,没有填写,默认是男。 这就是默认值约束

    5 . 这个列的值是往上增加的,并且与它上一行的值有关系。 如 num次数, 它上一行的值是1, 它这一行的值是2, 它下一行的值是 3 ,下下一行的值是4。 希望这个1,2,3,4 是表自己递增的, 并不是手动插入的。 这就是自增约束。

    6 . 这个列上的值,一定来源于其他表中的值,并不是凭空出现的。发生在两个表之间。 如员工的部门属性的值,一定来源于部门表中的值。 这就是外键约束

    7 . 这个列上的值,只能是规定好的值,不能是其他以外的值。 如性别, 只能是男或者女。 手动添加其他值,包括 保密,未知,太监,人妖 之类的,都不能正确插入。 这叫做检查约束(MySQL数据库中不起作用)。

    其中,1,2,3,4,5,7 是发生在一个表内的约束, 而6是发生在两个表之间的约束。

    上面专业的说法,叫做 数据完整性。

    数据完整性分为三个部分:

    1 . 实体完整性

    2 . 域完整性

    3 . 引用完整性

    实体完整性这项规则要求每个数据表都必须有主键,而作为主键的所有字段,其属性必须是独一及非空值。

    限制字段中的数据必须乎合预设的数据类型。

    参照的完整性不允许关系中有不存在的实体引用。

    使用约束,可以很方便的保证插入数据的正确性,避免逻辑错误数据的出现,但不能保证业务错误数据的出现。 业务错误数据,需要通过业务流程控制来避免。

    二.二 约束条件的分类

    • 主键约束 Primary Key (简称 PK)
    • 非空约束 Not Null
    • 唯一约束 Unique
    • 外键约束 Foreign Key (简称 FK)
    • 默认约束 Default
    • 检查约束 Check(MySQL中不起作用)
    • 自增约束 AUTO_INCREMENT

    下面,老蝴蝶分别对其进行详细的讲解。

    三. 主键约束 Primary Key

    主键约束 分为两种, 一种是 单字段主键, 另外一种是多字段联合主键。

    三.一 单字段主键

    1 . 在创建字段时, 指定 列级别约束条件

     			列名  数据类型   Primary Key  [默认值]
    

    如:

    create table pk4(
         id int(11) primary key,
       	 name varchar(10)
        );
    

    有图片。

    2 . 在创建完所有列之后, 指定 表级别约束条件

    	[constraint 约束名] primary key (列名)
    

    其中, 约束名通常命名为: PK_表名。 常常省略 constraint 约束名, 直接用 primary key (列名)

     create table pk5(
        id int(11),
        name varchar(10),
        primary key (id)
       );
    

    有图片。

    三.二 多字段联合主键

    多字段联合主键只能使用 表级别约束条件

    	[constraint 约束名]  primary key (列名1,列名2)
    

    也常常省略 constraint 约束名。

    如 创建学生与课程 的成绩表。 其中,学生编号和课程编号是联合 主键。

     create table pk6(
        stuId int(11),  -- 学生编号
         courseId int(11), -- 课程编号
         score double(5,2),
        primary key (stuId,courseId)
      );
    

    在这里插入图片描述

    三.三 演示主键约束

    用 pk4 表做例子吧。 (关于数据的插入,后面章节会详细讲解)

    1 . 先插入一个编号为 1,名称为两个蝴蝶飞 的记录。

    insert into pk4(id,name) values(1,'两个蝴蝶飞');
    

    有图片。

    2 . 再插入一个编号为1,名称为老蝴蝶的记录。

    insert into pk4(id,name) values(1,'老蝴蝶');
    

    有图片。

    编号 id是重复的,不能重复性插入, 会报错。

    四. 非空约束 not null

    只能指定一个单字段为非空约束,没有联合字段做为非空约束。 可以让多个字段都为非空约束。

    	列名  数据类型  not null [默认值]
    

    四.一 创建非空约束

    活学活用,将前面的主键约束再练习一遍。

      create table n7(
        id int(11) primary key,
        name varchar(20) not null
       );
    


    注意,只有这一种写法。 没有 not null (name) 作为表级别约束条件的, 只能放在列级别约束。

    四.二 演示非空约束

    1 . name有值, 正常插入

    insert into n7(id,name) values(1,'两个蝴蝶飞');
    

    有图片。

    2 . name 没有值 或者插入值为 null

    insert into n7(id) values(2);
    

    有图片。

    insert into n7(id,name) values(2,null);
    

    有图片。

    五. 唯一约束 Unique

    可以为空,MySQL也允许其他的列也可以为null.这一点不像SQL Server 数据库。

    五.一 创建列约束条件的 唯一约束

    命令:

    	列名  数据类型  unique 
    

    创建语句:

    create table u8(
        id int(11) primary key,
        name varchar(20) unique
    );
    

    有图片。

    五.二 创建表约束条件的 唯一约束

    也可以创建表级别的唯一约束

    [constraint 唯一约束名] unique (列名)
    

    创建语句:

    	create table u9(
        	 id int(11) primary key,
       		 name varchar(20),
        	unique (name)
        );
    

    在这里插入图片描述

    五.二 演示唯一约束

    以 u8 表为例。

    1 .先插入一条数据, id为1, name为两个蝴蝶飞

    insert into u8(id,name) values(1,'两个蝴蝶飞');
    

    有图片。

    2 . 再创造一条数据, id为3, name仍然为两个蝴蝶飞。 name 重复了。

    insert into u8(id,name) values(3,'两个蝴蝶飞');
    

    在这里插入图片描述

    3 . 但可以插入一条空的值, 如name 的值插入为 null

    insert into u8(id,name) values(4,null);
    

    有图片。

    但 null的值,可以有多个。 再插入 id为5,名称仍然为null 的。

    insert into u8(id,name) values(5,null);
    

    有图片。

    查询一下: select * from u8;

    有图片。

    说明,唯一约束可以插入多个 null的值,并不是唯一的null值。

    六. 默认约束 default

    命令:

    	列名  数据类型  default 默认值
    

    默认约束是,如果不填入这个属性值,就用默认值代替,如果填入了,哪怕填入的值是空,也用填入的值。

    六.一 创建默认约束

    令 性别默认是 男.

    create table d10(
        id int(11) primary key,
         name varchar(20),
         sex varchar(10) default '男'
       );
    

    在这里插入图片描述

    六.二 演示默认约束

    1 . 插入一条正常的数据, 性别是男。

     insert into d10(id,name,sex) values(1,'两个蝴蝶飞','男');
    

    有图片。

    2 . 插入一条正常的数据,性别是女.

     insert into d10(id,name,sex) values(2,'精灵妹','女');
    

    有图片。

    3 . 插入一条数据,不指定性别。

     insert into d10(id,name) values(3,'老蝴蝶');
    

    有图片。

    4 . 插入一条数据,性别为null 值。

    insert into d10(id,name,sex) values(4,'岳泽霖',null);
    

    在这里插入图片描述

    5 . 查询刚才的数据 select * from d10;

    有图片。

    七 检查约束 check (MySQL数据库被分析,但是会被忽略)

    七.一 MySQL 创建列级别约束 (不起作用)

    命令:

    	列名  数据类型 check (sql表达式)
    

    可以放置值列表, 表示插入的值必须在值列表里面。 也可以放置sql表达式,表示插入的值必须符合sql表达式

    1 . 创建和演示 性别只能是男或者女

    create table d11(
         id int(11) primary key,
         name varchar(20),
         sex varchar(10) check(sex in ('男','女'))
       );
    

    有图片。

    插入性别是男 数据。

    insert into d11(id,name,sex) values(1,'两个蝴蝶飞','男');
    

    有图片

    插入性别是保密的数据

    insert into d11(id,name,sex) values(2,'老蝴蝶','保密');
    

    有图片。

    发现,竟然可以插入, 检查约束并没有起作用。

    去谷歌一下, 里面提到了 MySQL 检查约束不起作用的问题。

    CHECK
    The CHECK clause is parsed but ignored by all storage engines. See Section 1.8.2.3, “Foreign Key Differences”

    但MySQL 可以使用其他的方式来代替, 如enum 枚举类型,或者触发器。 但老蝴蝶这儿不讲解。

    为了系统的连贯性,另外检查约束 check 确实我也不太懂,所以决定用 Oracle 数据库来讲解。 Oracle 数据库支持 检查约束 Check.

    以下的内容,都是用Oracle 进行创建的。 plsql工具。

    七.二 Oracle 创建列级别约束 (起作用)

    1 . 创建和演示性别只能是男或者女

    创建表:

     create table t1(
           id int primary key,
           name varchar2(20),
           sex varchar(10) check(sex in ('男','女')) -- 也可以用  check(sex='男' or sex='女')
         );
    

    插入数据:

    	insert into t1(id,name,sex) values(1,'两个蝴蝶飞','男'); -- 正常插入
         insert into t1(id,name,sex) values(2,'老蝴蝶','保密'); -- 会提示错误
    

    有图片。

    检查约束好使。

    2 . 创建和演示 年龄必须大于18岁 小于60

    创建表:

    create table t2(
               id int primary key,
               name varchar2(20),
               age int check(age>=18 and age<=60)
          );
    

    插入数据:

    	 insert into t2(id,name,age) values(1,'两个蝴蝶飞',20); -- 正常插入
          
          insert into t2(id,name,age) values(2,'岳泽霖',16); -- 会提示错误
          
          insert into t2(id,name,age) values(3,'老蝴蝶',62); --会提示错误
    

    有图片。

    检查约束好使。

    七.三 Oracle 创建表级别约束 (起作用)

    与列级别约束 基本类似 。

    创建表:

     create table t3(
               id int primary key,
               name varchar2(20),
               sex varchar(10),
               check(sex in ('男','女')) -- 也可以用  check(sex='男' or sex='女')
           );
    

    插入数据:

     	  insert into t3(id,name,sex) values(1,'两个蝴蝶飞','男'); -- 正常插入
          insert into t3(id,name,sex) values(2,'老蝴蝶','保密'); -- 会提示错误
    

    年龄的那个类似:

    创建表:

    create table t4(
               id int primary key,
               name varchar2(20),
               age int,
               check(age>=18 and age<=60)
          );
    

    插入数据:

    	 insert into t4(id,name,age) values(1,'两个蝴蝶飞',20); -- 正常插入
          
          insert into t4(id,name,age) values(2,'岳泽霖',16); -- 会提示错误
          
          insert into t4(id,name,age) values(3,'老蝴蝶',62); --会提示错误
    

    八. 自增约束 AUTO_INCREMENT

    自增约束,只能用于整数类型,默认开始值是1,每次增加1,用于数据库生成不重复的主键。(但在高并发环境下,这种方式生成的主键不一定正确)

    	列名  数据类型  AUTO_INCREMENT
    

    八.一 创建自增约束

     create table a12(
         id int(11) primary key auto_increment,
         name varchar(20)
       );
    

    有图片

    八.二 演示自增约束

    1 . 插入第一个数据,不插入id 的值

    insert into a12(name) values('两个蝴蝶飞');
    

    有图片。

    2 . 插入第二个数据,不插入id的值

    insert into a12(name) values('老蝴蝶');
    

    有图片

    3 . 查询数据

    有图片。

    九. 外键约束 Foreign Key

    外键约束不像上面的那些约束,是发生在一个表之间的, 外键约束 Foreign Key 是发生在两个表之间的, 这两个表,一个叫主表(父表), 一个叫从表(子表)。 其中,在子表里面定义外键约束, 引用主表中的主键。 外键可以是一列也可以是多列, 但一般都是一列。 一个表里面可以给多个列都定义外键。 就像 员工的课程成绩表一样, 员工编号是员工表的外键, 课程编号是课程表的外键。 外键是参数完整性, 里面的值可以为null值, 但如果不为null值, 则必须是主表主键的某个值。 注意,子表的外键必须引用的是主表的主键,主表的 unqiue 属性都不行,必须是主键。

    九.一 创建外键约束 Foreign Key

    命令:

    	[constraint 外键约束名] foreign key (列名)  references 主表名(主键列名)
    

    是表级别的约束条件。

    建议是用户自己手动添加外键约束名, constraint 外键约束名 不省略。

    常见的部门和员工表。 即员工表里面的部门编号一定是部门表的主键。

    1 . 创建部门表 dept

    create table dept(
        id int(11) primary key,
        name varchar(20)
        );
    

    有图片。

    2 .创建员工表 user

    create table user(
        id int(11) primary key,
         name varchar(20),
         description varchar(100),
         deptId int(11),
         constraint fk_user_deptId foreign key(deptId) references dept(id)
        );
    

    有图片。

    创建外键成功。

    九.二 外键约束演示

    1 . 先往部门表里面插入两条数据

    insert into dept(id,name) values(1,'信息部'),(2,'开发部');
    

    有图片。

    2 .往user 表里面插入 部门编号为 1的数据, 是正确的数据

     insert into user(id,name,description,deptId) values(1,'两个蝴蝶飞','一个快乐的程序员',1);
    

    有图片。

    3 . 往user 表里面插入部门编号为3的数据。 没有这个部门,是错误的数据。

     insert into user(id,name,description,deptId) values(2,'老蝴蝶','一个快乐的程序员',3);
    

    有图片。

    报外键约束的错误。 子表中插入父表中主键没有的属性值会报错。

    4 . 删除父表中的数据, 即删除父表中 部门编号为1的那条数据

    delete from dept where id=1;
    

    有图片。

    因为父表中的数据在子表中被引用了,所以是无法直接删除的, 可以先将子表中引用的那条数据删除,或者将deptId 更新成null, 再删除父表中的数据才可以。

    update user set deptId=null where id=1;
    
    delete from dept where id=1;
    

    有图片。

    十. 查看表结构

    十.一 describe 表名/desc 表名 查看

    describe user;
    

    有图片。

    也可以用简写的形式 : desc 表名

    desc user;
    

    有图片。

    侧重点是各个列的信息。

    其中:

    1. filed      指的是列名
    2. type     指的是列名的数据类型
    3. null     表示该列是否可以存储null值
    4. key     是否已经编制索引。 PRI 表示主键,UNI 表示 unique 索引的一部分, MUL 表示可允许出现多次
    5. Default      是否有默认值
    6. extra:     该列的附加信息, 如AUTO_INCREMENT

    十.一 show create table 表名 查看

    show create table user\G	
    

    有图片。

    会将创建 table 时的sql 语句打印出来, 还包括引擎和编码格式。

    侧重点是sql 创建语句。

    加\G 不加 \G 都可以, 加\G 可以使显示结果更加直观。



    谢谢!!!
    展开全文
  • mybatis-dtd约束文件

    2016-10-22 09:24:28
    dtd,是mybatis框架中的xml约束文件,能够规范xml文件的书写
  • 非线性规划(二): Matlab 求解约束极值问题

    万次阅读 多人点赞 2019-04-24 11:10:34
    非线性规划(一):定义与数值优化...非线性规划(二): Matlab 求解约束极值问题 目录 约束极值问题 1 二次规划 2 罚函数法 3 Matlab 求约束极值问题 3.1 fminbnd 函数 3.2 fseminf 函数 3.3 fminimax 函数...


    非线性规划(一):定义与数值优化方法(梯度法、牛顿法、拟牛顿法、变尺度法)

    非线性规划(二): Matlab 求解约束极值问题


    目录

    约束极值问题 

    1  二次规划         2  罚函数法 

    3  Matlab 求约束极值问题 

    3.1  fminbnd 函数           3.2  fseminf 函数                 3.3  fminimax 函数 

    4 Matlab 优化工具箱的用户图形界面解法 

    4  非线性规划的应用:飞行管理问题

    4.1  模型一            4.2  模型二                习 题 


    约束极值问题 

    有约束条件的极值问题称为约束极值问题,也叫规划问题。 求解约束极值问题要比求解无约束极值问题困难得多。为了简化其优化工作,可采用以下方法:将约束问题化为无约束问题将非线性规划问题化为线性规划问题,以及 能将复杂问题变换为较简单问题的其它方法。 库恩—塔克条件是非线性规划领域中重要的理论成果之一,是确定某点为优点 的必要条件,但一般说它并不是充分条件(对于凸规划,它既是优点存在的必要条件, 同时也是充分条件)。 

    无约束问题的求解请参考这里:非线性规划(一):定义与数值优化方法

    1  二次规划 

    若某非线性规划的目标函数为自变量 x的二次函数约束条件又全是线性的,就称 这种规划为二次规划。

    Matlab 中求解二次规划的命令是 

    [X,FVAL]= QUADPROG(H,f,A,b,Aeq,beq,LB,UB,X0,OPTIONS) 

    返回值 X 是决策向量 x的值,返回值 FVAL 是目标函数在 x处的值。(具体细节可以参 看在 Matlab 指令中运行 help quadprog 后的帮助)。 

    h=[4,-4;-4,8]; 
    f=[-6;-3]; 
    a=[1,1;4,1]; 
    b=[3;9]; 
    [x,value]=quadprog(h,f,a,b,[],[],zeros(2,1)) 

    2  罚函数法 

    利用罚函数法,可将非线性规划问题的求解,转化为求解一系列无约束极值问题, 因而也称这种方法为序列无约束小化技术,简记为 SUMT (Sequential Unconstrained Minization Technique)。 罚函数法求解非线性规划问题的思想是,利用问题中的约束函数作出适当的罚函 数,由此构造出带参数的增广目标函数,把问题转化为无约束非线性规划问题。主要有 两种形式,一种叫外罚函数法,另一种叫内罚函数法,下面介绍外罚函数法

    解  (i)编写 M 文件 test.m  

    function g=test(x); 
    M=50000; 
    f=x(1)^2+x(2)^2+8; 
    g=f-M*min(x(1),0)-M*min(x(2),0)-M*min(x(1)^2-x(2),0)+... 
      M*abs(-x(1)-x(2)^2+2); 

    或者是利用Matlab的求矩阵的极小值和极大值函数编写test.m如下: 

    function g=test(x); 
    M=50000; 
    f=x(1)^2+x(2)^2+8; 
    g=f-M*sum(min([x';zeros(1,2)]))-M*min(x(1)^2-x(2),0)+...   
      M*abs(-x(1)-x(2)^2+2); 

    我们也可以修改罚函数的定义,编写test.m如下: 

    function g=test(x); 
    M=50000; 
    f=x(1)^2+x(2)^2+8; 
    g=f-M*min(min(x),0)-M*min(x(1)^2-x(2),0)+M*(-x(1)-x(2)^2+2)^2; 

     (ii)在 Matlab 命令窗口输入 

    [x,y]=fminunc('test',rand(2,1)) 

    即可求得问题的解。 

    3  Matlab 求约束极值问题 

    在 Matlab 优化工具箱中,用于求解约束优化问题的函数有:fminbnd、fmincon、 quadprog、fseminf、fminimax,上面我们已经介绍了函数 fmincon 和 quadprog。 

    3.1  fminbnd 函数 

    求单变量非线性函数在区间上的极小值            

    Matlab 的命令为

    [X,FVAL] = FMINBND(FUN,x1,x2,OPTIONS)

    它的返回值是极小点x 和函数的极小值。这里 fun 是用 M 文件定义的函数或 Matlab 中 的单变量数学函数。 

    3.2  fseminf 函数 

    上述问题的 Matlab 命令格式为

    X=FSEMINF(FUN,X0,NTHETA,SEMINFCON,A,B,Aeq,Beq) 

    解  (1)编写 M 文件 fun6.m 定义目标函数如下: 

    function f=fun6(x,s); 
    f=sum((x-0.5).^2); 

    (2)编写 M 文件 fun7.m 定义约束条件如下: 

    function [c,ceq,k1,k2,s]=fun7(x,s); 
    c=[];ceq=[]; 
    if isnan(s(1,1))     
        s=[0.2,0;0.2 0]; 
    end 
    %取样值 
    w1=1:s(1,1):100; 
    w2=1:s(2,1):100; 
    %半无穷约束 
    k1=sin(w1*x(1)).*cos(w1*x(2))-1/1000*(w1-50).^2-sin(w1*x(3))-x(3)-1; k2=sin(w2*x(2)).*cos(w2*x(1))-1/1000*(w2-50).^2-sin(w2*x(3))-x(3)-1; 
    %画出半无穷约束的图形 
    plot(w1,k1,'-',w2,k2,'+'); 

    (3)调用函数 fseminf 在 Matlab 的命令窗口输入  

    [x,y]=fseminf(@fun6,rand(3,1),2,@fun7) 

    即可求得结果。

    3.3  fminimax 函数 

    上述问题的 Matlab 命令为    

     X=FMINIMAX(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON) 

    解  (1)编写 M 文件 fun8.m 定义向量函数如下: 

    function f=fun8(x); 
    f=[2*x(1)^2+x(2)^2-48*x(1)-40*x(2)+304     
       -x(1)^2-3*x(2)^2     
        x(1)+3*x(2)-18     
       -x(1)-x(2)     
        x(1)+x(2)-8]; 

    (2)调用函数 fminimax 

    [x,y]=fminimax(@fun8,rand(2,1)) 

    3.3.4  利用梯度求解约束优化问题 

    分析:当使用梯度求解上述问题时,效率更高并且结果更准确。 题目中目标函数的梯度为: 

    解  (1)编写 M 文件 fun9.m 定义目标函数及梯度函数: 

    function [f,df]=fun9(x); 
    f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); 
    df=[exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+8*x(1)+6*x(2)+1);exp(x(1))*(4*x(2) +4*x(1)+2)]; 

    (2)编写 M 文件 fun10.m 定义约束条件及约束条件的梯度函数: 

    function [c,ceq,dc,dceq]=fun10(x); 
    c=[x(1)*x(2)-x(1)-x(2)+1.5;-x(1)*x(2)-10]; 
    dc=[x(2)-1,-x(2);x(1)-1,-x(1)]; ceq=[];dceq=[]; 

    (3)调用函数 fmincon,编写主函数文件 example13.m 如下: 

    %采用标准算法 
    options=optimset('largescale','off'); 
    %采用梯度 
    options=optimset(options,'GradObj','on','GradConstr','on'); 
    [x,y]=fmincon(@fun9,rand(2,1),[],[],[],[],[],[],@fun10,options) 
     

    4 Matlab 优化工具箱的用户图形界面解法 

    Matlab 优化工具箱中的 optimtool 命令提供了优化问题的用户图形界面解法。 optimtool 可应用到所有优化问题的求解,计算结果可以输出到 Matlab 工作空间中。 
     

    例 14  用 optimtool 重新求解例 2。 

    解  (i)编写 M 文件 fun1.m 定义目标函数 

    function f=fun1(x); 
    f=sum(x.^2)+8; 
    

    (ii)编写M文件fun2.m定义非线性约束条件 

    function [g,h]=fun2(x); 
    g=[-x(1)^2+x(2)-x(3)^2 
        x(1)+x(2)^2+x(3)^3-20];  %非线性不等式约束 
    h=[-x(1)-x(2)^2+2 
       x(2)+2*x(3)^2-3]; %非线性等式约束 

    利用例 2 已经定义好的函数 fun1 和 fun2。在 Matlab 命令窗口运行 optimtool,就打 开图形界面,如图 1 所示,填入有关的参数,未填入的参数取值为空或者为默认值,然 后用鼠标点一下“start”按钮,就得到求解结果,再使用“file”菜单下的“Export to Workspace…”选项,把计算结果输出到 Matlab 工作空间中去。 

     

    4  非线性规划的应用:飞行管理问题

    在约 10,000m 高空的某边长 160km 的正方形区域内,经常有若干架飞机作水平 飞行。区域内每架飞机的位置和速度向量均由计算机记录其数据,以便进行飞行管理。 当一架欲进入该区域的飞机到达区域边缘时,记录其数据后,要立即计算并判断是否会 与区域内的飞机发生碰撞。如果会碰撞,则应计算如何调整各架(包括新进入的)飞机 飞行的方向角,以避免碰撞。现假定条件如下:

    1)不碰撞的标准为任意两架飞机的距离大于 8km;

    2)飞机飞行方向角调整的幅度不应超过 30 度;

    3)所有飞机飞行速度均为每小时 800km;

    4)进入该区域的飞机在到达区域边缘时,与区域内飞机的距离应在 60km 以上;

    5)多需考虑 6 架飞机;

    6)不必考虑飞机离开此区域后的状况。

    请你对这个避免碰撞的飞行管理问题建立数学模型,列出计算步骤,对以下数据进 行计算(方向角误差不超过 0.01 度),要求飞机飞行方向角调整的幅度尽量小。 

    设该区域 4 个顶点的座标为(0,0),(160,0),(160,160),(0,160)。记录数据见表 1。 

    4.1  模型一 

    本问题中的优化目标函数可以有不同的形式:如使所有飞机的大调整量小; 所有飞机的调整量绝对值之和小等。这里以所有飞机的调整量绝对值之和小为目标 函数,可以得到如下的数学规划模型: 

    利用如下的程序: 

    clc,clear 
    x0=[150 85 150 145 130 0]; 
    y0=[140 85 155 50 150 0]; 
    q=[243 236 220.5 159 230 52]; 
    xy0=[x0; y0]; 
    d0=dist(xy0);   %求矩阵各个列向量之间的距离 
    d0(find(d0==0))=inf; 
    a0=asind(8./d0)  %以度为单位的反函数 
    xy1=x0+i*y0 xy2=exp(i*q*pi/180) 
    for m=1:6      
        for n=1:6          
            if n~=m          
                b0(m,n)=angle((xy2(n)-xy2(m))/(xy1(m)-xy1(n)));           
            end 
        end 
    end 
    b0=b0*180/pi; 
    dlmwrite('txt1.txt',a0,'delimiter', '\t','newline','PC'); 
    fid=fopen('txt1.txt','a'); 
    fwrite(fid,'~','char');       %往纯文本文件中写 LINGO 数据的分割符 dlmwrite('txt1.txt',b0,'delimiter', '\t','newline','PC','-append','roffset', 1) 

    上述飞行管理的数学规划模型可如下输入 LINGO 求解: 

     

    model: 
    sets: 
    plane/1..6/:delta; 
    link(plane,plane):alpha,beta; 
    endsets 
    data: 
    alpha=@file('txt1.txt');   !需要在alpha的数据后面加上分隔符"~"; 
    beta=@file('txt1.txt'); 
    enddata 
    min=@sum(plane:@abs(delta)); 
    @for(plane:@bnd(-30,delta,30)); @for(link(i,j)|i#ne#j:@abs(beta(i,j)+0.5*delta(i)+0.5*delta(j))>a 
    lpha(i,j)); 
    end

     

    4.2  模型二

     

     

     计算到这里也没有展开的必要了。由于目标的约束是< 0和 <= 的不等式约束。用罚函数的方式编写和求解,有思路的人请留言到评论区讨论吧


    习 题 

     


    非线性规划(一):定义与数值优化方法(梯度法、牛顿法、拟牛顿法、变尺度法)

    非线性规划(二): Matlab 求解约束极值问题

    展开全文
  • SQL Server 2012 外键约束(定义外键、删除外键)

    万次阅读 多人点赞 2019-04-21 20:00:26
    文章目录准备知识定义外键使用SSMS工具定义外键使用SQL方式定义外键删除外键使用SSMS工具删除外键方式一:在对象资源管理器中删除主键方式二:在表设计器中删除主键使用SQL方式删除外键 ...    FK约束的...







    准备知识

        外键(FK)是用于建立或加强两个表数据之间的链接的一列或多列。
        通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的连接,这个列就成为第二个表的外键
        FK约束的目的是控制存储在外表中的数据,同时可以控制对主键表中数据的修改
        例如:publishers表中记录出版商的信息,titles表中记录书的信息,如果在publishers的表中删除一个出版商,而这个出版商的ID在titles表中记录书的信息时被使用了,则这两个表之间关联的完整性将被破坏,即titles表中该出版商的书籍因为与publisher表中的数据没有链接而变的孤立。
        FK约束可以防止这种情况的发生,如果主键表中数据的更改使得与外键表中数据的链接失效,则这种更改是不能实现的;如果试图删除主键表中的行或试图修改主键值,而该主键值与另一个表的FK约束值相关,则该操作不可实现。若要成功的更改或删除FK约束的行,可以现在外键表中删除外键数据或更改外键数据,然后将外键连接到不同的主键数据上去
        外键主要是用来控制数据库中的数据完整性的,当对一个表的数据进行操作时,和他有关联的一个表或多个表的数据能够同时发生改变



    两个数据表结构如下所示:
    (1)student表
    在这里插入图片描述
    (2)class表
    在这里插入图片描述

    定义外键

    使用SSMS工具定义外键
    1. 右击需要添加外键的数据表,选择“设计”。
      在这里插入图片描述
    2. 进入表设计器界面,选择工具栏上的关系图标,或者右击数据表中的行,在弹出的对话框中选择“关系”。
      在这里插入图片描述
      在这里插入图片描述
    3. 进入外键关系对话框,单击“添加”。
      在这里插入图片描述
    4. 点击右侧网格中的“表和列规范”,再点击右侧的“…”按钮。
      在这里插入图片描述
    5. 进入表和列对话框,从主键表中选择需要外键所在的数据表。
      在这里插入图片描述
    6. 在主键表下方的表格中,选择此表中的主键列,在相邻的网格中选择外键表中相应的外键列。
      在这里插入图片描述
    7. 在“关系名”中填写适合的关系名,点击“确定”。
      在这里插入图片描述
    8. 关闭外键关系对话框,点击保存键,或者按Ctrl+F5键进行保存。展开刚开打开的数据表,再展开“键”,就可以看到刚才定义的外键。
      在这里插入图片描述
      注意:
      (1)定义外键约束的列的数据类型必须和引用的主键列的数据类型相通
      (2)在定义外键约束之前,外键所在的表必须已经定义了主键

    使用SQL方式定义外键
    方式一:在创建数据表的时候定义外键
    1. 在SSMS工具栏中单击“新建查询”,打开“SQL编辑器”窗口
      在这里插入图片描述
    2. 输入创建SQL代码
    USE schoolDB                                                 --打开数据库schoolDB
    GO
    IF EXISTS(SELECT * FROM sysobjects WHERE name='student') 
    DROP TABLE student                --检查student是否已经存在,如果存在,则删除
    GO
    CREATE TABLE student                                           --表名为student
    (
    	  StuID int NOT NULL,                                           --学生学号
    	  StuName varchar(15) NOT NULL,                                 --学生姓名
    	  Sex char(2) NULL,                                             --性别
    	  Major varchar(20) NULL,                                      --所选专业
    	  ClassID int NULL FOREIGN KEY REFERENCES class(ClassID)
    
    )
    
    
    1. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进行语法分析,确保SQL语句语法正确。
      在这里插入图片描述
    2. 点击“执行”按钮,或按住F5,执行SQL代码。
      在这里插入图片描述
    3. 刷新并查看数据表中的键。
      在这里插入图片描述

    方式二:修改数据表定义外键
    1. 在SSMS工具栏中单击“新建查询”,打开“SQL编辑器”窗口
      在这里插入图片描述
    2. 输入创建SQL代码
    USE schoolDB
    GO
    ALTER TABLE student --打开schoolDB数据库
    ADD CONSTRAINT FK_student_class FOREIGN KEY(ClassID) REFERENCES class(ClassID)     
                              --在表product的CatID列上定义与表category的外键关系
    
    
    1. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进行语法分析,确保SQL语句语法正确。
      在这里插入图片描述
    2. 点击“执行”按钮,或按住F5,执行SQL代码。
      在这里插入图片描述
    3. 刷新并查看数据表中的键。
      在这里插入图片描述


    删除外键

    使用SSMS工具删除外键
    方式一:在对象资源管理器中删除外键
    1. 展开需要删除外键的数据表,然后再展开“键”。
      在这里插入图片描述
    2. 右击需要删除的外键,选择“删除”。
      在这里插入图片描述
    3. 在删除对象界面,点击“确定”,即可完成外键删除。
      在这里插入图片描述
    方式二:在表设计器中删除外键
    1. 右击需要删除外键的数据表,选择“设计”。
      在这里插入图片描述
    2. 进入表设计器界面,右击鼠标,选择“关系”。
      在这里插入图片描述
    3. 在外键关系对话框中选择需要删除的外键,点击“删除”,完成外键删除。
      在这里插入图片描述
    使用SQL方式删除外键
    1. 在SSMS工具栏中单击“新建查询”,打开“SQL编辑器”窗口
      在这里插入图片描述

    2. 输入创建SQL代码

    USE schoolDB --打开schoolDB数据库
    GO
    ALTER TABLE student 
    DROP CONSTRAINT FK_student_class   --删除表student的外键FK_student_class
    
    
    1. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进行语法分析,确保SQL语句语法正确。
      在这里插入图片描述
    2. 点击“执行”按钮,或按住F5,执行SQL代码。
      在这里插入图片描述
    3. 外键已被删除。
      在这里插入图片描述
    展开全文
  • 多周期路径约束   多周期路径,我们一般按照以下4个步骤来约束: 带有使能的数据   首先来看带有使能的数据,在本工程中的Tming Report中,也提示了同一个时钟域之间的几个路径建立时间不满足要求   其实...

    多周期路径约束

      多周期路径,我们一般按照以下4个步骤来约束:

    1. 带有使能的数据

      首先来看带有使能的数据,在本工程中的Tming Report中,也提示了同一个时钟域之间的几个路径建立时间不满足要求

    在这里插入图片描述

      其实这几个路径都是带有使能的路径,使能的周期为2倍的时钟周期,本来就应该在2个时钟周期内去判断时序收敛。因此,我们添加时序约束:

    set_multicycle_path 2 -setup -from [get_cells {cmd_parse_i0/send_resp_data_reg[*]} -include_replicated_objects] -to [get_cells {resp_gen_i0/to_bcd_i0/bcd_out_reg[*]}]
    set_multicycle_path 1 -hold -from [get_cells {cmd_parse_i0/send_resp_data_reg[*]} -include_replicated_objects] -to [get_cells {resp_gen_i0/to_bcd_i0/bcd_out_reg[*]}]
    

    也可以写为:

    set_multicycle_path -from [get_cells {cmd_parse_i0/send_resp_data_reg[*]} -include_replicated_objects] -to [get_cells {resp_gen_i0/to_bcd_i0/bcd_out_reg[*]}] 2
    set_multicycle_path -hold -from [get_cells {cmd_parse_i0/send_resp_data_reg[*]} -include_replicated_objects] -to [get_cells {resp_gen_i0/to_bcd_i0/bcd_out_reg[*]}] 1
    

    这两种写法是等价的。

    我们也可以直接点击右键通过GUI的方式进行约束,效果都是一样的。

      在工程的uart_tx_ctl.vuart_rx_ctl.v文件中,也存在带有使能的数据,但这些路径在未加多路径约束时并未报出时序错误或者警告。

    在接收端,捕获时钟频率是200MHz,串口速率是115200,采用16倍的Oversampling,因此使能信号周期是时钟周期的200e6/115200/16=108.5倍。

    在接收端,捕获时钟频率是166667MHz,串口速率是115200,采用16倍的Oversampling,因此使能信号周期是时钟周期的166.667e6/115200/16=90.4倍。

      因此,时序约束如下:

    # 串口接收端
    set_multicycle_path  -from [get_cells uart_rx_i0/uart_rx_ctl_i0/* -filter IS_SEQUENTIAL] -to [get_cells uart_rx_i0/uart_rx_ctl_i0/* -filter IS_SEQUENTIAL] 108
    set_multicycle_path -hold -from [get_cells uart_rx_i0/uart_rx_ctl_i0/* -filter IS_SEQUENTIAL] -to [get_cells uart_rx_i0/uart_rx_ctl_i0/* -filter IS_SEQUENTIAL] 107
    # 串口发送端
    set_multicycle_path -from [get_cells uart_tx_i0/uart_tx_ctl_i0/* -filter IS_SEQUENTIAL] -to [get_cells uart_tx_i0/uart_tx_ctl_i0/* -filter IS_SEQUENTIAL] 90
    set_multicycle_path -hold -from [get_cells uart_tx_i0/uart_tx_ctl_i0/* -filter IS_SEQUENTIAL] -to [get_cells uart_tx_i0/uart_tx_ctl_i0/* -filter IS_SEQUENTIAL] 89
    

    约束中的filter参数也将在下一章节具体讲解。

    1. 两个有数据交互的时钟之间存在相位差

      在本工程中,没有这种应用场景,因此不需要添加此类约束。

    1. 存在快时钟到慢时钟的路径

      在本工程中,没有这种应用场景,因此不需要添加此类约束。

    1. 存在慢时钟到快时钟的路径

      在本工程中,没有这种应用场景,因此不需要添加此类约束。

    综上,我们所有的时序约束如下:

    # 主时钟约束
    create_clock -period 25.000 -name clk2 [get_ports clk_in2]
    
    # 衍生时钟约束
    create_generated_clock -name clk_samp -source [get_pins clk_gen_i0/clk_core_i0/clk_tx] -divide_by 32 [get_pins clk_gen_i0/BUFHCE_clk_samp_i0/O]
    create_generated_clock -name spi_clk -source [get_pins dac_spi_i0/out_ddr_flop_spi_clk_i0/ODDR_inst/C] -divide_by 1 -invert [get_ports spi_clk_pin]
    create_generated_clock -name clk_tx -source [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1] [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT1]
    create_generated_clock -name clk_rx -source [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1] [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT0]
    
    # 设置异步时钟
    set_clock_groups -asynchronous -group [get_clocks clk_samp] -group [get_clocks clk2]
    
    # 延迟约束
    create_clock -period 6.000 -name virtual_clock
    set_input_delay -clock [get_clocks -of_objects [get_ports clk_pin_p]] 0.000 [get_ports rxd_pin]
    set_input_delay -clock [get_clocks -of_objects [get_ports clk_pin_p]] -min -0.500 [get_ports rxd_pin]
    set_input_delay -clock virtual_clock -max 0.000 [get_ports lb_sel_pin]
    set_input_delay -clock virtual_clock -min -0.500 [get_ports lb_sel_pin]
    set_output_delay -clock virtual_clock -max 0.000 [get_ports {txd_pin {led_pins[*]}}]
    set_output_delay -clock virtual_clock -min -0.500 [get_ports {txd_pin {led_pins[*]}}]
    set_output_delay -clock spi_clk -max 1.000 [get_ports {spi_mosi_pin dac_cs_n_pin dac_clr_n_pin}]
    set_output_delay -clock spi_clk -min -1.000 [get_ports {spi_mosi_pin dac_cs_n_pin dac_clr_n_pin}]
    
    # 伪路径约束
    set_false_path -from [get_clocks clk_rx] -to [get_clocks clk_tx]
    set_false_path -from [get_ports rst_pin]
    
    # 多周期约束
    set_multicycle_path 2 -setup -from [get_cells {cmd_parse_i0/send_resp_data_reg[*]} -include_replicated_objects] -to [get_cells {resp_gen_i0/to_bcd_i0/bcd_out_reg[*]}]
    set_multicycle_path 1 -hold -from [get_cells {cmd_parse_i0/send_resp_data_reg[*]} -include_replicated_objects] -to [get_cells {resp_gen_i0/to_bcd_i0/bcd_out_reg[*]}]
    
    # 串口接收端
    set_multicycle_path 108 -setup -from [get_cells uart_rx_i0/uart_rx_ctl_i0/* -filter IS_SEQUENTIAL] -to [get_cells uart_rx_i0/uart_rx_ctl_i0/* -filter IS_SEQUENTIAL]
    set_multicycle_path 107 -hold -from [get_cells uart_rx_i0/uart_rx_ctl_i0/* -filter IS_SEQUENTIAL] -to [get_cells uart_rx_i0/uart_rx_ctl_i0/* -filter IS_SEQUENTIAL]
    # 串口发送端
    set_multicycle_path 90 -setup -from [get_cells uart_tx_i0/uart_tx_ctl_i0/* -filter IS_SEQUENTIAL] -to [get_cells uart_tx_i0/uart_tx_ctl_i0/* -filter IS_SEQUENTIAL] 
    set_multicycle_path 89 -hold -from [get_cells uart_tx_i0/uart_tx_ctl_i0/* -filter IS_SEQUENTIAL] -to [get_cells uart_tx_i0/uart_tx_ctl_i0/* -filter IS_SEQUENTIAL]
    

      重新Synthesis并Implementation后,可以看到,已经没有了时序错误

    image

      仅有的两个warning也只是说rst没有设置input_delay,spi_clk_pin没有设置output_delay,但我们已经对rst设置了伪路径,而spi_clk_pin是我们约束的输出时钟,无需设置output_delay。

    image

      到这里,教科书版的时序约束教程就基本讲完了。但我们平时的工程中,跟上面这种约束还是有差异的:

    1. 首先是虚拟时钟,这个约束在平时的工程中基本不会用到,像需要设置虚拟时钟的场景,我们也都是通过设计来保证时序收敛,设置虚拟时钟的意义不大。
    2. 第二就是output delay,在FPGA的最后一级寄存器到输出的路径上,往往都使用了IOB,也就是IO block,因此最后一级寄存器的位置是固定的,从buffer到pad的走线延时是确定的。在这种情况下,是否满足时序要求完全取决于设计,做约束只是验证一下看看时序是否收敛。所以也基本不做。但是input delay是需要的,因为这是上一级器件输出的时序关系。
    3. 第三个就是多周期路径,我们讲了那么多多周期路径的应用场景,但实际我们是根据Timing report来进行约束的,即便那几种场景都存在,但如果Timing report中没有提示任何的时序 warning,我们往往也不会去添加约束。

    FPGA时序约束教程所有文章:

    1 FPGA时序约束理论篇之建立保持时间
    2 FPGA时序约束理论篇之时序路径与时序模型
    3 FPGA时序约束理论篇之IO约束
    4 FPGA时序约束理论篇之时钟周期约束
    5 FPGA时序约束理论篇之两种时序例外
    6 FPGA时序约束理论篇之xdc约束优先级
    7 FPGA时序约束实战篇之梳理时钟树
    8 FPGA时序约束实战篇之主时钟约束
    9 FPGA时序约束实战篇之衍生时钟约束
    10 FPGA时序约束实战篇之延迟约束
    11 FPGA时序约束实战篇之伪路径约束
    12 FPGA时序约束实战篇之多周期路径约束
    13 FPGA时序约束之Vivado辅助工具
    14 FPGA时序约束之Tcl命令的对象及属性

    个人网站:http://www.technomania.cn/

    微信公众号:Quant_Times
          Reading_Times

    展开全文
  • 花了一天写的MATLAB遗传算法,解决多车有容量约束VRP问题,运行成功。花了一天写的MATLAB遗传算法,解决多车有容量约束VRP问题,运行成功。花了一天写的MATLAB遗传算法,解决多车有容量约束VRP问题,运行成功。
  •   时钟周期约束,顾名思义,就是我们对时钟的周期进行约束,这个约束是我们用的最多的约束了,也是最重要的约束。   下面我们讲一些Vivado中时钟约束指令。 1. Create_clock   在Vivado中使用create_clock来...
  • NSGA2 约束条件处理的方法,包括非线性约束
  • 【Vivado约束学习】 时钟约束

    千次阅读 2019-08-22 10:31:15
    【Vivado约束学习】 时钟约束 1 时钟介绍 在数字设计中,时钟代表从寄存器(register)到寄存器可靠传输数据的时间基准。Xilinx Vivado集成设计环境(IDE)时序引擎使用ClocK特征计算时序路径要求,并通过松弛计算...
  • 表中有数据不能创建约束   B.视图下设置后,要点击保存(只有保存后在才看的到) c 别忘了,点刷新,才会出来呀! 1、主键约束 primary key 主键是每行的唯一标识符,仅仅通过它就能准确定位到一行,...
  • 1、表的约束 约束,是对表中的数据进行限定,保证数据的正确性、有效性和完整性,约束分为以下几类: 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign key 1.1 非空约束:not ...
  • Xilinx 约束(ISE)

    千次阅读 2019-12-17 14:37:37
    2、约束文件 2.1、概念 2.2、创建约束文件 3、UCF 文件语法 3.1、语法 3.2、通配符 3.3、定义设计层次 4、引脚和区域约束语法 4.1、LOC语句语法 4.2、LOC属性说明 5、时序约束语法 5.1、周期约束 5.2、...
  • MySQL 8.0 新特性之检查约束(CHECK)

    千次阅读 多人点赞 2020-06-05 14:52:42
    介绍 MySQL 8.0 增加的新功能:检查约束(CHECK ),定义列级检查约束和表级检查约束,检查约束的 enforced 选项,检查约束的使用限制。
  • 文章目录1、约束简介2、非空约束(not null、nk)2.1 范例1:使用非空约束2.2 范例2:正确地增加语句2.3 范例3:错误地增加语句3、唯一约束(unique、uk)3.1 范例1:使用唯一约束3.2 范例2:正确地增加语句3.3 范例3:...
  • 维纳滤波和约束最小二乘滤波图像复原自编matlab代码,共有两个文件CLSFilter.m,WienerFilter.m和一张测试图,可直接在R2013b上可以运行,有详细注释,注释里还有参考资料的网页链接,可帮助理解代码。
  • MySQL完整性约束

    千次阅读 2019-09-12 11:38:49
    数据完整性约束是在表和字段上强制执行的数据检验规则,为了防止不规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,主要是对空值和重复值的约束,使不...
  • --12. 删除上述唯一值约束、外键约束及check约束; ALTER TABLE COURSE DROP CONSTRAINT U1 ALTER TABLE STUDENT DROP CONSTRAINT C2 --13. 设计触发器实现如果一个学生转专业了,那么输出一条信息显示该学生各门...
  • 文章目录准备知识定义唯一约束使用SSMS工具定义唯一约束使用SQL方式定义唯一约束方式一:在创建数据表的时候定义唯一约束方式二:修改数据表定义唯一约束删除唯一约束使用SSMS工具删除唯一约束方式一:在对象资源...
  • 约束的多目标优化进化算法综述

    千次阅读 多人点赞 2020-12-16 16:26:09
    约束优化进化算法综述 1.摘要 约束优化进化算法主要研究如何利用进化计算方法求解约束优化问题,是进化计算领城的一个重要研究课题.约束优化问题求解存在约束区域离散、等式约束、非线性约束等挑战,其问题的本质是,...
  • 约束 * 概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。 * 分类: 1. 主键约束:primary key 2. 非空约束:not null 3. 唯一约束:unique 4. 外键约束:foreign key * 非空约束:not ...
  • 力学中的约束分类

    千次阅读 2021-05-19 11:51:55
    这两种约束的核心区别在于几何约束(geometric constraint)仅仅是对物体的位置坐标进行了约束,而微分约束则引入了速度维度,约束方程中包含了位置对时间的导数的项。所以我们看到一个约束方程中包含速度项x˙\dot{...
  • 时序约束

    千次阅读 2018-08-03 11:23:44
    一、在给FPGA做逻辑综合和布局布线时,需要在工具中设定时序的约束。通常,在FPGA设计工具中都FPGA中包含有4种路径:从输入端口到寄存器,从寄存器到寄存器,从寄存器到输出,从输入到输出的纯组合逻辑。通常,需要...
  • 粒子群算法求解带约束优化问题 源码实现

    千次阅读 多人点赞 2021-03-29 14:30:32
    粒子群算法求解带约束优化问题 源码实现 python实现。带你体验下粒子群算法是如何求解带等式约束、不等式约束、上下限约束的问题。
  • I . Guideline 引导线 总结 II . Guideline 引导线 简介 III . Guideline 引导线 可视化操作 IV . Guideline 引导线 属性 V . Guideline 引导线 位置...VI . Guideline 引导线 约束 其它组件 VII . Guideline 代码示例

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 801,004
精华内容 320,401
关键字:

约束