一、Ilog软件

该软件用来解决优化问题,大部分是线性问题,深一点的其他内容还不清楚。只知道一些基础的应用,网上相关内容很少。接下来就解决一个简单的运输问题

二、运输问题

数学模型

ILOG OPL程序

{string} CitiesA=...;
{string} CitiesB=...;
float capacity = ...;
float supply[CitiesA] =...;
float demand[CitiesB] =...;
assert
sum(o in CitiesA) supply[o] == sum(d in CitiesB) demand[d];
float cost[CitiesA][CitiesB] = ...;
dvar float+ trans[CitiesA][CitiesB];
constraint ct1;
constraint ct2;
constraint ct3;
minimize sum( o in CitiesA , d in CitiesB) cost[o][d] * trans[o,d]; subject to {
ct1=forall(o in CitiesA)
sum(d in CitiesB) trans[o][d] == supply[o];
ct2=forall(d in CitiesB)
sum(o in CitiesA) trans[o][d] == demand[d];
ct3=forall(o in CitiesA , d in CitiesB)
trans[o,d] <= capacity;
}

数据文件

CitiesA = { A1 A2 A3 A4 A5};
CitiesB={ B1 B2 B3 B4 B5 B6 B7 B8 };
capacity = 825;
supply =[ 400 700 800 450 550];
demand =[300 400 100 275 650 325 300 550];
cost =[[ 30 10 8 10 11 71 6 50]
[ 22 7 10 7 21 82 13 30]
[ 19 11 12 10 25 83 15 26]
[ 15 20 30 40 50 25 16 12]
[ 10 49 23 50 28 43 56 20]
];

三、转运问题

Ilog opl实现

{string} CitiesA=...;
{string} CitiesB=...;
{string} CitiesC=...;
float capacity = ...;
float supply[CitiesA] =...;
float demand[CitiesB] =...;
float cost1[CitiesA][CitiesC] = ...;
float cost2[CitiesC][CitiesB]=...;
dvar float+ trans1[CitiesA][CitiesC];
dvar float+ trans2[CitiesC][CitiesB];
constraint ct1;
constraint ct2;
constraint ct3;
constraint ct4;
minimize sum( o in CitiesA , t in CitiesC) cost1[o][t] * trans1[o][t]+
sum( t in CitiesC , d in CitiesB) cost2[t][d] * trans2[t][d]; subject to {
ct1=forall(o in CitiesA)
sum(t in CitiesC) trans1[o][t] <= supply[o];
ct2=forall(d in CitiesB)
sum(t in CitiesC) trans2[t][d] == demand[d];
ct3=forall(t in CitiesC)
sum(o in CitiesA)trans1[o][t] == sum(d in CitiesB)trans2[t][d];
ct4=forall(o in CitiesA,d in CitiesB,t in CitiesC)
{
trans1[o,t]<=capacity;
trans2[t,d]<=capacity;
}
}

数据

CitiesA = { A1 A2 A3};
CitiesB={ B1 B2 B3 B4 };
CitiesC={C1 C2 C3 C4};
capacity = 20;
supply =[7 4 9];
demand =[3 6 5 6];
cost1 =[[2 1 4 3 ]
[3 5 100 2 ]
[1 100 2 3 ]
];
cost2=[[2 8 4 6]
[4 5 2 7]
[1 8 2 4]
[1 100 2 6]
];

对于产地、转运站、销地之间都可以互相运输的复杂情况,建模不够理想,没有实现。

ILOG的一个基本应用——解决运输问题、转运问题的更多相关文章

  1. Excel在任务栏中只显示一个窗口的解决办法

     Excel在任务栏中只显示一个窗口的解决办法  以前朋友遇到过这个问题,这次自己又遇到了,习惯了以前的那种在任务栏中显示全部窗口,方便用Alt+Tab键进行切换. 如果同时打开许多Excel工作簿, ...

  2. ant jsch.jar - 一个错误及解决办法

    ant jsch.jar -- 一个异常及解决方法 运行build.xml出现异常: Cause: Could not load a dependent class com/jcraft/jsch/L ...

  3. 使用eclipse进行Android编程发生崩溃的一个问题及解决办法

    刚才在使用eclipse的时候发生了vm占用过高而无法使用的问题,最初我以为只要重启eclipse就可以解决,重启之后仍然没有效果.重启PC之后打开eclipse仍然无法打开.eclipse是有自己的 ...

  4. 百度编辑器ueditor每次编辑后多一个空行的解决办法

    用ueditor进行编辑文章时,每次编辑后文章前面都会多出一个空行. <script id="editor" type="text/plain" styl ...

  5. 一个简单的解决方法:word文档打不开,错误提示mso.dll模块错误。

    最近电脑Word无故出现故障,无法打开,提示错误信息如下: 问题事件名称: APPCRASH应用程序名: WINWORD.EXE应用程序版本: 11.0.8328.0应用程序时间戳: 4c717ed1 ...

  6. 一个perfect 的解决 阴影拉伸的方法 shadow map strech

    因为在场景中做了,有的物体产生阴影比如人物,有的物体不产生阴影比如地面,这样在地面凹下去的地方,悬崖,池塘边,就会有阴影的拉伸. 实际上, 没办法上传图片.... L是光源 A 点(人物身上)产生阴影 ...

  7. C# 该行已经属于另一个表 的解决方法[转]

    该文转自:http://blog.sina.com.cn/s/blog_48e4c3fe0100nzs6.html DataTable dt = new DataTable(); dt = ds.Ta ...

  8. 众神看过来:IE11下鼠标中键(滚轮)导致的一个似乎无法解决的问题?!

    最近在做asp.net mvc项目时遇到一个关于超链接的问题.很是纠结. 问题描述 有一个公司列表展示页.在用鼠标中键(注意了是滚轮)以下简称中键,点击编辑(超链接)的时候在该条数据的下面直接加在一个 ...

  9. Xcode 只有iOS device一个选项的解决办法

    下载了一个demo准备研究发现只有iOS device,没有其他的机型可选,解决方法比较简单,调下iOS SDK就行了

随机推荐

  1. 链表之求链表倒数第k个节点

    题目描述:输入一个单向链表,输出该链表中倒数第k个节点,链表的倒数第0个节点为链表的尾指针. 最普遍的方法是,先统计单链表中结点的个数,然后再找到第(n-k)个结点.注意链表为空,k为0,k为1,k大 ...

  2. attr属性

    1.切换图片 $(".tip").hover(        function () {            $(this).attr("src"," ...

  3. 微信支付开发(3) JS API支付

    由于微信支付接口更新,本文档已过期,请查看新版微信支付教程.地址 http://www.cnblogs.com/txw1958/category/624506.html 本文介绍如何使用JS API支 ...

  4. iptables conntrack有什么用

    iptables conntrack有什么用 http://zhidao.baidu.com/link?url=Eh5SRuplbsY_WkxxGkH4bpEyfMnHAe1RwJYSVlRYGKFU ...

  5. 30天,O2O速成攻略【8.15长沙站】

    活动概况 时间:2015年08月15日13:30-16:30 地点:库可咖啡(长沙市岳麓区阜埠河路139号天马都乐街,湖南大学天马学生公寓东侧) 主办:APICloud.爱立示.兰软 网址:www.a ...

  6. Linux 使用 bg 和 fg 切换任务运行状态

    将Linux任务转换到后台执行 平时在运行 Linux 任务时,在任务运行时又想运行其它任务,那么可以把任务切换到后台运行. 使用 ctrl+z 可以把当前的任务转入到后台,这时任务并没有被中止,可使 ...

  7. java中 set,list,array(集合与数组)相互转换

      public static Object[] List2Array(List<Object> oList) { Object[] oArray = oList.toArray(new ...

  8. 第六篇 Replication:合并复制-发布

    本篇文章是SQL Server Replication系列的第六篇,详细内容请参考原文. 合并复制,类似于事务复制,包括一个发布服务器,一个分发服务器和一个或多个订阅服务器.每一个发布服务器上可以定义 ...

  9. Fluentd安装——通过rpm方式

    0. td-agent是何物 为了灵活性,fluentd用Ruby写的,其中一些性能敏感的部件使用c写的.普通的用户直接安装和使用Ruby进程可能有困难,这样就把它封装成Fluentd的稳定版本——t ...

  10. Silverlight打印注意事项

    1.Silverlight的打印功能从版本5开始才支持矢量打印,这不但要求打印机支持矢量打印,而且还要安装相应的打印驱动程序. 测试你的打印机是否支持矢量打印,可以参考:如何用C#代码检测打印机和驱动 ...