<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>reality &#187; math</title>
	<atom:link href="http://www.reality.hk/articles/tag/math/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.reality.hk</link>
	<description>Reality is merely an illusion, albeit a very persistent one.</description>
	<lastBuildDate>Fri, 23 Jul 2010 17:28:33 +0000</lastBuildDate>
	<language>zh-tw</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>如何使用整數線性規劃去解決「麥記格到最抵」問題</title>
		<link>http://www.reality.hk/articles/2009/04/22/960/</link>
		<comments>http://www.reality.hk/articles/2009/04/22/960/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 17:58:59 +0000</pubDate>
		<dc:creator>小影</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[csp]]></category>
		<category><![CDATA[linearprogramming]]></category>
		<category><![CDATA[math]]></category>

		<guid isPermaLink="false">http://www.reality.hk/?p=960</guid>
		<description><![CDATA[話說在電鋸裡看到「無聊問題」，除了寫程式去解決這問題，我們還可以把它當成一個 限制滿足問題 (Constraint Satisfaction Problem)，用整數線性規劃 ( Integer Linear Programming) 去解決。在此請讓我大膽試用學了兩個小時的 ILP 來解這問題吧！(因為是初學者，如果有錯還請指正，謝謝！) * * * 首先我們假設只有以下六種貨品： i1 雙層芝士孖堡 i2 至尊漢堡 i3 中薯條 i4 中可樂 i5 雙層芝士孖堡套餐 i6 至尊漢堡套餐 設每種貨品的價格為 p1, p2, &#8230;, p6。 設每種食品的目標數量為 w1, w2&#8230;, w6。 設每種貨品的落單量為 x1, x2 &#8230;, x6。( &#60;&#8211; 這是我們想要的答案 ) 1. 設我們想要 1 個芝士孖堡 (w1 = 1)，那我們可得以下方程： x1 + x5 [...]]]></description>
			<content:encoded><![CDATA[<p>話說在電鋸裡看到「<a href="http://blog.tiney.com/?p=2345" target="_blank">無聊問題</a>」，除了寫程式去解決這問題，我們還可以把它當成一個 限制滿足問題 (Constraint Satisfaction Problem)，用整數線性規劃 ( Integer Linear Programming) 去解決。在此請讓我大膽試用學了兩個小時的 ILP 來解這問題吧！(因為是初學者，如果有錯還請指正，謝謝！)</p>
<p>* * *</p>
<p>首先我們假設只有以下六種貨品：</p>
<ul>
<li>i1 雙層芝士孖堡</li>
<li>i2 至尊漢堡</li>
<li>i3 中薯條</li>
<li>i4 中可樂</li>
<li>i5 雙層芝士孖堡套餐</li>
<li>i6 至尊漢堡套餐</li>
</ul>
<p>設每種貨品的價格為 p1, p2, &#8230;, p6。<br />
設每種食品的目標數量為 w1, w2&#8230;, w6。<br />
設每種貨品的落單量為 x1, x2 &#8230;, x6。( <em>&lt;&#8211; 這是我們想要的答案 </em>)</p>
<p>1. 設我們想要 1 個芝士孖堡 (w1 = 1)，那我們可得以下方程：</p>
<blockquote><p>x1 + x5 &gt;= w1 = 1</p></blockquote>
<p>2. 同樣我們想要 1 個至尊漢堡 (w2 = 1)：</p>
<blockquote><p>x2 + x6 &gt;= w2 = 1</p></blockquote>
<p>3. 想要1個中薯條和1個中可樂 (w3 = 1, w4 = 1)：</p>
<blockquote><p>x3 + x5 + x6 &gt;= w3 = 1<br />
x4 + x5 + x6 &gt;= w4 = 1</p></blockquote>
<p>4. 落單的總價錢等於每樣貨品的落單量乘價錢：</p>
<blockquote><p>total price  <a class="tt-flickr tt-flickr-Original" title="2009-04-22_0158" href="http://www.flickr.com/photos/realityhk/3462617299/"><img class="alignnone" src="http://farm4.static.flickr.com/3603/3462617299_1be5104f63_o.png" alt="2009-04-22_0158" width="98" height="55" /></a></p></blockquote>
<p>5. 以上方程式的解，就是能付合我們其望的落單指示。其中能最小化 total price P 的解就是「格到最抵」的答案了！(我還沒有示範怎樣解以上方程？唏這樣簡單的算術就別要我做啦 &#8230; 好了我是懶得計數&#8230;)</p>
<p>把以上方法通用化，就可以解決任何組合的食品和套餐的問題。我會試試使用 Java 的 CSP Solver 把這個 Model 實作試試這種另類的解法。</p>
<p>好了，為甚麼要使用 Integer Programming 去解而不用 programming 去解決問題呢？因為使用了它就不用寫程式了！只要定義 Integer Programming 的 Model 和使用通用的 IP Solver 就可以解決任何問題啦，想想都覺得爽呀！</p>
<p>* * *</p>
<p>問：電腦可以很簡單地解決 Integer Programming 問題嗎？</p>
<p>答：呃&#8230; 那是 NP-Hard 的問題，即是<strong>非常困難</strong>！一般來說很慢，除非有人為那問題設計出特定的算法&#8230;</p>
<p>問：那為何不直接設算法解決上面那個問題好了？</p>
<p>答：呃&#8230; 這純綷顯示我們懂得這個方法 (假)。有些複雜的資源分配問題是難以用普通算法去解決的，使用 ILP 我們不需要有複雜的算法也可能得出正確的解。</p>
<p>* * *</p>
<p>歡迎為此問題提供更無聊的解法 =)</p>
<p><strong>延申閱讀</strong></p>
<ul>
<li><a href="http://mat.gsia.cmu.edu/orclass/integer/integer.html" target="_blank">A Tutorial on Integer Programming</a></li>
<li><a href="http://www.emn.fr/x-info/choco-solver/doku.php?id=tutorials" target="_blank">CHOCO Solver &#8211; Java based CSP Solver</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.reality.hk/articles/2009/04/22/960/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
