LocalSolver快速入门指南(连载三十三) -- 外部函数实例 JAVA

外部函数的实例(Local Solver Java实现)

JAVA实现

Java中,您必须实现LSIntExternalFunctionLSDoubleExternalFunction接口,特别是call ()方法来实现外部函数(1)

然后(2)实例化函数并使用LSModel.createIntExternalFunctionLSModel.createDoubleExternalFunction方法将其转换为一个LSExpression表达式。

要创建LSOperator.call表达式时可以使用通用方法LSModel.createExpression或快捷方式LSModel.call。外部函数的参数值将通过LSExternalArgumentValues公开。

你可以通过LSExpression.getExternalContext访问函数的LSExternalContext上下文信息:代码如下

import java.lang.Math;
import localsolver.*;
...
void TestExternalFunction()
{
    LocalSolver ls = new LocalSolver();
    LSModel m = ls.getModel();
    LSExpression func = m.createDoubleExternalFunction(new LSDoubleExternalFunction() {
        double call(LSExternalArgumentValues argumentValues) {
            return Math.acos(argumentValues.getDoubleValue(0));
        }
    });
    // Users of Java 8 can simplify the code above by using a lambda:
    // LSExpression func = m.createDoubleExternalFunction(
    //    args -> Math.acos(args.getDoubleValue(0))
    // );
 
    func.getExternalContext().setLowerBound(0.0);
    func.getExternalContext().setUpperBound(Math.PI);
    LSExpression x = m.floatVar(-0.5, 0.5);
    LSExpression y = m.floatVar(-0.5, 0.5);
    m.minimize(m.call(func, m.sum(x, y)));
    m.constraint(m.geq(m.sum(x, m.prod(3, y)), 0.75));
    ...
}

更多信息请关注local solver中国区独家代理商"无锡迅合信息科技有限公司"数学工程师(2020-2024). 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值