পূর্ণসংখ্যার লিনিয়ার প্রোগ্রামিংয়ের জন্য বুলিয়ানকে কাস্ট করুন


11

আমি একটি পূর্ণসংখ্যার লিনিয়ার প্রোগ্রামে নিম্নলিখিত সীমাবদ্ধতাটি প্রকাশ করতে চাই:

y={0if x=01if x≠0.

আমার কাছে ইতিমধ্যে এর পূর্ণসংখ্যার ভেরিয়েবল রয়েছে এবং আমি প্রতিশ্রুতি দিয়েছি যে । একটি পূর্ণসংখ্যার লিনিয়ার প্রোগ্রামিং সলভারের সাথে ব্যবহারের উপযোগী ফর্মটিতে আমি কীভাবে উপরের সীমাবদ্ধতাটি প্রকাশ করতে পারি?x,y−100≤x≤100

এর জন্য সম্ভবত কিছু অতিরিক্ত ভেরিয়েবল প্রবর্তন করা প্রয়োজন। আমার কোন নতুন ভেরিয়েবল এবং সীমাবদ্ধতা যুক্ত করতে হবে? এটি একটি নতুন পরিবর্তনশীল দিয়ে পরিষ্কারভাবে করা যেতে পারে? দুই?

সমানভাবে, এটি সীমাবদ্ধতা কীভাবে প্রয়োগ করতে হবে তা জিজ্ঞাসা করছে

y≠0 if and only if x≠0.

প্রসঙ্গে যেখানে আমার ইতিমধ্যে প্রতিবন্ধকতা রয়েছে সেগুলি এবং ।|x|≤1000≤y≤1


(আমার লক্ষ্যটি https://cs.stackexchange.com/a/12118/755 এ একটি ত্রুটি সমাধান করা ))


1
আপনি কি চেষ্টা করেছেন? আপনি কোনও নমুনা দেখেন কিনা তা দেখার জন্য আপনি কয়েকটি উদাহরণ দিয়ে কাজ করার চেষ্টা করেছেন? যদি হ্যাঁ, আপনি কি অনুমান করার চেষ্টা করেছেন এবং তারপরে প্রমাণ করার চেষ্টা করেছেন?
— ব্রিকা

1
হেহ! আমি দেখছি আপনি সেখানে কী করেছেন , @ ব্রিকা। আমি কী চেষ্টা করেছি তা যদি জানতে আগ্রহী হন , তবে কেন এটি আসলে ভুল ছিল তা এই ব্যাখ্যাটির পাশাপাশি এখানে দেখুন । আপনি যদি আমার পরবর্তী প্রচেষ্টা দেখতে চান তবে আমার উত্তরটি দেখুন । আমার পুরানো প্রশ্নগুলি পড়ার জন্য ধন্যবাদ, এবং যদি সেগুলি ভবিষ্যতের জন্য উন্নত করা যায় তবে আমি আপনার কোনও পরামর্শ শুনতে পছন্দ করব!
— ডিডাব্লিউ

সেটা খুব ভালো. ;)
— ব্রিকা

উত্তর:


4

আমি মনে করি আমি এক অতিরিক্ত বাইনারি পরিবর্তনশীল সঙ্গে এটা করতে পারেন δ∈{0,1} :

−100y≤x≤100y
0.001y−100.001δ≤x≤−0.001y+100.001(1−δ)

হালনাগাদ

এটি ধরে নেয় x একটি অবিচ্ছিন্ন পরিবর্তনশীল । যদি আমরা x পূর্ণসংখ্যার মান হিসাবে সীমাবদ্ধ করি , তবে দ্বিতীয় বাধাটি এটিকে সহজ করা যায়:

y−101δ≤x≤−y+101(1−δ)


1
আমি একটি সামান্য প্রোগ্রামের সাথে এটি সম্পূর্ণরূপে পরীক্ষা করে এই সঠিকটি যাচাই করেছি। সমাধানের জন্য আপনাকে ধন্যবাদ!
— ডিডাব্লিউ

@ এরউইনকালভেলজেন, আপনি দয়া করে বাইনারি ভেরিয়েবল ডেল্টায় আপনার যুক্তিটি ব্যাখ্যা করতে পারেন, উদাহরণস্বরূপ, যদি y = {a: x> 0, b: x <0} হয়}
— নিক

1
@ নিক বাইনারি ভেরিয়েবলটি 'ওআর' কনস্ট্রাক্টের মডেল করতে ব্যবহৃত হয়। আপনার প্রশ্নের উত্তরের জন্য এখানে দেখুন ।
— এরউইন কালভেলেন

@ এরউইনকালভেলজেন, দুর্দান্ত উত্তর, আমি আমার প্রশ্নে আপনার দৃষ্টিভঙ্গিটি এখানে প্রয়োগ করার চেষ্টা করেছি cs.stackexchange.com/questions/64794/… ।
— নিক

1
@ গঞ্জালোসোলেরা আসলে আমি ভুল ছিলাম: আমি ধারাবাহিক পরিবর্তনশীল হিসাবে ধরে নিয়েছি । প্রকৃতপক্ষে যখন এক্স এর পূর্ণসংখ্যার মান হয় আমরা আপনার প্রস্তাব অনুসারে 0.001 টি 1 পর্যন্ত স্থানান্তর করতে পারি। xx
— এরউইন কালভেলেন

1

নিম্নলিখিতটি কোনও উপায়ে সুন্দর নয়, তবে এটি কার্যকর করে। প্রশ্নের নির্দিষ্ট ক্ষেত্রে , N = 100 আসুন । তারপরে আমাদের নিম্নোক্ত প্রতিবন্ধকতা রয়েছে।0≤x≤NN=100

  1. 0≤z1,z2,z≤1
  2. x−N(1−z1)≤0
  3. −x−Nz1≤−1
  4. −x−N(1−z2)≤0
  5. x−Nz2≤−1
  6. z1+z2−1≤z
  7. z≤z1
  8. z≤z2

অন্তর্দৃষ্টি নিম্নরূপ: । এটি 2 এবং 3 সীমাবদ্ধতায় এনকোড করা হয়েছে একইভাবে 4 এবং 5 এনকোড z 2 = 1 সীমাবদ্ধ করেz1=1⟺x≤0 । শেষ তিনটি প্রতিবন্ধকতা z = z 1 ∧ z 2 প্রকাশ করে ।z2=1⟺x≥0z=z1∧z2


এটি একটি বাগ আছে বলে মনে হচ্ছে। আমি ধরে নিলাম আপনার । তবে এটি এখনও x = 100 এর জন্য ভুল : আমরা y = 1 ( z = 0 ) কে এই ক্ষেত্রে জোর করতে চাই , তবে z 1 , z 2 এর বিকল্প নেই যা সমস্ত সমীকরণকে সন্তুষ্ট করে, সমীকরণ x - N z হিসাবে 2 ≤ - 1 এর জন্য x < এন (অর্থাত, x ≤ 99 ) প্রয়োজন। সুতরাং, এই আইএলপি যখন ভুল ফলাফল দেয়z=1−yx=100y=1z=0z1,z2x−Nz2≤−1x<Nx≤99 : আমরা y = 1 চাই , তবে আমরা y = 0 পেয়েছি। এছাড়াও জন্য পছন্দসই পরিসীমা এক্স প্রশ্নে তালিকাভুক্ত হয় - এন ≤ এক্স ≤ এন , না 0 ≤ এক্স ≤ এন । x=99y=1y=0x−N≤x≤N0≤x≤N
— ডিডাব্লিউ

1

এখানে একটি সমাধান যা দুটি অস্থায়ী ভেরিয়েবল ব্যবহার করে। যাক পূর্ণসংখ্যা শূন্য বা এক ভেরিয়েবল হতে, সঙ্গে অর্থ ইচ্ছা করলাম যে, T = 1 যদি এক্স ≥ 0 , U = 1 যদি এক্স ≤ 0 , এবং Y = ¬ ( T ∧ তোমার দর্শন লগ করা ) । এগুলি নিম্নলিখিত সীমাবদ্ধতার সাথে প্রয়োগ করা যেতে পারে:t,ut=1x≥0u=1x≤0y=¬(t∧u)

0≤t,u,y≤11+x≤101t≤101+x1−x≤101u≤101−xt+u−1≤1−y1−y≤t1−y≤u

দুর্ভাগ্যক্রমে এই উত্তরটি ভুল। প্রশ্নটি x ≤ 100 জিজ্ঞাসা করলে এটি প্রথম অ-তুচ্ছ সীমাবদ্ধতার প্রথম অংশ দ্বারা সীমাবদ্ধ করবে । ফেন্সপোস্ট ত্রুটিগুলি মজাদার নয়? (জন্য পূর্বোক্ত এক্স ≥ - 99 ।)x≤99x≤100x≥−99
— TLW

@ টিএলডাব্লু, এটি ধরার জন্য আপনাকে ধন্যবাদ! আমি বাগটি ঠিক করার জন্য আমার উত্তরটি সম্পাদনা করেছি। আমি একটি সামান্য প্রোগ্রামের সাথে এটি সম্পূর্ণরূপে পরীক্ষা করেছি এবং আমার মনে হয় এটি এখনই সঠিক হওয়া উচিত।
— ডিডাব্লিউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.