LocalSolver快速入门指南(连载十五) ---- LocalSolver建模功能特色(约束和目标)

LocalSolver建模功能特色---约束 和目标

Constraints(约束)

约束是一种标记,它放置在表达式上强制让其变为true(表达式值等于1)。在LocalSolver中,可以约束具有布尔值(01)的任何变量或中间表达式。因此,所有涉及到关系运算符(<<=>>===,!=)的表达式,以及逻辑操作符&&)或(| |)、xoriifImmediate IF)都可以被约束,不限于问题类型。特别是,LocalSolver不仅限于线性约束,而且还可以处理高度非线性的模型。

要在Local Solver建模器(modeler)中将表达式标记为约束,只需使用关键字constraint作为其前缀。例如:

LSP:

// These two formulations are equivalent这两个公式是等价的

constraint knapsackWeight <= 102;

weightCst <- knaspackWeight <= 102;

constraint weightCst;

 

PYTHON语言:

# These two formulations are equivalent这两个公式是等价的

model.constraint(knapsackWeight <= 102)

weightCst = knaspackWeight <= 102

model.constraint(weightCst)

 

C++语言
// These two formulations are equivalent这两个公式是等价的

model.constraint(knapsackWeight <= 102);

weightCst = knaspackWeight <= 102;

model.constraint(weightCst);

 

C#语言

// These two formulations are equivalent这两个公式是等价的

model.Constraint(knapsackWeight <= 102);

weightCst = knaspackWeight <= 102;

model.Constraint(weightCst);

 

Java语言

// These two formulations are equivalent这两个公式是等价的

model.constraint(knapsackWeight <= 102);

weightCst = model.leq(knaspackWeight, 102);

model.constraint(weightCst);

运筹学中的一个好做法是只将严格必要的需求建模为约束。如果在某些特殊情况下某个需求可能被违反,那么最好将其构建为一个主要目标,以便“柔和地”满足(目标规划)。LocalSolver提供了一个功能,使这一点很容易做到:那就是:字典序目标(lexicographic objectives)。更多问题请联系LocalSolver中国区独家代理商无锡迅合信息科技有限公司开发人员。

 

Objectives(目标)

必须使用关键字minimizemaximize至少定义一个目标。任何表达式都可以用作目标。如果定义了多个目标,它们将被解释为一个词典序目标函数。词典排序是由目标的声明顺序归纳出来的。通过这种方式,表达式经常出现在数学编程模型中,如

maximize 10000 revenues - 100 resources + desiderata;

为了先实现收入(revenues)最大化,再将资源(resources)最小化,最终最大化desiderata,原先操作比较麻烦,现在您可以直接写:

LSP:

maximize revenues;

minimize resources;

maximize desiderata;

PYTHON语言

model.maximize(revenues)

model.minimize(resources)

model.maximize(desiderata)

C++语言

model.maximize(revenues);

model.minimize(resources);

model.maximize(desiderata);

C#语言

model.Maximize(revenues);

model.Minimize(resources);

model.Maximize(desiderata);

JAVA语言

model.maximize(revenues);

model.minimize(resources);

model.maximize(desiderata);

未完待续。。。。【Local Solver数学优化器讲解系列 】

猜你喜欢

转载自blog.csdn.net/qq_31243247/article/details/116947889