主要内容

optimineq

创建空的优化不等式数组

描述

optimineq初始化一组不等式表达式。

提示

有关完整的工作流,请参见基于问题的优化工作流程

例子

约束= OptimineQ(N.的)创造一个N.- 1个空虚的优化不等式数组。用约束初始化创建不等式表达式的循环。

例子

约束= OptimineQ(CSTR.的)创建一系列索引的空优化约束CSTR.,字符向量或字符串向量的单元格数组。

如果CSTR.是1-by-N.CSTR., 在哪里N.CSTR.是元素的数量CSTR., 然后约束也是1-by-N.CSTR..否则,约束N.CSTR.-By-1。

约束= OptimineQ(CSTR.1,N.2……CSTR.k)约束= OptimineQ({CSTR.1,CSTR.2……CSTR.k})约束= optimineq ([N.1,N.2……N.K]),任何组合CSTR.N.参数,创建一个N.CSTR.1 -N.2 -…——-N.CSTR.k阵列空优化不等式,在哪里N.CSTR.元素的个数是多少CSTR.

例子

全部收缩

创建一个两个元素变量的约束X必须位于若干圆心和半径在数组中的圆盘的交点上吗中心半径

x = Optimvar('X',1,2);中心= [1 -2; 3 -4; -2 3];radii = [6 7 8];CONSTR = OPTOMINEQ(长度(RADII));为了i = 1:长度(约束)contr(i)= sum((x  - 中心(i,i:))。^ 2)<=半径(i)^ 2;结尾

查看不等式表达式。

展示(约束)
arg_lhs <= arg_rhs其中:arg1 = zeros([3,1]);arg1(1)= sum((x  -  extraparams {1})。^ 2);arg1(2)= sum((x  -  extraparams {2})。^ 2);arg1(3)= sum((x  -  extraparams {3})。^ 2);arg_lhs = arg1(:);arg1 = zeros([3,1]);arg1(1)= 36;arg1(2)= 49;arg1(3)= 64;arg_rhs = arg1(:); extraParams{1}: 1 -2 extraParams{2}: 3 -4 extraParams{3}: -2 3

您可以通过对变量使用矩阵操作来创建相同的约束,而不是使用循环。

contract2 = sum(([x; x; x]  - 中心)。^ 2,2)<=半径'。^ 2;

通过使用矩阵操作创造不等式,循环中的不平等可能会更耗时。

创建索引不等式和变量,以表示饮食中消耗的卡路里。每餐都有不同的卡路里限制。创建代表每种食物的膳食,食物和卡路里的阵列。

饭菜= [“早餐”“午餐”“晚餐”];食物= [“谷物”“麦片”“酸奶”“花生酱三明治”“比萨”“汉堡包”......“沙拉”“牛扒”“沙锅”“冰淇淋”];卡路里= [200,175,150,450,350,800,150,650,350,300]'

创建优化变量,代表每一餐的食物,索引的食物名称和膳食名称。

饮食= Optimvar('饮食',食物,饭菜,'indowbound', 0);

设置不平等约束,使每顿饭都有一个卡路里的上限。

CONSTRIC = OPTOMINEQ(餐);为了I = 1:3 constr(I) = diet(:, I)'*卡路里<= 250* I;结尾

观察不平等晚餐

展示(约束(“晚餐”))
200 *饮食('谷物','晚餐')+ 175 *饮食('燕麦','晚餐')+ 150 *饮食('酸奶','晚餐')+ 450 *饮食('花生酱三明治','晚餐')+ 350 *饮食('披萨','晚餐')+ 800 *饮食('汉堡包,'晚餐')+ 150 *饮食('沙拉','晚餐')+ 650 *饮食('牛排','晚餐')+ 350 *饮食('砂锅','晚餐')+ 300 *饮食('冰淇淋','晚餐')<= 750

通过在变量上使用矩阵操作而不是使用循环,可以创建相同的不等式。

Constr2 = diet'*卡路里<= 250*(1:3)';

属性包括不等式的适当索引名称IndexNames财产。

constr2.indexnames = {餐,{}};

显示新的不等式晚餐.注意,它们与前面的不等式相同。

展示(CONTRACH2(“晚餐”))
200 *饮食('谷物','晚餐')+ 175 *饮食('燕麦','晚餐')+ 150 *饮食('酸奶','晚餐')+ 450 *饮食('花生酱三明治','晚餐')+ 350 *饮食('披萨','晚餐')+ 800 *饮食('汉堡包,'晚餐')+ 150 *饮食('沙拉','晚餐')+ 650 *饮食('牛排','晚餐')+ 350 *饮食('砂锅','晚餐')+ 300 *饮食('冰淇淋','晚餐')<= 750

通过使用矩阵操作创造不等式,循环中的不平等可能会更耗时。

输入参数

全部收缩

约束尺寸的大小,指定为正整数。

  • 的大小constr = OptimineQ(n)N.-By-1。

  • 的大小若干= optimineq (N1、N2)N1——- - - - - -N2

  • 的大小CONSTRIC = OPTOMINEQ(N1,N2,...,NK)N1——- - - - - -N2-By -...-Nk

例子:5.

数据类型:双倍的

索引的名称,指定为字符向量或字符串向量的单元格数组。

例子:{“红色”、“橙”、“绿色”、“蓝”}

例子:[“红色”;“橙色”;“绿色”;“蓝色”]

数据类型:细绳|细胞

输出参数

全部收缩

约束,返回为空OptimizationInequality数组中。用约束初始化创建约束表达式的循环。

例如,

x = Optimvar('X',8);CONSTR = OPTOMINEQ(4);为了k = 1:4约束(k)= 5 * k *(x(2 * k) -  x(2 * k-1))<= 10  -  2 * k;结尾

提示

介绍在R2019B.