Linear programming CPLEX ILOG-3个农场的3种作物

Linear programming CPLEX ILOG-3个农场的3种作物,linear-programming,cplex,ilog,Linear Programming,Cplex,Ilog,我正在尝试解决3个农场中每种3种作物的9个种植决策 我得到了每个农场的可用土地、每个农场的可用水、每种作物的最大配额、每种作物的耗水量和每种作物的利润数据。我不允许列出.dat文件中的所有系数 以下是我在.dat文件中输入的内容: Farms = {Rice,Barns,Snyder}; Crops = {Corn,Wheat,SoyBeans}; UsableLand = [400,600,300]; Water = [600,800,375]; MaximumQuota = [600,50

我正在尝试解决3个农场中每种3种作物的9个种植决策

我得到了每个农场的可用土地、每个农场的可用水、每种作物的最大配额、每种作物的耗水量和每种作物的利润数据。我不允许列出.dat文件中的所有系数

以下是我在.dat文件中输入的内容:

Farms = {Rice,Barns,Snyder};
Crops = {Corn,Wheat,SoyBeans}; 
UsableLand = [400,600,300];
Water = [600,800,375];
MaximumQuota = [600,500,325];
WaterConsumption = [3,2,1];
Profit = [1000,750,250];
有三个限制:可用土地、可用水和最大配额。
目标是利润最大化

下面是我在.mod文件中的内容,该文件(最终)解决时没有错误,但没有给我Excel的解算器运行的正确答案。任何指导都将不胜感激

{string} Farms = ...;
{string} Crops = ...;

int UsableLand[Farms]=...;
int Water[Farms]=...;
int MaximumQuota[Crops]=...;
int WaterConsumption[Crops]=...;
int Profit[Crops]=...;

constraint LandAcre[Farms];
constraint WaterAcre[Farms];
constraint CropLimit[Crops];

dvar float+ ProductionAmount[Crops][Farms];

maximize
  sum(i in Crops, p in Farms)
    Profit[i]*ProductionAmount[i][p];
        
subject to {
  forall(i in Farms)
    LandAcre[i]:
        sum(j in Crops, p in Farms)   ProductionAmount[j][p] <= UsableLand[i];   
  forall(i in Farms)
    WaterAcre[i]:
        sum(j in Crops, p in Farms)   WaterConsumption[j] <= Water[i]; 
  forall(i in Crops)
    CropLimit[i]:
        sum(j in Crops, p in Farms)   ProductionAmount[j][p] <= MaximumQuota[i];
}
{string}Farms=。。。;
{string}Crops=。。。;
国际可利用土地[农场]=。。。;
国际水[农场]=。。。;
int最大配额[作物]=。。。;
国际水消费[作物]=。。。;
国际利润[作物]=。。。;
限制土地[农场];
限制种植面积[农场];
限制作物;
dvar浮动+生产量[作物][农场];
最大化
总和(作物中的i,农场中的p)
利润[i]*生产量[i][p];
服从{
福尔(我在农场工作)
土地面积[i]:
sum(作物中的j,农场中的p)产量mount[j][p]这看起来可疑:

  forall(i in Farms)
    LandAcre[i]:
        sum(j in Crops, p in Farms)   ProductionAmount[j][p] <= UsableLand[i];
forall(我在农场)
土地面积[i]:

sum(j在作物中,p在农场中)ProductionAmount[j][p]I改为
dvar float+ProductionAmount[groups][Farms];最大化sum(I在作物中)利润[I]*ProductionAmount[I][I];根据{forall(I在农场中)LandAcre[I]:sum(j在作物中)ProductionAmount[j][I]
  forall(i in Farms)
    LandAcre[i]:
        sum(j in Crops)   ProductionAmount[j][i] <= UsableLand[i];