使用背景
通过 列表创建 决策变量
mdl.continuous_var_list()
1. 定义优化模型
# 导入 docplex
from docplex.mp.model import Model
# 定义优化模型
mdl = Model(name='example_constraints')
2. 创建决策变量
直接通过 列表创建 决策变量 x0, x1, x2.
x = mdl.continuous_var_list(3, lb=-1.0, ub=1.0, name='x')
当然也可以一个一个创建,使用 mdl.continuous_var()
x = [mdl.continuous_var(lb=-1.0, ub=1.0, name='x_{0}'.format(i)) for i in range(3)]
3. 定义约束条件
约束条件可以通过列表的方式添加进来。
# 定义约束条件 (通过列表定义约束条件)
constraints = [xi >= -0.5 for xi in x] + [xi <= 0.5 for xi in x]
for constraint in constraints:
mdl.add_constraint(constraint)
4. 定义优化函数
# 定义优化函数
obj = mdl.sum(x)
5. 最大化/最小化 目标函数,并求解
# 最大化/最小化 目标函数,并求解
mdl.maximize(obj)
solution = mdl.solve()
6. 获取求解数据
# 获取求解数据
print("x = {0}".format([xi.solution_value for xi in x]))
print("obj result: ", obj.solution_value)
7. 代码整合
# 导入 docplex
from docplex.mp.model import Model
# 定义优化模型
mdl = Model(name='example_constraints')
# 创建决策变量
x = mdl.continuous_var_list(3, lb=-1.0, ub=1.0, name='x')
# 定义约束条件 (通过列表定义约束条件)
constraints = [xi >= -0.5 for xi in x] + [xi <= 0.5 for xi in x]
for constraint in constraints:
mdl.add_constraint(constraint)
# 定义优化函数
obj = mdl.sum(x)
# 最大化/最小化 目标函数,并求解
mdl.maximize(obj)
solution = mdl.solve()
# 获取求解数据
print("x = {0}".format([xi.solution_value for xi in x]))
print("obj result: ", obj.solution_value)