外部函数的实例
外部函数C#示例代码
在c#中,外部函数的签名必须符合委托LSIntExternalFunction或LSDoubleExternalFunction,它们接受LSExternalContext实例并返回一个整数或浮点值。
然后,您可以在LSOperator.call表达式中使用您的函数。创建LSOperator.Call调用表达式时,可以使用通用方法LSModel.CreateExpression或使用快捷方式LSModel .Call。外部函数的参数值将通过LSExternalArgumentValues方法公开。
可以通过LSExpression.GetExternalContext方法访问函数的LSExternalContex内容:
using System.Math;
using localsolver;
...
double Acos(LSExternalArgumentValues argumentValues)
{
return Math.Acos(argumentValues.GetDoubleValue(0));
}
void TestExternalFunction()
{
LocalSolver ls = new LocalSolver();
LSModel m = ls.GetModel();
LSExpression func = m.CreateDoubleExternalFunction(Acos);
func.GetExternalContext().SetLowerBound(0.0);
func.GetExternalContext().SetUpperBound(Math.PI);
LSExpression x = m.Float(-0.5, 0.5);
LSExpression y = m.Float(-0.5, 0.5);
m.Minimize(m.Call(func, x + y));
m.Constraint(x + 3*y >= 0.75);
...
}
Local Solver在在大规模MIP和非线性优化问题上突出的求解能力对客户供应链业务和研究有很大价值,典型问题有cvrptw车辆调度问题,生产计划与排程问题,MPS问题,生产线平衡问题,背包问题,装箱问题,柔性jobshop问题等。更多信息请关注local solver中国区独家代理商无锡迅合信息科技有限公司数学工程师(2020-2022)。
下一篇:Local Solver外部函数实例-JAVA代码。。。