用java或c表示ampl模型代码?

用java或c表示ampl模型代码?,java,c#,ampl,code-conversion,Java,C#,Ampl,Code Conversion,我用ampl模型软件解决了一个问题。我需要将代码转换为java或c来打印结果。如何用java表示ampl模型代码。有图书馆吗?如何在java和c中表示目标函数和最大化函数? 请帮我做这个 我的AMPL代码: param i; #Supply param j; #Demand param k; #Time var x{1..i,1..j,1..k} binary; maximize z_flow : sum{a in 1..k} (x[1,1,a]+x[1,5,a] + x

我用ampl模型软件解决了一个问题。我需要将代码转换为java或c来打印结果。如何用java表示ampl模型代码。有图书馆吗?如何在java和c中表示目标函数和最大化函数? 请帮我做这个

我的AMPL代码:

param i;    #Supply
param j;    #Demand
param k;    #Time

var x{1..i,1..j,1..k} binary;

maximize z_flow : sum{a in 1..k} (x[1,1,a]+x[1,5,a] +  x[2,1,a]+x[2,3,a] + x[3,2,a]+x[3,3,a] + x[4,1,a]+ x[4,2,a] + x[4,4,a] + x[5,2,a]+x[5,3,a]);

subject to supply1cons{a in 1..k} : (x[1,1,a] + x[1,5,a]) <= 1;
subject to supply2cons{a in 1..k} : (x[2,1,a] + x[2,3,a]) <= 1;
subject to supply3cons{a in 1..k} : (x[3,2,a] + x[3,3,a]) <= 1;
subject to supply4cons{a in 1..k} : (x[4,1,a] + x[4,2,a] + x[4,4,a]) <= 1;
subject to supply5cons{a in 1..k} : (x[5,2,a] + x[5,3,a]) <= 1;

subject to demand1cons{a in 1..k} : (x[1,1,a] + x[2,1,a] + x[4,1,a]) <= 1;
subject to demand2cons{a in 1..k} : (x[3,2,a] + x[4,2,a] + x[5,2,a]) <= 1;
subject to demand3cons{a in 1..k} : (x[2,3,a] + x[3,3,a] + x[5,3,a]) <= 1;
subject to demand4cons{a in 1..k} : (x[4,4,a]) <= 1;
subject to demand5cons{a in 1..k} : (x[1,5,a]) <=1;

subject to cap1 : sum{a in 1..k}(x[1,1,a]) = 2;
subject to cap2 : sum{a in 1..k}(x[1,5,a]) = 8;
subject to cap3 : sum{a in 1..k}(x[2,1,a]) = 3;
subject to cap4 : sum{a in 1..k}(x[2,3,a]) = 4;
subject to cap5 : sum{a in 1..k}(x[3,2,a]) = 1;
subject to cap6 : sum{a in 1..k}(x[3,3,a]) = 7;
subject to cap7 : sum{a in 1..k}(x[4,1,a]) = 5;
subject to cap8 : sum{a in 1..k}(x[4,2,a]) = 2;
subject to cap9 : sum{a in 1..k}(x[4,4,a]) = 6;
subject to cap10 : sum{a in 1..k}(x[5,2,a]) = 4;
subject to cap11 : sum{a in 1..k}(x[5,3,a]) = 3;
param i#供给
param j#需要
参数k#时间
var x{1..i,1..j,1..k}二进制;
最大化z_流:和{a在1..k}(x[1,1,a]+x[1,5,a]+x[2,1,a]+x[2,3,a]+x[3,2,a]+x[3,3,a]+x[4,2,a]+x[4,4,a]+x[5,2,a]+x[5,3,a]);

根据供应链{1..k}:(x[1,1,a]+x[1,5,a])AMPL是一种建模语言,您可以通过合理的努力创建模型

然后,AMPL环境调用一个实际解决您的问题的解算器(如果您愿意,后端)。不是AMPL解决了你的问题

幸运的是,您的问题很简单,因此可以放弃建模语言部分。然而,您仍然需要一个为您解决问题的解算器

您的问题是一个二进制整数规划问题。任何能够处理整型变量的线性规划解算器都是候选解算器。求解器通常用C或C++编写,所以需要一个java或C接口。p> 最后,您将使用解算器附带的API编写/构建问题


候选人:

  • (建议人)

另见


AMPL是一种建模语言,您可以通过合理的努力创建模型

然后,AMPL环境调用一个实际解决您的问题的解算器(如果您愿意,后端)。不是AMPL解决了你的问题

幸运的是,您的问题很简单,因此可以放弃建模语言部分。然而,您仍然需要一个为您解决问题的解算器

您的问题是一个二进制整数规划问题。任何能够处理整型变量的线性规划解算器都是候选解算器。求解器通常用C或C++编写,所以需要一个java或C接口。p> 最后,您将使用解算器附带的API编写/构建问题


候选人:

  • (建议人)

另见


    • 你的问题有两个部分:建模和从(C#)程序调用。正如其他人所指出的,AMPL是一种建模语言。如果您喜欢使用AMPL之类的建模语言,则需要从程序中调用它。目前,AMPL没有API,但您可以通过脚本调用AMPL。AIMMS和MPL都有API,允许您从其他程序调用它们,但它们将要求您用各自的建模语言重写模型

      另一个选项是直接调用解算器API。包括CPLEX和Gurobi在内的许多解算器都有.NETAPI,允许您直接从C#程序构建和求解模型


      (免责声明:我目前为Gurobi Optimization工作,以前为提供CPLEX的ILOG工作)。

      您的问题有两个部分:建模和从(C#)程序调用。正如其他人所指出的,AMPL是一种建模语言。如果您喜欢使用AMPL之类的建模语言,则需要从程序中调用它。目前,AMPL没有API,但您可以通过脚本调用AMPL。AIMMS和MPL都有API,允许您从其他程序调用它们,但它们将要求您用各自的建模语言重写模型

      另一个选项是直接调用解算器API。包括CPLEX和Gurobi在内的许多解算器都有.NETAPI,允许您直接从C#程序构建和求解模型

      (免责声明:我目前为Gurobi Optimization工作,以前为提供CPLEX的ILOG工作)。

      您可以试试

      这是一个免费的项目,你可以做建模,也可以读取AMPL Dat和Mod文件到您的模型。可通过CPLEX、Gurobi、MOPS和其他方式解决

      优化框架不使用AMPL,它使用GNUMathProg构建模型实例。MathProg是AMPL的一个子集,因此80%-90%的AMPL模型将保持不变运行

      请记住,这是一个学术项目,所以不要期望它是稳定的或成熟的商业用途。

      您可以尝试

      这是一个免费的项目,你可以做建模,也可以读取AMPL Dat和Mod文件到您的模型。可通过CPLEX、Gurobi、MOPS和其他方式解决

      优化框架不使用AMPL,它使用GNUMathProg构建模型实例。MathProg是AMPL的一个子集,因此80%-90%的AMPL模型将保持不变运行


      请记住,这是一个学术项目,所以不要期望它能稳定或成熟地用于商业用途。

      除非您的模型非常简单,否则您无法做到这一点,这是一项非常重要的任务。Ali..这是一个简单的模型..我需要找到在网络中发送所有数据包的最短时间间隔,但有一些限制。这是有希望的。你可以发布你的AMPL型号吗?你有许可证限制吗?对第三方的限制?@ali。。不…在免费之前不限制第三方。。请在帖子中找到我的ampl代码。我重申。除非你的模型非常简单,否则你无法做到,这是一项非常重要的任务。阿里。这是一个简单的模型。我需要找到在网络中发送所有数据包的最短时间间隔,但有一些限制。这是有希望的。你可以发布你的AMPL型号吗?你有许可证限制吗?第三条限制