科学编程与图形可视化:Julia 语言的应用探索
1. 使用 MathProgBase 接口
NLopt 实现了用于非线性优化的 MathProgBase 接口,因此它可以与 JuMP 互换使用。NLopt 求解器名为 NLoptSolver,以下是一个求解问题的示例代码:
using JuMP
using NLopt
m = Model(solver=NLoptSolver(algorithm=:LD_MMA));
a1 = 2; b1 = 0;
a2 = -1; b2 = 1;
@defVar(m, x1);
@defVar(m, x2 >= 0);
@setNLObjective(m, Min, sqrt(x2));
@addNLConstraint(m, x2 >= (a1*x1+b1)^3);
@addNLConstraint(m, x2 >= (a2*x1+b2)^3);
setValue(x1, 1.2);
setValue(x2, 5.6);
status = solve(m);
@printf "Ans => %6.4f at (%5.3f,%5.3f)\n" getObjectiveValue(m) getValue(x1) getValue(x2);
此代码表明宏定义在将问题定义与编码的实际细节解耦方面的强大功能。调用时需要指定算法参数,其他一些参数可以使用默认值,除非明确提供。
2. 随机问题
到目前为止遇到的问题完全由模型确定,会反复产生相同的解。但有些模型包含随机出现的项,这些被称为随机问题。例如,不稳定股
超级会员免费看
订阅专栏 解锁全文
7876

被折叠的 条评论
为什么被折叠?



